Skip to content

Commit ce1d0e9

Browse files
committed
refactor(settings): Remove usage of jQuery
Signed-off-by: provokateurin <[email protected]>
1 parent 91f14e0 commit ce1d0e9

File tree

2 files changed

+43
-94
lines changed

2 files changed

+43
-94
lines changed

src/settings/Api.ts

+43-62
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { generateUrl } from '@nextcloud/router'
2-
import { OCSResult, AxiosOCSResult } from 'NC'
32
import axios from '@nextcloud/axios'
3+
// eslint-disable-next-line n/no-unpublished-import
4+
import type { OCSResponse } from '@nextcloud/typings/lib/ocs'
45

56
export interface Group {
67
gid: string;
@@ -28,7 +29,6 @@ export interface ManageRuleProps {
2829
displayname: string;
2930
}
3031

31-
3232
export interface Folder {
3333
id: number;
3434
mount_point: string;
@@ -46,117 +46,98 @@ export class Api {
4646
}
4747

4848
async listFolders(): Promise<Folder[]> {
49-
return $.getJSON(this.getUrl('folders'))
50-
.then((data: OCSResult<Folder[]>) => Object.keys(data.ocs.data).map(id => data.ocs.data[id]))
49+
const response = await axios.get<OCSResponse<Folder[]>>(this.getUrl('folders'))
50+
return Object.keys(response.data.ocs.data).map(id => response.data.ocs.data[id])
5151
}
5252

5353
// Returns all NC groups
5454
async listGroups(): Promise<Group[]> {
55-
return $.getJSON(this.getUrl('delegation/groups'))
56-
.then((data: OCSResult<Group[]>) => data.ocs.data)
55+
const response = await axios.get<OCSResponse<Group[]>>(this.getUrl('delegation/groups'))
56+
return response.data.ocs.data
5757
}
5858

5959
// Returns all visible NC circles
6060
async listCircles(): Promise<Circle[]> {
61-
return $.getJSON(this.getUrl('delegation/circles'))
62-
.then((data: OCSResult<Circle[]>) => data.ocs.data)
61+
const response = await axios.get<OCSResponse<Circle[]>>(this.getUrl('delegation/circles'))
62+
return response.data.ocs.data
6363
}
6464

6565
// Returns all groups that have been granted delegated admin or subadmin rights on groupfolders
6666
async listDelegatedGroups(classname: string): Promise<Group[]> {
67-
return axios.get(this.getUrl('/delegation/authorized-groups'), { params: { classname } })
68-
.then((data: AxiosOCSResult<Group[]>) => {
69-
// The admin group is always there. We don't want the user to remove it
70-
const groups = data.data.ocs.data.filter(g => g.gid !== 'admin')
71-
return groups
72-
})
67+
const response = await axios.get<OCSResponse<Group[]>>(this.getUrl('/delegation/authorized-groups'), { params: { classname } })
68+
return response.data.ocs.data.filter(g => g.gid !== 'admin')
7369
}
7470

7571
// Updates the list of groups that have been granted delegated admin or subadmin rights on groupfolders
7672
async updateDelegatedGroups(newGroups: Group[], classname: string): Promise<void> {
77-
return axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', {
73+
await axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', {
7874
newGroups,
7975
class: classname,
80-
}).then((data) => data.data)
76+
})
8177
}
8278

8379
async createFolder(mountPoint: string): Promise<number> {
84-
return $.post(this.getUrl('folders'), {
85-
mountpoint: mountPoint
86-
}, null, 'json').then((data: OCSResult<{ id: number; }>) => data.ocs.data.id)
80+
const response = await axios.post<OCSResponse<number>>(this.getUrl('folders'), { mountpoint: mountPoint })
81+
return response.data.ocs.data
8782
}
8883

8984
async deleteFolder(id: number): Promise<void> {
90-
return $.ajax({
91-
url: this.getUrl(`folders/${id}`),
92-
type: 'DELETE'
93-
})
85+
await axios.delete(this.getUrl(`folders/${id}`))
9486
}
9587

9688
async addGroup(folderId: number, group: string): Promise<void> {
97-
return $.post(this.getUrl(`folders/${folderId}/groups`), {
98-
group
99-
})
89+
await axios.post(this.getUrl(`folders/${folderId}/groups`), { group })
10090
}
10191

10292
async removeGroup(folderId: number, group: string): Promise<void> {
103-
return $.ajax({
104-
url: this.getUrl(`folders/${folderId}/groups/${group}`),
105-
type: 'DELETE'
106-
})
93+
await axios.delete(this.getUrl(`folders/${folderId}/groups/${group}`))
10794
}
10895

