feat(integrations): add labels integration and expose shared IntegrationApi

Add a new labels integration (src-tauri/src/integrations/labels.rs) that implements listing,
reading and updating issue labels for multiple providers (GitHub, Gitea, GitLab and Azure
DevOps). The new module provides Tauri commands:
- list_integration_labels
- get_integration_issue_labels
- set_integration_issue_labels

Refactor assignees integration to make core HTTP helpers reusable:
- Rename AssignmentApi -> IntegrationApi and make its fields/methods pub(super).
- Make helper functions api_url, repository_parts and target_url pub(super) so labels.rs
  can construct and call provider endpoints.
- Adjust wording of a few error messages (e.g. "Assignment request..." -> "Integration request...")
  and genericize some page/result error text.

Export the new labels module from integrations.rs and relax test helper visibility
(pub(crate)) so the labels tests can reuse the existing fixture utilities.

This commit introduces provider-specific parsing and payload logic for labels and
reuses the shared IntegrationApi to perform authenticated requests.
This commit is contained in:
2026-09-22 11:28:33 +02:00
parent 8e63f2a939
commit aec0d431f9
9 changed files with 720 additions and 27 deletions
+4
View File
@@ -38,6 +38,7 @@ use integrations::{
create_integration_review_request, list_integration_repository_branches,
add_integration_review_comment, get_integration_review_details, list_integration_repositories, list_integration_review_requests, open_in_browser,
list_integration_assignees, get_integration_assignees, set_integration_assignees,
list_integration_labels, get_integration_issue_labels, set_integration_issue_labels,
create_integration_issue, list_azure_issue_projects, list_azure_issue_types,
run_integration_review_action, get_integration_review_merge_options, list_integration_issues, get_integration_board, list_integration_boards, move_integration_board_card, list_integration_issue_comments, add_integration_issue_comment, close_integration_issue, list_azure_issue_states, set_azure_issue_state,
};
@@ -457,6 +458,9 @@ async fn main() {
move_integration_board_card,
list_integration_issue_comments,
add_integration_issue_comment,
list_integration_labels,
get_integration_issue_labels,
set_integration_issue_labels,
list_integration_assignees,
get_integration_assignees,
set_integration_assignees,