Skip to content

Commit

Permalink
refactor(settings): Use Promise for API requests
Browse files Browse the repository at this point in the history
Signed-off-by: provokateurin <[email protected]>
  • Loading branch information
provokateurin committed Sep 10, 2024
1 parent 87ca542 commit edd8e10
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 27 deletions.
10 changes: 0 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
"@nextcloud/webpack-vue-config": "^5.5.1",
"@types/bootstrap": "^5.2.10",
"@types/jest": "^29.5.12",
"@types/jquery": "^3.5.29",
"@types/react": "^17.0.43",
"@types/react-dom": "^17.0.0",
"@types/webpack": "^5.28.5",
Expand Down
31 changes: 15 additions & 16 deletions src/settings/Api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import { generateUrl, generateOcsUrl } from '@nextcloud/router'
import { OCSResult, AxiosOCSResult } from 'NC'
import axios from '@nextcloud/axios'
import Thenable = JQuery.Thenable;

export interface Group {
gid: string;
Expand Down Expand Up @@ -50,25 +49,25 @@ export class Api {
return generateOcsUrl(`apps/groupfolders/${endpoint}`)
}

listFolders(): Thenable<Folder[]> {
async listFolders(): Promise<Folder[]> {
return $.getJSON(this.getUrl('folders'))
.then((data: OCSResult<Folder[]>) => Object.keys(data.ocs.data).map(id => data.ocs.data[id]))
}

// Returns all NC groups
listGroups(): Thenable<Group[]> {
async listGroups(): Promise<Group[]> {
return $.getJSON(this.getUrl('delegation/groups'))
.then((data: OCSResult<Group[]>) => data.ocs.data)
}

// Returns all visible NC circles
listCircles(): Thenable<Circle[]> {
async listCircles(): Promise<Circle[]> {
return $.getJSON(this.getUrl('delegation/circles'))
.then((data: OCSResult<Circle[]>) => data.ocs.data)
}

// Returns all groups that have been granted delegated admin or subadmin rights on groupfolders
listDelegatedGroups(classname: string): Thenable<Group[]> {
async listDelegatedGroups(classname: string): Promise<Group[]> {
return axios.get(this.getUrl('/delegation/authorized-groups'), { params: { classname } })
.then((data: AxiosOCSResult<Group[]>) => {
// The admin group is always there. We don't want the user to remove it
Expand All @@ -78,72 +77,72 @@ export class Api {
}

// Updates the list of groups that have been granted delegated admin or subadmin rights on groupfolders
updateDelegatedGroups(newGroups: Group[], classname: string): Thenable<void> {
async updateDelegatedGroups(newGroups: Group[], classname: string): Promise<void> {
return axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', {
newGroups,
class: classname,
}).then((data) => data.data)
}

createFolder(mountPoint: string): Thenable<Folder> {
async createFolder(mountPoint: string): Promise<Folder> {
return $.post(this.getUrl('folders'), {
mountpoint: mountPoint
}, null, 'json').then((data: OCSResult<Folder>) => data.ocs.data)
}

deleteFolder(id: number): Thenable<void> {
async deleteFolder(id: number): Promise<void> {
return $.ajax({
url: this.getUrl(`folders/${id}`),
type: 'DELETE'
})
}

addGroup(folderId: number, group: string): Thenable<void> {
async addGroup(folderId: number, group: string): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/groups`), {
group
})
}

removeGroup(folderId: number, group: string): Thenable<void> {
async removeGroup(folderId: number, group: string): Promise<void> {
return $.ajax({
url: this.getUrl(`folders/${folderId}/groups/${group}`),
type: 'DELETE'
})
}

setPermissions(folderId: number, group: string, permissions: number): Thenable<void> {
async setPermissions(folderId: number, group: string, permissions: number): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/groups/${group}`), {
permissions
})
}

setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Thenable<void> {
async setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/manageACL`), {
mappingType: type,
mappingId: id,
manageAcl: manageACL ? 1 : 0
})
}

setQuota(folderId: number, quota: number): Thenable<void> {
async setQuota(folderId: number, quota: number): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/quota`), {
quota
})
}

setACL(folderId: number, acl: boolean): Thenable<void> {
async setACL(folderId: number, acl: boolean): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/acl`), {
acl: acl ? 1 : 0
})
}

renameFolder(folderId: number, mountpoint: string): Thenable<void> {
async renameFolder(folderId: number, mountpoint: string): Promise<void> {
return $.post(this.getUrl(`folders/${folderId}/mountpoint`), {
mountpoint
})
}

aclMappingSearch(folderId: number, search: string): Thenable<{groups: ManageRuleProps[], users: ManageRuleProps[]}> {
async aclMappingSearch(folderId: number, search: string): Promise<{groups: ManageRuleProps[], users: ManageRuleProps[]}> {
return $.getJSON(this.getUrl(`folders/${folderId}/search?format=json&search=${search}`))
.then((data: OCSResult<{ groups: OCSGroup[]; users: OCSUser[]; }>) => {
return {
Expand Down

0 comments on commit edd8e10

Please sign in to comment.