Skip to content

Commit c2aedea

Browse files
committed
Update project access api to v2 endpoint
1 parent 8a518af commit c2aedea

File tree

5 files changed

+56
-25
lines changed

5 files changed

+56
-25
lines changed

web-app/packages/lib/src/modules/project/components/ProjectMembersTable.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ function removeMember(item: ProjectAccessDetail) {
163163
function roleUpdate(item: ProjectAccessDetail, value: ProjectRoleName) {
164164
projectStore.updateProjectAccess({
165165
projectId: projectStore.project.id,
166-
data: { role: value, user_id: item.id }
166+
userId: item.id,
167+
data: { role: value }
167168
})
168169
}
169170

web-app/packages/lib/src/modules/project/projectApi.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ import {
2121
PushProjectChangesParams,
2222
PushProjectChangesResponse,
2323
SaveProjectSettings,
24-
UpdateProjectAccessParams,
2524
ProjectVersion,
2625
ProjectAccessDetail,
2726
ProjectAccess,
28-
ProjectVersionFileChange, CreateProjectAccessParams
27+
ProjectVersionFileChange,
28+
UpdateProjectPayload,
29+
UpdatePublicFlagParams
2930
} from '@/modules/project/types'
3031

3132
export const ProjectApi = {
@@ -176,7 +177,7 @@ export const ProjectApi = {
176177
async updateProjectAccess(
177178
id: string,
178179
userId: number,
179-
data: UpdateProjectAccessParams,
180+
data: UpdateProjectPayload,
180181
withRetry?: boolean
181182
): Promise<AxiosResponse<ProjectAccess>> {
182183
return ProjectModule.httpService.patch(
@@ -188,15 +189,23 @@ export const ProjectApi = {
188189
)
189190
},
190191

191-
async createProjectAccess(
192+
async updatePublicFlag(
193+
id: string,
194+
data: UpdatePublicFlagParams,
195+
withRetry?: boolean
196+
): Promise<AxiosResponse<ProjectAccess>> {
197+
return ProjectModule.httpService.patch(`/app/project/${id}/access`, data, {
198+
...(withRetry ? getDefaultRetryOptions() : {})
199+
})
200+
},
201+
202+
async removeProjectAccess(
192203
id: string,
193204
userId: number,
194-
data: CreateProjectAccessParams,
195205
withRetry?: boolean
196206
): Promise<AxiosResponse<ProjectAccess>> {
197-
return ProjectModule.httpService.post(
207+
return ProjectModule.httpService.delete(
198208
`/v2/projects/${id}/collaborators/${userId}`,
199-
data,
200209
{
201210
...(withRetry ? getDefaultRetryOptions() : {})
202211
}

web-app/packages/lib/src/modules/project/store.ts

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ import {
4343
ProjectAccessDetail,
4444
UpdateProjectAccessParams,
4545
ProjectVersionFileChange,
46-
ProjectVersionListItem
46+
ProjectVersionListItem,
47+
UpdateProjectPayload,
48+
UpdatePublicFlagParams
4749
} from '@/modules/project/types'
4850
import { useUserStore } from '@/modules/user/store'
4951

@@ -758,10 +760,10 @@ export const useProjectStore = defineStore('projectModule', {
758760
const notificationStore = useNotificationStore()
759761
this.accessLoading = true
760762
try {
761-
const response = await ProjectApi.updateProjectAccess(this.project.id, {
762-
user_id: item.id,
763-
role: 'none'
764-
})
763+
const response = await ProjectApi.removeProjectAccess(
764+
this.project.id,
765+
item.id
766+
)
765767
this.access = this.access.filter((access) => access.id !== item.id)
766768
this.project.access = response.data
767769
} catch {
@@ -774,24 +776,26 @@ export const useProjectStore = defineStore('projectModule', {
774776
},
775777

776778
/**
777-
* Updates the access for a user on the given project. `project.access` contains also public attribute. This attribute can be changed also.
779+
* Updates the access for a user on the given project.
778780
*
779781
* @param payload - Object containing the project ID and access update details.
780782
* @returns Promise resolving when the API call completes.
781783
*/
782784
async updateProjectAccess(payload: {
783785
projectId: string
784-
data: UpdateProjectAccessParams
786+
userId: number
787+
data: UpdateProjectPayload
785788
}) {
786789
const notificationStore = useNotificationStore()
787790
this.accessLoading = true
788791
try {
789792
const response = await ProjectApi.updateProjectAccess(
790793
payload.projectId,
794+
payload.userId,
791795
payload.data
792796
)
793797
this.access = this.access.map((access) => {
794-
if (access.id === payload.data.user_id) {
798+
if (access.id === payload.userId) {
795799
access.project_permission = payload.data.role
796800
}
797801
return access
@@ -806,6 +810,27 @@ export const useProjectStore = defineStore('projectModule', {
806810
}
807811
},
808812

813+
async updatePublicFlag(payload: {
814+
projectId: string
815+
data: UpdatePublicFlagParams
816+
}) {
817+
const notificationStore = useNotificationStore()
818+
this.accessLoading = true
819+
try {
820+
const response = await ProjectApi.updatePublicFlag(
821+
payload.projectId,
822+
payload.data
823+
)
824+
this.project.access = response.data
825+
} catch {
826+
notificationStore.error({
827+
text: `Failed to update public flag`
828+
})
829+
} finally {
830+
this.accessLoading = false
831+
}
832+
},
833+
809834
async getVersionChangeset(payload: {
810835
workspace: string
811836
projectName: string

web-app/packages/lib/src/modules/project/types.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -292,15 +292,11 @@ export type EnhancedProjectDetail = ProjectDetail & {
292292
path: string
293293
}
294294

295-
export interface UpdateProjectAccessParams {
296-
user_id?: number
297-
role?: ProjectRoleName
298-
public?: boolean
295+
export interface UpdateProjectPayload {
296+
role: ProjectRoleName
299297
}
300298

301-
export interface CreateProjectAccessParams {
302-
user_id?: number
303-
role?: ProjectRoleName
299+
export interface UpdatePublicFlagParams {
304300
public?: boolean
305301
}
306302

web-app/packages/lib/src/modules/project/views/ProjectSettingsViewTemplate.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ export default defineComponent({
9595
}
9696
},
9797
methods: {
98-
...mapActions(useProjectStore, ['deleteProject', 'updateProjectAccess']),
98+
...mapActions(useProjectStore, ['deleteProject', 'updatePublicFlag']),
9999
...mapActions(useDialogStore, { showDialog: 'show' }),
100100
togglePublicPrivate() {
101-
this.updateProjectAccess({
101+
this.updatePublicFlag({
102102
projectId: this.project.id,
103103
data: {
104104
public: !this.project.access.public

0 commit comments

Comments
 (0)