EAS build config + Collaboration UI + i18n updates
- eas.json for Android APK/AAB + iOS builds - Collaboration page: assign, transfer, claim, subtasks - Task detail: assignee avatars, subtask progress - Updated translations (cs,he,ru,ua) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -245,3 +245,61 @@ export function deleteProject(token: string, id: string) {
|
||||
export function inviteToProject(token: string, id: string, userId: string) {
|
||||
return apiFetch<{ data: Project; status: string }>("/api/v1/projects/" + id + "/invite", { method: "POST", body: { user_id: userId }, token });
|
||||
}
|
||||
|
||||
// Subtasks
|
||||
export interface Subtask {
|
||||
id: string;
|
||||
parent_task_id: string;
|
||||
title: string;
|
||||
description: string;
|
||||
status: "pending" | "in_progress" | "done" | "completed";
|
||||
assigned_to: string | null;
|
||||
assignee_name: string | null;
|
||||
order_index: number;
|
||||
completed_at: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface CollabRequest {
|
||||
id: string;
|
||||
task_id: string;
|
||||
from_user_id: string | null;
|
||||
to_user_id: string;
|
||||
type: "assign" | "transfer" | "collaborate" | "claim";
|
||||
status: "pending" | "accepted" | "rejected";
|
||||
message: string;
|
||||
from_name: string | null;
|
||||
to_name: string | null;
|
||||
task_title?: string;
|
||||
created_at: string;
|
||||
responded_at: string | null;
|
||||
}
|
||||
|
||||
export function getSubtasks(token: string, taskId: string) {
|
||||
return apiFetch<{ data: Subtask[] }>(`/api/v1/tasks/${taskId}/subtasks`, { token });
|
||||
}
|
||||
|
||||
export function createSubtask(token: string, taskId: string, data: { title: string; description?: string; assigned_to?: string }) {
|
||||
return apiFetch<{ data: Subtask }>(`/api/v1/tasks/${taskId}/subtasks`, { method: "POST", body: data, token });
|
||||
}
|
||||
|
||||
export function updateSubtask(token: string, taskId: string, subtaskId: string, data: Partial<Subtask>) {
|
||||
return apiFetch<{ data: Subtask }>(`/api/v1/tasks/${taskId}/subtasks/${subtaskId}`, { method: "PUT", body: data, token });
|
||||
}
|
||||
|
||||
export function deleteSubtask(token: string, taskId: string, subtaskId: string) {
|
||||
return apiFetch<void>(`/api/v1/tasks/${taskId}/subtasks/${subtaskId}`, { method: "DELETE", token });
|
||||
}
|
||||
|
||||
export function getCollaborationHistory(token: string, taskId: string) {
|
||||
return apiFetch<{ data: CollabRequest[] }>(`/api/v1/tasks/${taskId}/collaboration`, { token });
|
||||
}
|
||||
|
||||
export function sendCollabRequest(token: string, taskId: string, data: { to_user_id?: string; from_user_id?: string; type: string; message?: string }) {
|
||||
return apiFetch<{ data?: CollabRequest; status: string }>(`/api/v1/tasks/${taskId}/collaborate`, { method: "POST", body: data, token });
|
||||
}
|
||||
|
||||
export function searchUsers(token: string, query: string) {
|
||||
return apiFetch<{ data: { id: string; name: string; email: string; avatar_url: string | null }[] }>(`/api/v1/auth/users/search?q=${encodeURIComponent(query)}`, { token });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user