diff --git a/apps/meteor/app/api/server/lib/webdav.ts b/apps/meteor/app/api/server/lib/webdav.ts index 08efc12d9f9b..7f3701a7d695 100644 --- a/apps/meteor/app/api/server/lib/webdav.ts +++ b/apps/meteor/app/api/server/lib/webdav.ts @@ -2,15 +2,13 @@ import type { IWebdavAccount } from '@rocket.chat/core-typings'; import { WebdavAccounts } from '../../../models/server/raw'; -export async function findWebdavAccountsByUserId({ uid }: { uid: string }): Promise<{ accounts: IWebdavAccount[] }> { - return { - accounts: await WebdavAccounts.findWithUserId(uid, { - projection: { - _id: 1, - username: 1, - serverURL: 1, - name: 1, - }, - }).toArray(), - }; +export async function findWebdavAccountsByUserId({ uid }: { uid: string }): Promise { + return WebdavAccounts.findWithUserId(uid, { + projection: { + _id: 1, + username: 1, + serverURL: 1, + name: 1, + }, + }).toArray(); } diff --git a/apps/meteor/app/api/server/v1/webdav.js b/apps/meteor/app/api/server/v1/webdav.ts similarity index 59% rename from apps/meteor/app/api/server/v1/webdav.js rename to apps/meteor/app/api/server/v1/webdav.ts index e242c40f379b..4b2119dfcfec 100644 --- a/apps/meteor/app/api/server/v1/webdav.js +++ b/apps/meteor/app/api/server/v1/webdav.ts @@ -5,8 +5,10 @@ API.v1.addRoute( 'webdav.getMyAccounts', { authRequired: true }, { - get() { - return API.v1.success(Promise.await(findWebdavAccountsByUserId({ uid: this.userId }))); + async get() { + return API.v1.success({ + accounts: await findWebdavAccountsByUserId({ uid: this.userId }), + }); }, }, ); diff --git a/packages/core-typings/src/IWebdavAccount.ts b/packages/core-typings/src/IWebdavAccount.ts index 2ed42f07d19e..f1a834be7dc5 100644 --- a/packages/core-typings/src/IWebdavAccount.ts +++ b/packages/core-typings/src/IWebdavAccount.ts @@ -8,4 +8,4 @@ export interface IWebdavAccount extends IRocketChatRecord { name: string; } -export type IWebdavAccountPayload = Omit; +export type IWebdavAccountPayload = Pick; diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index 1e9a65a2780a..d123606ed2cb 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -30,7 +30,9 @@ import type { TeamsEndpoints } from './v1/teams'; import type { UsersEndpoints } from './v1/users'; import type { VideoConferenceEndpoints } from './v1/videoConference'; import type { VoipEndpoints } from './v1/voip'; +import type { WebdavEndpoints } from './v1/webdav'; import type { OAuthAppsEndpoint } from './v1/oauthapps'; + // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/interface-name-prefix export interface Endpoints extends BannersEndpoints, @@ -61,6 +63,7 @@ export interface Endpoints InvitesEndpoints, E2eEndpoints, CustomSoundEndpoint, + WebdavEndpoints, OAuthAppsEndpoint {} type OperationsByPathPattern = TPathPattern extends any diff --git a/packages/rest-typings/src/v1/webdav.ts b/packages/rest-typings/src/v1/webdav.ts new file mode 100644 index 000000000000..51a810b9ce15 --- /dev/null +++ b/packages/rest-typings/src/v1/webdav.ts @@ -0,0 +1,9 @@ +import type { IWebdavAccount } from '@rocket.chat/core-typings'; + +export type WebdavEndpoints = { + 'webdav.getMyAccounts': { + GET: () => { + accounts: Pick[]; + }; + }; +};