10996
async setPermissions(folderId: number, group: string, permissions: number): Promise<void> {
110-
return $.post(this.getUrl(`folders/${folderId}/groups/${group}`), {
111-
permissions
112-
})
97+
await axios.post(this.getUrl(`folders/${folderId}/groups/${group}`), { permissions })
11398
}
11499

115100
async setManageACL(folderId: number, type: string, id: string, manageACL: boolean): Promise<void> {
116-
return $.post(this.getUrl(`folders/${folderId}/manageACL`), {
101+
await axios.post(this.getUrl(`folders/${folderId}/manageACL`), {
117102
mappingType: type,
118103
mappingId: id,
119-
manageAcl: manageACL ? 1 : 0
104+
manageAcl: manageACL ? 1 : 0,
120105
})
121106
}
122107

123108
async setQuota(folderId: number, quota: number): Promise<void> {
124-
return $.post(this.getUrl(`folders/${folderId}/quota`), {
125-
quota
126-
})
109+
await axios.post(this.getUrl(`folders/${folderId}/quota`), { quota })
127110
}
128111

129112
async setACL(folderId: number, acl: boolean): Promise<void> {
130-
return $.post(this.getUrl(`folders/${folderId}/acl`), {
131-
acl: acl ? 1 : 0
132-
})
113+
await axios.post(this.getUrl(`folders/${folderId}/acl`), { acl: acl ? 1 : 0 })
133114
}
134115

135116
async renameFolder(folderId: number, mountpoint: string): Promise<void> {
136-
return $.post(this.getUrl(`folders/${folderId}/mountpoint`), {
137-
mountpoint
138-
})
117+
await axios.post(this.getUrl(`folders/${folderId}/mountpoint`), { mountpoint })
139118
}
140119

141-
async aclMappingSearch(folderId: number, search: string): Promise<{groups: ManageRuleProps[], users: ManageRuleProps[]}> {
142-
return $.getJSON(this.getUrl(`folders/${folderId}/search?format=json&search=${search}`))
143-
.then((data: OCSResult<{ groups: OCSGroup[]; users: OCSUser[]; }>) => {
120+
async aclMappingSearch(folderId: number, search: string): Promise<{
121+
groups: ManageRuleProps[],
122+
users: ManageRuleProps[]
123+
}> {
124+
const response = await axios.get<OCSResponse<{groups: OCSGroup[], users: OCSUser[]}>>(this.getUrl(`folders/${folderId}/search`), { params: { search } })
125+
return {
126+
groups: Object.values(response.data.ocs.data.groups).map((item) => {
144127
return {
145-
groups: Object.values(data.ocs.data.groups).map((item) => {
146-
return {
147-
type: 'group',
148-
id: item.gid,
149-
displayname: item.displayname
150-
}
151-
}),
152-
users: Object.values(data.ocs.data.users).map((item) => {
153-
return {
154-
type: 'user',
155-
id: item.uid,
156-
displayname: item.displayname
157-
}
158-
})
128+
type: 'group',
129+
id: item.gid,
130+
displayname: item.displayname,
159131
}
160-
})
132+
}),
133+
users: Object.values(response.data.ocs.data.users).map((item) => {
134+
return {
135+
type: 'user',
136+
id: item.uid,
137+
displayname: item.displayname,
138+
}
139+
}),
140+
}
161141
}
142+
162143
}

src/settings/Nextcloud.d.ts

-32
Original file line numberDiff line numberDiff line change
@@ -72,35 +72,3 @@ declare namespace OC {
7272
}
7373

7474
declare function t(app: string, string: string, vars?: { [key: string]: string }, count?: number, options?: EscapeOptions): string;
75-
76-
declare module 'NC' {
77-
export interface OCSResult<T> {
78-
ocs: {
79-
data: T;
80-
meta: {
81-
status: 'ok' | 'failure';
82-
message: string;
83-
statuscode: number;
84-
totalitems: number;
85-
itemsperpage: number;
86-
}
87-
}
88-
}
89-
}
90-
91-
declare module 'NC' {
92-
export interface AxiosOCSResult<T> {
93-
data: {
94-
ocs: {
95-
data: T;
96-
meta: {
97-
status: 'ok' | 'failure';
98-
message: string;
99-
statuscode: number;
100-
totalitems: number;
101-
itemsperpage: number;
102-
}
103-
}
104-
}
105-
}
106-
}

0 commit comments

Comments
 (0)