feat: filter out empty workpace in sidebar list (#7960)

fix PD-1567
This commit is contained in:
darkskygit
2024-08-28 08:43:44 +00:00
parent 06685683ae
commit dde45748d9
8 changed files with 48 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
import { WorkspaceFlavour } from '@affine/env/workspace';
import type { WorkspaceMetadata } from '@toeverything/infra';
import { Suspense } from 'react';
@@ -58,9 +59,13 @@ const SortableWorkspaceItem = ({
export const WorkspaceList = (props: WorkspaceListProps) => {
const workspaceList = props.items;
return workspaceList.map(item => (
<Suspense fallback={<WorkspaceCardSkeleton />} key={item.id}>
<SortableWorkspaceItem key={item.id} {...props} item={item} />
</Suspense>
));
return workspaceList
.filter(
w => w.flavour !== WorkspaceFlavour.AFFINE_CLOUD || w.initialized === true
)
.map(item => (
<Suspense fallback={<WorkspaceCardSkeleton />} key={item.id}>
<SortableWorkspaceItem key={item.id} {...props} item={item} />
</Suspense>
));
};

View File

@@ -117,7 +117,10 @@ export class CloudWorkspaceFlavourProviderService
this.revalidate();
await this.waitForLoaded();
return { id: workspaceId, flavour: WorkspaceFlavour.AFFINE_CLOUD };
return {
id: workspaceId,
flavour: WorkspaceFlavour.AFFINE_CLOUD,
};
}
revalidate = effect(
map(() => {
@@ -138,12 +141,16 @@ export class CloudWorkspaceFlavourProviderService
},
});
const ids = workspaces.map(({ id }) => id);
const ids = workspaces.map(({ id, initialized }) => ({
id,
initialized,
}));
return {
accountId,
workspaces: ids.map(id => ({
workspaces: ids.map(({ id, initialized }) => ({
id,
flavour: WorkspaceFlavour.AFFINE_CLOUD,
initialized,
})),
};
}).pipe(

View File

@@ -1,6 +1,7 @@
query getWorkspaces {
workspaces {
id
initialized
owner {
id
}

View File

@@ -677,6 +677,7 @@ export const getWorkspacesQuery = {
query getWorkspaces {
workspaces {
id
initialized
owner {
id
}

View File

@@ -1203,6 +1203,8 @@ export interface WorkspaceType {
features: Array<FeatureType>;
histories: Array<DocHistoryType>;
id: Scalars['ID']['output'];
/** is current workspace initialized */
initialized: Scalars['Boolean']['output'];
/** member count of workspace */
memberCount: Scalars['Int']['output'];
/** Members of workspace */
@@ -1843,6 +1845,7 @@ export type GetWorkspacesQuery = {
workspaces: Array<{
__typename?: 'WorkspaceType';
id: string;
initialized: boolean;
owner: { __typename?: 'UserType'; id: string };
}>;
};