diff --git a/packages/app/src/app/overmind/effects/api/index.ts b/packages/app/src/app/overmind/effects/api/index.ts index d3ccd11b4af..bd9ef0f41c6 100755 --- a/packages/app/src/app/overmind/effects/api/index.ts +++ b/packages/app/src/app/overmind/effects/api/index.ts @@ -32,6 +32,7 @@ import { IDirectoryAPIResponse, IModuleAPIResponse, SandboxAPIResponse, + SandboxExpensiveDataAPIResponse, } from './types'; let api: Api; @@ -86,6 +87,15 @@ export default { // We need to add client side properties for tracking return transformSandbox(sandbox); }, + async getSandboxExpensiveData( + id: string + ): Promise { + const sandboxData = await api.get( + `/sandboxes/${id}/expensive-data` + ); + + return sandboxData; + }, async forkSandbox(id: string, body?: unknown): Promise { const url = id.includes('/') ? `/sandboxes/fork/${id}` diff --git a/packages/app/src/app/overmind/effects/api/types.ts b/packages/app/src/app/overmind/effects/api/types.ts index d8ca786bdca..e5faf0f0a3a 100644 --- a/packages/app/src/app/overmind/effects/api/types.ts +++ b/packages/app/src/app/overmind/effects/api/types.ts @@ -26,3 +26,7 @@ export type SandboxAPIResponse = Omit & { modules: IModuleAPIResponse[]; directories: IDirectoryAPIResponse[]; }; + +export type SandboxExpensiveDataAPIResponse = { + forkCount: number; +}; diff --git a/packages/app/src/app/overmind/namespaces/editor/actions.ts b/packages/app/src/app/overmind/namespaces/editor/actions.ts index 5f83da4ed92..8a7ab70fc38 100755 --- a/packages/app/src/app/overmind/namespaces/editor/actions.ts +++ b/packages/app/src/app/overmind/namespaces/editor/actions.ts @@ -95,6 +95,12 @@ export const sandboxChanged: AsyncAction<{ id: string }> = withLoadApp<{ try { const sandbox = await effects.api.getSandbox(newId); + effects.api.getSandboxExpensiveData(newId).then(x => { + if (state.editor.currentSandbox.id === newId) { + state.editor.currentSandbox.forkCount = x.forkCount; + } + }); + actions.internal.setCurrentSandbox(sandbox); actions.workspace.openDefaultItem();