From 9a30dec216a1d7f8f24e00b705b2bdbd12254c6a Mon Sep 17 00:00:00 2001 From: Ramon Candel Segura Date: Mon, 10 Jul 2023 16:24:41 +0200 Subject: [PATCH 01/11] Add functions to get shared folders to you and by you of new advanced sharing --- package.json | 2 +- src/drive/share/index.ts | 33 +++++++++++++++++++++++++++++++++ src/drive/share/types.ts | 6 ++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b3540671..3d15f8db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@internxt/sdk", - "version": "1.4.35", + "version": "1.4.36", "description": "An sdk for interacting with Internxt's services", "repository": { "type": "git", diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 4a0f03c4..7ea0d349 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -8,6 +8,7 @@ import { GenerateShareLinkPayload, GetSharedDirectoryPayload, GetShareLinkFolderSizePayload, + ListPrivateSharedFoldersResponse, ListShareLinksResponse, ShareLink, UpdateShareLinkPayload, @@ -141,6 +142,38 @@ export class Share { return this.client.get(`/storage/share/${payload.itemId}/folder/${payload.folderId}/size`, this.basicHeaders()); } + /** + * Fetches all folders shared by a user + */ + public getSentSharedFolders( + page = 0, + perPage = 50, + orderBy?: 'views:ASC' | 'views:DESC' | 'createdAt:ASC' | 'createdAt:DESC', + ): Promise { + const orderByQueryParam = orderBy ? `&orderBy=${orderBy}` : ''; + + return this.client.get( + `private-sharing/sent/folders?page=${page}&perPage=${perPage}${orderByQueryParam}`, + this.headers(), + ); + } + + /** + * Fetches folders shared with a user + */ + public getReceivedSharedFolders( + page = 0, + perPage = 50, + orderBy?: 'views:ASC' | 'views:DESC' | 'createdAt:ASC' | 'createdAt:DESC', + ): Promise { + const orderByQueryParam = orderBy ? `&orderBy=${orderBy}` : ''; + + return this.client.get( + `private-sharing/receive/folders?page=${page}&perPage=${perPage}${orderByQueryParam}`, + this.headers(), + ); + } + /** * Returns the needed headers for the module requests * @private diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index 5d57a062..7c220167 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -1,3 +1,5 @@ +import { FolderChild } from '../storage/types'; + export interface GenerateShareLinkPayload { itemId: string; type: string; @@ -82,3 +84,7 @@ export type ListShareLinksResponse = { items: ListShareLinksItem[]; pagination: { page: number; perPage: number; countAll: number; orderBy?: string }; }; + +export type ListPrivateSharedFoldersResponse = { + folders: FolderChild[]; +}; From 6cdfa4a01904917d6309113ad83ebbea3003061a Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Thu, 13 Jul 2023 12:50:45 +0200 Subject: [PATCH 02/11] Added call to grant privileges to shared item - wip --- src/drive/share/index.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 7ea0d349..2e3e962c 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -174,6 +174,25 @@ export class Share { ); } + /** + * Grant privileges of folder to a user + */ + public grantSharePrivilegesToUser( + userUuid: string, + privateFolderId: string, + roleId: string, + ): Promise { + return this.client.post( + 'private-sharing/grant-privileges', + { + userUuid, + privateFolderId, + roleId, + }, + this.headers(), + ); + } + /** * Returns the needed headers for the module requests * @private From b56456ccfa15783bf363bcb42452623dd9fff62c Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Fri, 21 Jul 2023 16:49:32 +0200 Subject: [PATCH 03/11] Added fetch for all shared folders --- package.json | 2 +- src/drive/share/index.ts | 17 +++++++++++++++++ src/drive/share/types.ts | 5 +++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 059dbf2f..a6f1e412 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@internxt/sdk", - "version": "1.4.37", + "version": "1.4.38", "description": "An sdk for interacting with Internxt's services", "repository": { "type": "git", diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 84defcdc..1fb67abf 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -8,6 +8,7 @@ import { GenerateShareLinkPayload, GetSharedDirectoryPayload, GetShareLinkFolderSizePayload, + ListAllSharedFoldersResponse, ListPrivateSharedFoldersResponse, ListShareLinksResponse, ShareDomainsResponse, @@ -178,6 +179,22 @@ export class Share { ); } + /** + * Fetches all shared folders + */ + public getAllSharedFolders( + page = 0, + perPage = 50, + orderBy?: 'views:ASC' | 'views:DESC' | 'createdAt:ASC' | 'createdAt:DESC', + ): Promise { + const orderByQueryParam = orderBy ? `&orderBy=${orderBy}` : ''; + + return this.client.get( + `private-sharing/folders?page=${page}&perPage=${perPage}${orderByQueryParam}`, + this.headers(), + ); + } + /** * Grant privileges of folder to a user */ diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index caa98d22..539f43d2 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -92,3 +92,8 @@ export type ListShareLinksResponse = { export type ListPrivateSharedFoldersResponse = { folders: FolderChild[]; }; + +export type ListAllSharedFoldersResponse = { + sharedByMe: FolderChild[]; + sharedWithMe: FolderChild[]; +}; From 1302468649b129a36d8031fac7fbef881ee711ac Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Tue, 25 Jul 2023 15:52:04 +0200 Subject: [PATCH 04/11] Added call to get public key of specific user --- src/drive/users/index.ts | 15 ++++++++++++++- src/drive/users/types.ts | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/drive/users/index.ts b/src/drive/users/index.ts index f53efab7..ec8a7eea 100644 --- a/src/drive/users/index.ts +++ b/src/drive/users/index.ts @@ -1,6 +1,12 @@ import { ApiSecurity, ApiUrl, AppDetails } from '../../shared'; import { headersWithToken } from '../../shared/headers'; -import { ChangePasswordPayload, FriendInvite, InitializeUserResponse, UpdateProfilePayload } from './types'; +import { + ChangePasswordPayload, + FriendInvite, + InitializeUserResponse, + UpdateProfilePayload, + UserPublicKeyResponse, +} from './types'; import { UserSettings } from '../../shared/types/userSettings'; import { HttpClient } from '../../shared/http/client'; @@ -131,6 +137,13 @@ export class Users { return this.client.post('/user/verifyEmail', payload, this.headers()); } + /** + * Get public key of given email + */ + public getPublicKeyByEmail({ email }: { email: string }): Promise { + return this.client.get(`/users/public-key/${email}`, this.headers()); + } + private headers() { return headersWithToken(this.appDetails.clientName, this.appDetails.clientVersion, this.apiSecurity.token); } diff --git a/src/drive/users/types.ts b/src/drive/users/types.ts index 63829789..ae152db3 100644 --- a/src/drive/users/types.ts +++ b/src/drive/users/types.ts @@ -18,3 +18,5 @@ export interface ChangePasswordPayload { export type UpdateProfilePayload = Partial>; export type FriendInvite = { guestEmail: string; host: number; accepted: boolean; id: number }; + +export type UserPublicKeyResponse = { publicKey: string }; \ No newline at end of file From 0f859b3374ad4358761eab12ab0155f491dd15c1 Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Thu, 27 Jul 2023 16:20:51 +0200 Subject: [PATCH 05/11] Added share private folder and get roles --- src/drive/share/index.ts | 30 +++++++++++++++++++ src/drive/share/types.ts | 11 +++++++ src/drive/storage/types.ts | 1 + .../mothers/folderContentResponse.mother.ts | 1 + 4 files changed, 43 insertions(+) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 1fb67abf..0d2197c9 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -11,8 +11,10 @@ import { ListAllSharedFoldersResponse, ListPrivateSharedFoldersResponse, ListShareLinksResponse, + PrivateSharingRolesResponse, ShareDomainsResponse, ShareLink, + SharePrivateFolderWithUserPayload, UpdateShareLinkPayload, } from './types'; import { ApiSecurity, ApiUrl, AppDetails } from '../../shared'; @@ -214,6 +216,34 @@ export class Share { ); } + /** + * Share folder to a user + */ + public sharePrivateFolderWithUser({ + emailToShare, + privateFolderId, + roleId, + encryptionKey, + }: SharePrivateFolderWithUserPayload): Promise { + return this.client.post( + 'private-sharing/create', + { + email: emailToShare, + folderId: privateFolderId, + roleId, + encryptionKey, + }, + this.headers(), + ); + } + + /** + * Fetches roles for private sharing items + */ + public getPrivateSharingRoles(): Promise { + return this.client.get('private-sharing/roles', this.headers()); + } + /** * Returns the needed headers for the module requests * @private diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index 539f43d2..eed54899 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -97,3 +97,14 @@ export type ListAllSharedFoldersResponse = { sharedByMe: FolderChild[]; sharedWithMe: FolderChild[]; }; + +export type SharePrivateFolderWithUserPayload = { + emailToShare: string; + privateFolderId: FolderChild['uuid']; + roleId: PrivateSharingRole['id']; + encryptionKey: string; +}; + +export type PrivateSharingRole = { id: string; role: string; createdAt: Date; updatedAt: Date }; + +export type PrivateSharingRolesResponse = { roles: PrivateSharingRole[] }; \ No newline at end of file diff --git a/src/drive/storage/types.ts b/src/drive/storage/types.ts index 894a3f30..55fb910e 100644 --- a/src/drive/storage/types.ts +++ b/src/drive/storage/types.ts @@ -66,6 +66,7 @@ export interface FolderChild { updatedAt: string; userId: number; user_id: number; + uuid: string; } export interface FetchFolderContentResponse { diff --git a/test/drive/storage/mothers/folderContentResponse.mother.ts b/test/drive/storage/mothers/folderContentResponse.mother.ts index 6b4b55b3..58b12f35 100644 --- a/test/drive/storage/mothers/folderContentResponse.mother.ts +++ b/test/drive/storage/mothers/folderContentResponse.mother.ts @@ -38,6 +38,7 @@ export function randomFolderContentResponse(folderCount: number, fileCount: numb updatedAt: '', userId: 0, user_id: 0, + uuid: '', }; const file: DriveFileData = { bucket: '', From 1dc20cf3ba5fb496c6ce8e404006d9639f9622a9 Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Tue, 1 Aug 2023 17:18:44 +0200 Subject: [PATCH 06/11] Added feth of users that has shared folder, types and call to enpdoint for update role of a user --- src/drive/share/index.ts | 36 +++++++++++++++++++++++++++++++++++- src/drive/share/types.ts | 20 +++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 0d2197c9..3bdd7eb8 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -8,13 +8,16 @@ import { GenerateShareLinkPayload, GetSharedDirectoryPayload, GetShareLinkFolderSizePayload, + GrantSharePrivilegesToUserResponse, ListAllSharedFoldersResponse, ListPrivateSharedFoldersResponse, ListShareLinksResponse, PrivateSharingRolesResponse, + SharedFolderUser, ShareDomainsResponse, ShareLink, SharePrivateFolderWithUserPayload, + UpdateRoleFolderResponse, UpdateShareLinkPayload, } from './types'; import { ApiSecurity, ApiUrl, AppDetails } from '../../shared'; @@ -197,6 +200,23 @@ export class Share { ); } + /** + * Get all shared folders users + */ + public getSharedFolderUsers( + folderUUID: string, + page = 0, + perPage = 50, + orderBy?: 'views:ASC' | 'views:DESC' | 'createdAt:ASC' | 'createdAt:DESC', + ): Promise<{ users: SharedFolderUser[] }> { + const orderByQueryParam = orderBy ? `&orderBy=${orderBy}` : ''; + + return this.client.get( + `private-sharing/shared-with/by-folder-id/${folderUUID}?page=${page}&perPage=${perPage}${orderByQueryParam}`, + this.headers(), + ); + } + /** * Grant privileges of folder to a user */ @@ -204,7 +224,7 @@ export class Share { userUuid: string, privateFolderId: string, roleId: string, - ): Promise { + ): Promise { return this.client.post( 'private-sharing/grant-privileges', { @@ -216,6 +236,20 @@ export class Share { ); } + /** + * Update role of a user on a folder + */ + public updateRoleFolder(privateFolderId: string, roleId: string): Promise { + return this.client.put( + `private-sharing/role/${roleId}`, + { + privateFolderId, + roleId, + }, + this.headers(), + ); + } + /** * Share folder to a user */ diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index eed54899..24988ef5 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -107,4 +107,22 @@ export type SharePrivateFolderWithUserPayload = { export type PrivateSharingRole = { id: string; role: string; createdAt: Date; updatedAt: Date }; -export type PrivateSharingRolesResponse = { roles: PrivateSharingRole[] }; \ No newline at end of file +export type PrivateSharingRolesResponse = { roles: PrivateSharingRole[] }; + +export type GrantSharePrivilegesToUserResponse = { message: string }; +export type UpdateRoleFolderResponse = { message: string }; + +export type SharedFolderUser = { + avatar: string | null; + email: string; + grantedFrom: string; + grantedFromPlainName: string; + id: number; + lastname: string; + name: string; + roleId: string; + roleName: string; + uuid: string; +}; + +export type getSharedFolderUsersResponse = { users: SharedFolderUser[] }; \ No newline at end of file From e11524ffde854f569fdd37b3ec08545e2f82d8b4 Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Wed, 2 Aug 2023 14:18:11 +0200 Subject: [PATCH 07/11] Added function to get private shared folder data --- src/drive/share/index.ts | 8 ++++++++ src/drive/share/types.ts | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 3bdd7eb8..e2fe69d0 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -12,6 +12,7 @@ import { ListAllSharedFoldersResponse, ListPrivateSharedFoldersResponse, ListShareLinksResponse, + PrivateSharedFolder, PrivateSharingRolesResponse, SharedFolderUser, ShareDomainsResponse, @@ -217,6 +218,13 @@ export class Share { ); } + /** + * Get private folder data + */ + public getPrivateSharedFolder(folderUUID: string): Promise<{ data: PrivateSharedFolder }> { + return this.client.get(`private-sharing/by-folder-id/${folderUUID}`, this.headers()); + } + /** * Grant privileges of folder to a user */ diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index 24988ef5..641747ba 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -125,4 +125,41 @@ export type SharedFolderUser = { uuid: string; }; -export type getSharedFolderUsersResponse = { users: SharedFolderUser[] }; \ No newline at end of file +export type getSharedFolderUsersResponse = { users: SharedFolderUser[] }; + +export type PrivateSharedFolder = { + id: string; + folderId: string; + ownerId: string; + sharedWith: string; + encryptionKey: string; + createdAt: string; + updatedAt: string; + owner_id: string; + shared_with: string; + folder: { + id: number; + uuid: string; + parentId: number; + parentUuid: string | null; + name: string; + bucket: string | null; + userId: number; + encryptVersion: string; + plainName: string | null; + deleted: boolean; + removed: boolean; + deletedAt: string | null; + createdAt: string; + updatedAt: string; + removedAt: string | null; + }; + owner: { + uuid: string; + email: string; + name: string; + lastname: string; + avatar: string | null; + }; + fileSize: number; +}; \ No newline at end of file From 2fdabac107fcba624b602e930bc82b90bd4c6782 Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Thu, 3 Aug 2023 09:53:37 +0200 Subject: [PATCH 08/11] Modified updateRoleFolder function --- src/drive/share/index.ts | 11 ++++++++--- src/drive/share/types.ts | 6 ++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index e2fe69d0..69156349 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -18,6 +18,7 @@ import { ShareDomainsResponse, ShareLink, SharePrivateFolderWithUserPayload, + UpdateRoleFolderPayload, UpdateRoleFolderResponse, UpdateShareLinkPayload, } from './types'; @@ -247,12 +248,16 @@ export class Share { /** * Update role of a user on a folder */ - public updateRoleFolder(privateFolderId: string, roleId: string): Promise { + public updateRoleFolder({ + folderUUID, + roleId, + userEmail, + }: UpdateRoleFolderPayload): Promise { return this.client.put( `private-sharing/role/${roleId}`, { - privateFolderId, - roleId, + folderId: folderUUID, + email: userEmail, }, this.headers(), ); diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index 641747ba..bd975fab 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -112,6 +112,12 @@ export type PrivateSharingRolesResponse = { roles: PrivateSharingRole[] }; export type GrantSharePrivilegesToUserResponse = { message: string }; export type UpdateRoleFolderResponse = { message: string }; +export type UpdateRoleFolderPayload = { + folderUUID: string; + roleId: string; + userEmail: string; +}; + export type SharedFolderUser = { avatar: string | null; email: string; From 63198c174dfa5cfdd1f3967d38c86abd6617055a Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Wed, 9 Aug 2023 06:46:50 +0200 Subject: [PATCH 09/11] Added stop sharing functions and jsdoc --- src/drive/share/index.ts | 83 +++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 69156349..169b1197 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -146,6 +146,7 @@ export class Share { public getShareDomains(): Promise { return this.client.get('/storage/share/domains', this.headers()); } + /** * Get size of folder in share links * @param payload @@ -155,7 +156,12 @@ export class Share { } /** - * Fetches all folders shared by a user + * Fetches all folders shared by a user. + * + * @param {number} page - The page number for pagination. + * @param {number} perPage - The number of items per page for pagination. + * @param {string} [orderBy] - The optional order criteria (e.g., 'views:ASC', 'createdAt:DESC'). + * @returns {Promise} A promise containing the list of shared folders. */ public getSentSharedFolders( page = 0, @@ -171,7 +177,12 @@ export class Share { } /** - * Fetches folders shared with a user + * Fetches folders shared with a user. + * + * @param {number} page - The page number for pagination. + * @param {number} perPage - The number of items per page for pagination. + * @param {string} [orderBy] - The optional order criteria (e.g., 'views:ASC', 'createdAt:DESC'). + * @returns {Promise} A promise containing the list of shared folders. */ public getReceivedSharedFolders( page = 0, @@ -187,7 +198,12 @@ export class Share { } /** - * Fetches all shared folders + * Fetches all shared folders. + * + * @param {number} page - The page number for pagination. + * @param {number} perPage - The number of items per page for pagination. + * @param {string} [orderBy] - The optional order criteria (e.g., 'views:ASC', 'createdAt:DESC'). + * @returns {Promise} A promise containing the list of shared folders. */ public getAllSharedFolders( page = 0, @@ -203,7 +219,13 @@ export class Share { } /** - * Get all shared folders users + * Get all users with access to a shared folder. + * + * @param {string} folderUUID - The UUID of the folder. + * @param {number} page - The page number for pagination. + * @param {number} perPage - The number of items per page for pagination. + * @param {string} [orderBy] - The optional order criteria (e.g., 'views:ASC', 'createdAt:DESC'). + * @returns {Promise<{ users: SharedFolderUser[] }>} A promise containing the list of users with access to the folder. */ public getSharedFolderUsers( folderUUID: string, @@ -220,14 +242,22 @@ export class Share { } /** - * Get private folder data + * Get private folder data. + * + * @param {string} folderUUID - The UUID of the folder. + * @returns {Promise<{ data: PrivateSharedFolder }>} A promise containing the private folder data. */ public getPrivateSharedFolder(folderUUID: string): Promise<{ data: PrivateSharedFolder }> { return this.client.get(`private-sharing/by-folder-id/${folderUUID}`, this.headers()); } /** - * Grant privileges of folder to a user + * Grant privileges of folder to a user. + * + * @param {string} userUuid - The UUID of the user. + * @param {string} privateFolderId - The UUID of the shared folder. + * @param {string} roleId - The id of the role. + * @returns {Promise} A promise with message field */ public grantSharePrivilegesToUser( userUuid: string, @@ -246,7 +276,13 @@ export class Share { } /** - * Update role of a user on a folder + * Update the role of a user on a folder. + * + * @param {UpdateRoleFolderPayload} options - The options for updating the user's role on the folder. + * @param {string} options.folderUUID - The unique identifier of the folder. + * @param {string} options.roleId - The identifier of the role to assign to the user. + * @param {string} options.userEmail - The email address of the user. + * @returns {Promise} A promise that resolves when the user's role is updated. */ public updateRoleFolder({ folderUUID, @@ -264,7 +300,14 @@ export class Share { } /** - * Share folder to a user + * Share a private folder with a user. + * + * @param {SharePrivateFolderWithUserPayload} options - The options for sharing the private folder with a user. + * @param {string} options.emailToShare - The email address of the user to share the folder with. + * @param {string} options.privateFolderId - The unique identifier of the private folder. + * @param {string} options.roleId - The identifier of the role to assign to the user for the shared folder. + * @param {string} options.encryptionKey - The encryption key for the shared folder. + * @returns {Promise} A promise that resolves when the folder is shared with the user. */ public sharePrivateFolderWithUser({ emailToShare, @@ -285,12 +328,34 @@ export class Share { } /** - * Fetches roles for private sharing items + * Fetches roles for private sharing items. + * + * @returns {Promise} A promise containing the list of private sharing roles. */ public getPrivateSharingRoles(): Promise { return this.client.get('private-sharing/roles', this.headers()); } + /** + * Stop sharing folder + * + * @param {string} folderUUID - The unique identifier of the folder. + * @returns {Promise<{ stopped: boolean }>} A promise that resolves with an object indicating whether the sharing was stopped. + */ + public stopSharingFolder(folderUUID: string): Promise<{ stoped: boolean }> { + return this.client.delete(`/private-sharing/stop/folder-id/${folderUUID}`, this.headers()); + } + + /** + * Remove user from the shared users list of a folder. + * @param {string} folderUUID - The UUID of the shared folder. + * @param {string} userUUID - The UUID of the user to be removed. + * @returns {Promise<{ removed: boolean }>} A promise indicating whether the user was removed. + */ + public removeUserFromSharedFolder(folderUUID: string, userUUID: string): Promise<{ removed: boolean }> { + return this.client.delete(`/private-sharing/remove/folder-id/${folderUUID}/user-id/${userUUID}`, this.headers()); + } + /** * Returns the needed headers for the module requests * @private From b47417570e9a139dd171b43b4fa1b896f1a31e2f Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Wed, 9 Aug 2023 11:07:15 +0200 Subject: [PATCH 10/11] Update parameters of update user role call --- src/drive/share/index.ts | 16 ++++++---------- src/drive/share/types.ts | 7 +++---- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/drive/share/index.ts b/src/drive/share/index.ts index 169b1197..a80ca80e 100644 --- a/src/drive/share/index.ts +++ b/src/drive/share/index.ts @@ -18,8 +18,8 @@ import { ShareDomainsResponse, ShareLink, SharePrivateFolderWithUserPayload, - UpdateRoleFolderPayload, - UpdateRoleFolderResponse, + UpdateUserRolePayload, + UpdateUserRoleResponse, UpdateShareLinkPayload, } from './types'; import { ApiSecurity, ApiUrl, AppDetails } from '../../shared'; @@ -278,22 +278,18 @@ export class Share { /** * Update the role of a user on a folder. * - * @param {UpdateRoleFolderPayload} options - The options for updating the user's role on the folder. + * @param {UpdateUserRolePayload} options - The options for updating the user's role on the folder. * @param {string} options.folderUUID - The unique identifier of the folder. * @param {string} options.roleId - The identifier of the role to assign to the user. - * @param {string} options.userEmail - The email address of the user. + * @param {string} options.userUUID - The email address of the user. * @returns {Promise} A promise that resolves when the user's role is updated. */ - public updateRoleFolder({ - folderUUID, - roleId, - userEmail, - }: UpdateRoleFolderPayload): Promise { + public updateUserRole({ folderUUID, roleId, userUUID }: UpdateUserRolePayload): Promise { return this.client.put( `private-sharing/role/${roleId}`, { folderId: folderUUID, - email: userEmail, + userId: userUUID, }, this.headers(), ); diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index bd975fab..eb2e0afc 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -110,12 +110,12 @@ export type PrivateSharingRole = { id: string; role: string; createdAt: Date; up export type PrivateSharingRolesResponse = { roles: PrivateSharingRole[] }; export type GrantSharePrivilegesToUserResponse = { message: string }; -export type UpdateRoleFolderResponse = { message: string }; +export type UpdateUserRoleResponse = { message: string }; -export type UpdateRoleFolderPayload = { +export type UpdateUserRolePayload = { folderUUID: string; roleId: string; - userEmail: string; + userUUID: string; }; export type SharedFolderUser = { @@ -141,7 +141,6 @@ export type PrivateSharedFolder = { encryptionKey: string; createdAt: string; updatedAt: string; - owner_id: string; shared_with: string; folder: { id: number; From 0f60edcfed91ea73282006ae10571e835844c341 Mon Sep 17 00:00:00 2001 From: Ramon Candel Date: Wed, 9 Aug 2023 14:59:25 +0200 Subject: [PATCH 11/11] Removed snake case field --- src/drive/share/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/drive/share/types.ts b/src/drive/share/types.ts index eb2e0afc..705df3f3 100644 --- a/src/drive/share/types.ts +++ b/src/drive/share/types.ts @@ -141,7 +141,6 @@ export type PrivateSharedFolder = { encryptionKey: string; createdAt: string; updatedAt: string; - shared_with: string; folder: { id: number; uuid: string;