From 29bb31fdbc3d550e46467503b9986f0fc1a6a6b2 Mon Sep 17 00:00:00 2001 From: Zai Shi Date: Wed, 19 Jun 2024 15:34:06 +0200 Subject: [PATCH] added server user create team (#84) --- .../src/interface/clientInterface.ts | 2 +- .../src/interface/serverInterface.ts | 19 +++++++++++++++++++ packages/stack/src/lib/stack-app.ts | 8 +++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/stack-shared/src/interface/clientInterface.ts b/packages/stack-shared/src/interface/clientInterface.ts index 266bf3675..7421d141c 100644 --- a/packages/stack-shared/src/interface/clientInterface.ts +++ b/packages/stack-shared/src/interface/clientInterface.ts @@ -932,7 +932,7 @@ export class StackClientInterface { }; } - async createClientTeam( + async createTeamForCurrentUser( data: TeamCustomizableJson, session: InternalSession, ): Promise { diff --git a/packages/stack-shared/src/interface/serverInterface.ts b/packages/stack-shared/src/interface/serverInterface.ts index bb568e04d..eb45ddf00 100644 --- a/packages/stack-shared/src/interface/serverInterface.ts +++ b/packages/stack-shared/src/interface/serverInterface.ts @@ -361,4 +361,23 @@ export class StackServerInterface extends StackClientInterface { null, ); } + + async createServerTeamForUser( + userId: string, + data: ServerTeamCustomizableJson, + session: InternalSession, + ): Promise { + const response = await this.sendClientRequest( + `/users/${userId}/teams?server=true`, + { + method: "POST", + headers: { + "content-type": "application/json", + }, + body: JSON.stringify(data), + }, + session, + ); + return await response.json(); + } } diff --git a/packages/stack/src/lib/stack-app.ts b/packages/stack/src/lib/stack-app.ts index 174dbfae6..0f1a03256 100644 --- a/packages/stack/src/lib/stack-app.ts +++ b/packages/stack/src/lib/stack-app.ts @@ -786,7 +786,7 @@ class _StackClientAppImpl teams.map((json) => app._teamFromJson(json)), [teams]); }, async createTeam(data: TeamCustomizableJson) { - const teamJson = await app._interface.createClientTeam(data, session); + const teamJson = await app._interface.createTeamForCurrentUser(data, session); await app._currentUserTeamsCache.refresh([session]); return app._teamFromJson(teamJson); }, @@ -1361,8 +1361,10 @@ class _StackServerAppImpl { - throw new Error(); + createTeam: async (data: ServerTeamCustomizableJson) => { + const team = await app._interface.createServerTeamForUser(json.id, data, app._getSession()); + await app._serverTeamsCache.refresh([]); + return app._serverTeamFromJson(team); }, async listPermissions(scope: Team, options?: { direct?: boolean }): Promise { const permissions = await app._serverTeamUserPermissionsCache.getOrWait([scope.id, json.id, 'team', !!options?.direct], "write-only");