Skip to content

Commit 67f146e

Browse files
committed
Updated:
- remove project collaborator/update project collaboratr methods in store.ts - replace for access methods
1 parent 4f3c23d commit 67f146e

File tree

8 files changed

+82
-46
lines changed

8 files changed

+82
-46
lines changed

web-app/packages/admin-lib/src/modules/admin/views/AccountDetailView.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ const changeStatusDialog = () => {
215215
await adminStore.updateUser({
216216
username: user.value.username,
217217
data: {
218-
active: !user.value.active
218+
active: !user.value.active,
219+
is_admin: user.value.is_admin
219220
}
220221
})
221222
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ export default defineComponent({
187187
await this.acceptProjectAccessRequest({
188188
data,
189189
itemId: request.id,
190-
namespace: this.namespace
190+
workspace: this.namespace
191191
})
192192
await this.updatePaginationOrFetch()
193193
} catch (err) {
@@ -200,7 +200,7 @@ export default defineComponent({
200200
async cancelRequest(request) {
201201
await this.cancelProjectAccessRequest({
202202
itemId: request.id,
203-
namespace: this.namespace
203+
workspace: this.namespace
204204
})
205205
await this.updatePaginationOrFetch()
206206
},

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ export default defineComponent({
158158
await this.acceptProjectAccessRequest({
159159
data,
160160
itemId: request.id,
161-
namespace: this.project.namespace
161+
workspace: this.project.namespace
162162
})
163163
await this.updatePaginationOrFetch()
164164
} catch (err) {
@@ -173,7 +173,7 @@ export default defineComponent({
173173
async cancelRequest(request) {
174174
await this.cancelProjectAccessRequest({
175175
itemId: request.id,
176-
namespace: this.project.namespace
176+
workspace: this.project.namespace
177177
})
178178
await this.updatePaginationOrFetch()
179179
},

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ function removeMember(item: ProjectAccessDetail) {
163163
function roleUpdate(item: ProjectAccessDetail, value: ProjectRoleName) {
164164
projectStore.updateProjectAccess({
165165
projectId: projectStore.project.id,
166-
userId: item.id,
166+
access: item,
167167
data: { role: value }
168168
})
169169
}

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,6 @@ export default defineComponent({
6060
default: false
6161
},
6262
namespace: String,
63-
asAdmin: {
64-
type: Boolean,
65-
default: false
66-
},
6763
public: {
6864
type: Boolean,
6965
default: true
@@ -136,9 +132,6 @@ export default defineComponent({
136132
if (projectGridState.namespace) {
137133
params.only_namespace = projectGridState.namespace
138134
}
139-
if (this.asAdmin) {
140-
params.as_admin = true
141-
}
142135
if (!this.public) {
143136
params.public = false
144137
}

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

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ import {
2525
ProjectAccessDetail,
2626
ProjectAccess,
2727
ProjectVersionFileChange,
28-
UpdateProjectPayload,
29-
UpdatePublicFlagParams
28+
UpdateProjectCollaboratorPayload,
29+
UpdatePublicFlagParams,
30+
ProjectCollaborator,
31+
AddProjectCollaboratorPayload
3032
} from '@/modules/project/types'
3133

3234
export const ProjectApi = {
@@ -174,17 +176,28 @@ export const ProjectApi = {
174176
)
175177
},
176178

177-
async updateProjectAccess(
179+
async addProjectCollaborator(
180+
id: string,
181+
data: AddProjectCollaboratorPayload
182+
): Promise<AxiosResponse<ProjectCollaborator>> {
183+
return ProjectModule.httpService.post(
184+
`/v2/projects/${id}/collaborators`,
185+
data,
186+
{
187+
validateStatus
188+
}
189+
)
190+
},
191+
192+
async updateProjectCollaborator(
178193
id: string,
179194
userId: number,
180-
data: UpdateProjectPayload,
181-
withRetry?: boolean
182-
): Promise<AxiosResponse<ProjectAccess>> {
195+
data: UpdateProjectCollaboratorPayload
196+
): Promise<AxiosResponse<ProjectCollaborator>> {
183197
return ProjectModule.httpService.patch(
184198
`/v2/projects/${id}/collaborators/${userId}`,
185199
data,
186200
{
187-
...(withRetry ? getDefaultRetryOptions() : {}),
188201
validateStatus
189202
}
190203
)
@@ -200,15 +213,13 @@ export const ProjectApi = {
200213
})
201214
},
202215

203-
async removeProjectAccess(
216+
async removeProjectCollaborator(
204217
id: string,
205-
userId: number,
206-
withRetry?: boolean
207-
): Promise<AxiosResponse<ProjectAccess>> {
218+
userId: number
219+
): Promise<AxiosResponse<void>> {
208220
return ProjectModule.httpService.delete(
209221
`/v2/projects/${id}/collaborators/${userId}`,
210222
{
211-
...(withRetry ? getDefaultRetryOptions() : {}),
212223
validateStatus
213224
}
214225
)

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

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import {
4343
ProjectAccessDetail,
4444
ProjectVersionFileChange,
4545
ProjectVersionListItem,
46-
UpdateProjectPayload,
46+
UpdateProjectCollaboratorPayload,
4747
UpdatePublicFlagParams
4848
} from '@/modules/project/types'
4949
import { useUserStore } from '@/modules/user/store'
@@ -759,12 +759,11 @@ export const useProjectStore = defineStore('projectModule', {
759759
this.accessLoading = true
760760
const notificationStore = useNotificationStore()
761761
try {
762-
const response = await ProjectApi.removeProjectAccess(
762+
await ProjectApi.removeProjectCollaborator(
763763
this.project.id,
764-
item.id
764+
Number(item.id)
765765
)
766766
this.access = this.access.filter((access) => access.id !== item.id)
767-
this.project.access = response.data
768767
} catch {
769768
notificationStore.error({
770769
text: `Failed to update project access for user ${item.username}`
@@ -782,23 +781,30 @@ export const useProjectStore = defineStore('projectModule', {
782781
*/
783782
async updateProjectAccess(payload: {
784783
projectId: string
785-
userId: number
786-
data: UpdateProjectPayload
784+
access: ProjectAccessDetail
785+
data: UpdateProjectCollaboratorPayload
787786
}) {
788787
this.accessLoading = true
789788
try {
790-
const response = await ProjectApi.updateProjectAccess(
791-
payload.projectId,
792-
payload.userId,
793-
payload.data
794-
)
789+
if (!payload.access.project_role) {
790+
await ProjectApi.addProjectCollaborator(payload.projectId, {
791+
...payload.data,
792+
username: payload.access.username
793+
})
794+
} else {
795+
await ProjectApi.updateProjectCollaborator(
796+
payload.projectId,
797+
Number(payload.access.id),
798+
payload.data
799+
)
800+
}
795801
this.access = this.access.map((access) => {
796-
if (access.id === payload.userId) {
802+
if (access.id === payload.access.id) {
797803
access.project_permission = payload.data.role
804+
access.project_role = payload.data.role
798805
}
799806
return access
800807
})
801-
this.project.access = response.data
802808
} catch (err) {
803809
this.handleProjectAccessError(err, 'Failed to update project access')
804810
} finally {

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

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
/* eslint-disable camelcase */
66
import {
77
ProjectRoleName,
8-
ProjectPermissionName
8+
ProjectPermissionName,
9+
WorkspaceRoleName
910
} from '@/common/permission_utils'
1011
import {
1112
PaginatedRequestParamsApi,
@@ -184,12 +185,12 @@ export interface GetAccessRequestsPayload extends GetUserAccessRequestsPayload {
184185
export interface AcceptProjectAccessRequestPayload {
185186
itemId: number
186187
data: AcceptProjectAccessRequestData
187-
namespace?: string
188+
workspace?: string
188189
}
189190

190191
export interface CancelProjectAccessRequestPayload {
191192
itemId: number
192-
namespace: string
193+
workspace: string
193194
}
194195

195196
export interface CreateProjectParams {
@@ -292,7 +293,12 @@ export type EnhancedProjectDetail = ProjectDetail & {
292293
path: string
293294
}
294295

295-
export interface UpdateProjectPayload {
296+
export interface AddProjectCollaboratorPayload {
297+
role: ProjectRoleName
298+
username: string
299+
}
300+
301+
export interface UpdateProjectCollaboratorPayload {
296302
role: ProjectRoleName
297303
}
298304

@@ -341,11 +347,30 @@ export interface ProjectVersionFileChange {
341347

342348
export type ErrorCodes = 'UpdateProjectAccessError'
343349

350+
export type ProjectAccessDetailType = 'invitation' | 'member'
351+
344352
export interface ProjectAccessDetail {
353+
id: number | string
354+
type: ProjectAccessDetailType
355+
role: WorkspaceRoleName
356+
name?: string
357+
email: string
358+
username?: string
359+
project_permission?: ProjectRoleName
360+
project_role?: ProjectRoleName | null
361+
invitation?: {
362+
expires_at: string
363+
projects?: {
364+
ids: string[]
365+
permissions: ProjectPermissionName
366+
}
367+
}
368+
}
369+
370+
export interface ProjectCollaborator {
345371
id: number
346-
type: 'member'
372+
usernaname: string
347373
email: string
348-
username: string
349-
project_permission: ProjectRoleName
350-
name: string
374+
workspace_role: WorkspaceRoleName
375+
project_role: ProjectRoleName
351376
}

0 commit comments

Comments
 (0)