From edd8e10ae0a342d61ccb472ea0c2004e43b16f53 Mon Sep 17 00:00:00 2001 From: provokateurin Date: Tue, 10 Sep 2024 16:57:58 +0200 Subject: [PATCH] refactor(settings): Use Promise for API requests Signed-off-by: provokateurin --- package-lock.json | 10 ---------- package.json | 1 - src/settings/Api.ts | 31 +++++++++++++++---------------- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ad6bfb1d..d46f431a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,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", @@ -5016,15 +5015,6 @@ "pretty-format": "^29.0.0" } }, - "node_modules/@types/jquery": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.29.tgz", - "integrity": "sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==", - "dev": true, - "dependencies": { - "@types/sizzle": "*" - } - }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", diff --git a/package.json b/package.json index b9774ca08..18d4b788b 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/settings/Api.ts b/src/settings/Api.ts index 56315df75..796fd4f8d 100644 --- a/src/settings/Api.ts +++ b/src/settings/Api.ts @@ -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; @@ -50,25 +49,25 @@ export class Api { return generateOcsUrl(`apps/groupfolders/${endpoint}`) } - listFolders(): Thenable { + async listFolders(): Promise { return $.getJSON(this.getUrl('folders')) .then((data: OCSResult) => Object.keys(data.ocs.data).map(id => data.ocs.data[id])) } // Returns all NC groups - listGroups(): Thenable { + async listGroups(): Promise { return $.getJSON(this.getUrl('delegation/groups')) .then((data: OCSResult) => data.ocs.data) } // Returns all visible NC circles - listCircles(): Thenable { + async listCircles(): Promise { return $.getJSON(this.getUrl('delegation/circles')) .then((data: OCSResult) => data.ocs.data) } // Returns all groups that have been granted delegated admin or subadmin rights on groupfolders - listDelegatedGroups(classname: string): Thenable { + async listDelegatedGroups(classname: string): Promise { return axios.get(this.getUrl('/delegation/authorized-groups'), { params: { classname } }) .then((data: AxiosOCSResult) => { // The admin group is always there. We don't want the user to remove it @@ -78,46 +77,46 @@ 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 { + async updateDelegatedGroups(newGroups: Group[], classname: string): Promise { return axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', { newGroups, class: classname, }).then((data) => data.data) } - createFolder(mountPoint: string): Thenable { + async createFolder(mountPoint: string): Promise { return $.post(this.getUrl('folders'), { mountpoint: mountPoint }, null, 'json').then((data: OCSResult) => data.ocs.data) } - deleteFolder(id: number): Thenable { + async deleteFolder(id: number): Promise { return $.ajax({ url: this.getUrl(`folders/${id}`), type: 'DELETE' }) } - addGroup(folderId: number, group: string): Thenable { + async addGroup(folderId: number, group: string): Promise { return $.post(this.getUrl(`folders/${folderId}/groups`), { group }) } - removeGroup(folderId: number, group: string): Thenable { + async removeGroup(folderId: number, group: string): Promise { return $.ajax({ url: this.getUrl(`folders/${folderId}/groups/${group}`), type: 'DELETE' }) } - setPermissions(folderId: number, group: string, permissions: number): Thenable { + async setPermissions(folderId: number, group: string, permissions: number): Promise { return $.post(this.getUrl(`folders/${folderId}/groups/${group}`), { permissions }) } - setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Thenable { + async setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Promise { return $.post(this.getUrl(`folders/${folderId}/manageACL`), { mappingType: type, mappingId: id, @@ -125,25 +124,25 @@ export class Api { }) } - setQuota(folderId: number, quota: number): Thenable { + async setQuota(folderId: number, quota: number): Promise { return $.post(this.getUrl(`folders/${folderId}/quota`), { quota }) } - setACL(folderId: number, acl: boolean): Thenable { + async setACL(folderId: number, acl: boolean): Promise { return $.post(this.getUrl(`folders/${folderId}/acl`), { acl: acl ? 1 : 0 }) } - renameFolder(folderId: number, mountpoint: string): Thenable { + async renameFolder(folderId: number, mountpoint: string): Promise { 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 {