From 55893d747c544da500b0876c1d8818779644a56e Mon Sep 17 00:00:00 2001 From: provokateurin Date: Tue, 10 Sep 2024 17:53:48 +0200 Subject: [PATCH] refactor(settings): Remove usage of jQuery Signed-off-by: provokateurin --- src/settings/Api.ts | 105 +++++++++++++++--------------------- src/settings/Nextcloud.d.ts | 32 ----------- 2 files changed, 43 insertions(+), 94 deletions(-) diff --git a/src/settings/Api.ts b/src/settings/Api.ts index 796fd4f8d..b53719626 100644 --- a/src/settings/Api.ts +++ b/src/settings/Api.ts @@ -3,8 +3,9 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import { generateUrl, generateOcsUrl } from '@nextcloud/router' -import { OCSResult, AxiosOCSResult } from 'NC' import axios from '@nextcloud/axios' +// eslint-disable-next-line n/no-unpublished-import +import type { OCSResponse } from '@nextcloud/typings/lib/ocs' export interface Group { gid: string; @@ -32,7 +33,6 @@ export interface ManageRuleProps { displayname: string; } - export interface Folder { id: number; mount_point: string; @@ -50,117 +50,98 @@ export class Api { } async listFolders(): Promise { - return $.getJSON(this.getUrl('folders')) - .then((data: OCSResult) => Object.keys(data.ocs.data).map(id => data.ocs.data[id])) + const response = await axios.get>(this.getUrl('folders')) + return Object.keys(response.data.ocs.data).map(id => response.data.ocs.data[id]) } // Returns all NC groups async listGroups(): Promise { - return $.getJSON(this.getUrl('delegation/groups')) - .then((data: OCSResult) => data.ocs.data) + const response = await axios.get>(this.getUrl('delegation/groups')) + return response.data.ocs.data } // Returns all visible NC circles async listCircles(): Promise { - return $.getJSON(this.getUrl('delegation/circles')) - .then((data: OCSResult) => data.ocs.data) + const response = await axios.get>(this.getUrl('delegation/circles')) + return response.data.ocs.data } // Returns all groups that have been granted delegated admin or subadmin rights on groupfolders 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 - const groups = data.data.ocs.data.filter(g => g.gid !== 'admin') - return groups - }) + const response = await axios.get>(this.getUrl('/delegation/authorized-groups'), { params: { classname } }) + return response.data.ocs.data.filter(g => g.gid !== 'admin') } // Updates the list of groups that have been granted delegated admin or subadmin rights on groupfolders async updateDelegatedGroups(newGroups: Group[], classname: string): Promise { - return axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', { + await axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', { newGroups, class: classname, - }).then((data) => data.data) + }) } async createFolder(mountPoint: string): Promise { - return $.post(this.getUrl('folders'), { - mountpoint: mountPoint - }, null, 'json').then((data: OCSResult) => data.ocs.data) + const response = await axios.post>(this.getUrl('folders'), { mountpoint: mountPoint }) + return response.data.ocs.data } async deleteFolder(id: number): Promise { - return $.ajax({ - url: this.getUrl(`folders/${id}`), - type: 'DELETE' - }) + await axios.delete(this.getUrl(`folders/${id}`)) } async addGroup(folderId: number, group: string): Promise { - return $.post(this.getUrl(`folders/${folderId}/groups`), { - group - }) + await axios.post(this.getUrl(`folders/${folderId}/groups`), { group }) } async removeGroup(folderId: number, group: string): Promise { - return $.ajax({ - url: this.getUrl(`folders/${folderId}/groups/${group}`), - type: 'DELETE' - }) + await axios.delete(this.getUrl(`folders/${folderId}/groups/${group}`)) } async setPermissions(folderId: number, group: string, permissions: number): Promise { - return $.post(this.getUrl(`folders/${folderId}/groups/${group}`), { - permissions - }) + await axios.post(this.getUrl(`folders/${folderId}/groups/${group}`), { permissions }) } async setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Promise { - return $.post(this.getUrl(`folders/${folderId}/manageACL`), { + await axios.post(this.getUrl(`folders/${folderId}/manageACL`), { mappingType: type, mappingId: id, - manageAcl: manageACL ? 1 : 0 + manageAcl: manageACL ? 1 : 0, }) } async setQuota(folderId: number, quota: number): Promise { - return $.post(this.getUrl(`folders/${folderId}/quota`), { - quota - }) + await axios.post(this.getUrl(`folders/${folderId}/quota`), { quota }) } async setACL(folderId: number, acl: boolean): Promise { - return $.post(this.getUrl(`folders/${folderId}/acl`), { - acl: acl ? 1 : 0 - }) + await axios.post(this.getUrl(`folders/${folderId}/acl`), { acl: acl ? 1 : 0 }) } async renameFolder(folderId: number, mountpoint: string): Promise { - return $.post(this.getUrl(`folders/${folderId}/mountpoint`), { - mountpoint - }) + await axios.post(this.getUrl(`folders/${folderId}/mountpoint`), { mountpoint }) } - 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[]; }>) => { + async aclMappingSearch(folderId: number, search: string): Promise<{ + groups: ManageRuleProps[], + users: ManageRuleProps[] + }> { + const response = await axios.get>(this.getUrl(`folders/${folderId}/search`), { params: { search } }) + return { + groups: Object.values(response.data.ocs.data.groups).map((item) => { return { - groups: Object.values(data.ocs.data.groups).map((item) => { - return { - type: 'group', - id: item.gid, - displayname: item.displayname - } - }), - users: Object.values(data.ocs.data.users).map((item) => { - return { - type: 'user', - id: item.uid, - displayname: item.displayname - } - }) + type: 'group', + id: item.gid, + displayname: item.displayname, } - }) + }), + users: Object.values(response.data.ocs.data.users).map((item) => { + return { + type: 'user', + id: item.uid, + displayname: item.displayname, + } + }), + } } + } diff --git a/src/settings/Nextcloud.d.ts b/src/settings/Nextcloud.d.ts index 18e4210a3..9b86780cd 100644 --- a/src/settings/Nextcloud.d.ts +++ b/src/settings/Nextcloud.d.ts @@ -74,35 +74,3 @@ declare namespace OC { } declare function t(app: string, string: string, vars?: { [key: string]: string }, count?: number, options?: EscapeOptions): string; - -declare module 'NC' { - export interface OCSResult { - ocs: { - data: T; - meta: { - status: 'ok' | 'failure'; - message: string; - statuscode: number; - totalitems: number; - itemsperpage: number; - } - } - } -} - -declare module 'NC' { - export interface AxiosOCSResult { - data: { - ocs: { - data: T; - meta: { - status: 'ok' | 'failure'; - message: string; - statuscode: number; - totalitems: number; - itemsperpage: number; - } - } - } - } -}