feat(workspace): add WorkspaceEdit and WorkspaceCreate pages

This commit is contained in:
2026-03-13 01:56:56 +08:00
parent 228de3c180
commit b291689b1c
11 changed files with 1287 additions and 54 deletions

View File

@@ -64,3 +64,49 @@ export const deleteWorkspace = async (id: string): Promise<void> => {
throw new Error('Failed to delete workspace');
}
};
export const fetchWorkspaceMemberships = async (workspaceId: string) => {
const response = await authFetch(`/api/workspace-memberships/?workspace=${workspaceId}`);
if (!response.ok) throw new Error("Failed to fetch workspace memberships");
const data = await response.json();
return data.results || data;
};
export const addWorkspaceMembership = async (data: { workspace: string; user: string; role: string }) => {
const response = await authFetch(`/api/workspace-memberships/`, {
method: 'POST',
body: JSON.stringify(data),
});
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.error || JSON.stringify(errorData) || 'Failed to add workspace membership');
}
return await response.json();
};
export const removeWorkspaceMembership = async (membershipId: string): Promise<void> => {
const response = await authFetch(`/api/workspace-memberships/${membershipId}/`, {
method: 'DELETE',
});
if (!response.ok) {
throw new Error('Failed to remove workspace membership');
}
};
export const updateWorkspaceMembership = async (membershipId: string | number, data: { role: string }) => {
const response = await authFetch(`/api/workspace-memberships/${membershipId}/`, {
method: 'PATCH',
body: JSON.stringify(data),
});
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.error || JSON.stringify(errorData) || 'Failed to update membership');
}
return await response.json();
};