From f67108c6f737602cd77c234a60b71c1e800e0db8 Mon Sep 17 00:00:00 2001 From: EYHN Date: Tue, 4 Jun 2024 09:45:35 +0000 Subject: [PATCH] fix(core): fetch share docs on non-cloud workspace (#7144) --- .../components/page-list/use-filtered-page-metas.tsx | 4 ++-- .../src/hooks/affine/use-all-page-list-config.tsx | 4 ++-- .../src/modules/share-doc/entities/share-docs-list.ts | 8 ++++---- packages/frontend/core/src/modules/share-doc/index.ts | 2 +- .../core/src/modules/share-doc/services/share-docs.ts | 11 ++++++++++- packages/frontend/graphql/src/schema.ts | 11 +++++++++++ 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/frontend/core/src/components/page-list/use-filtered-page-metas.tsx b/packages/frontend/core/src/components/page-list/use-filtered-page-metas.tsx index d8fb93f5b5..1988c143b9 100644 --- a/packages/frontend/core/src/components/page-list/use-filtered-page-metas.tsx +++ b/packages/frontend/core/src/components/page-list/use-filtered-page-metas.tsx @@ -17,7 +17,7 @@ export const useFilteredPageMetas = ( } = {} ) => { const shareDocsService = useService(ShareDocsService); - const shareDocs = useLiveData(shareDocsService.shareDocs.list$); + const shareDocs = useLiveData(shareDocsService.shareDocs?.list$); const getPublicMode = useCallback( (id: string) => { @@ -33,7 +33,7 @@ export const useFilteredPageMetas = ( useEffect(() => { // TODO: loading & error UI - shareDocsService.shareDocs.revalidate(); + shareDocsService.shareDocs?.revalidate(); }, [shareDocsService]); const favAdapter = useService(FavoriteItemsAdapter); diff --git a/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx b/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx index 62449a7bab..2dfb24a2e9 100644 --- a/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx +++ b/packages/frontend/core/src/hooks/affine/use-all-page-list-config.tsx @@ -15,11 +15,11 @@ import { usePageHelper } from '../../components/blocksuite/block-suite-page-list export const useAllPageListConfig = () => { const currentWorkspace = useService(WorkspaceService).workspace; const shareDocService = useService(ShareDocsService); - const shareDocs = useLiveData(shareDocService.shareDocs.list$); + const shareDocs = useLiveData(shareDocService.shareDocs?.list$); useEffect(() => { // TODO: loading & error UI - shareDocService.shareDocs.revalidate(); + shareDocService.shareDocs?.revalidate(); }, [shareDocService]); const workspace = currentWorkspace.docCollection; diff --git a/packages/frontend/core/src/modules/share-doc/entities/share-docs-list.ts b/packages/frontend/core/src/modules/share-doc/entities/share-docs-list.ts index 05f375ce76..f3d83da554 100644 --- a/packages/frontend/core/src/modules/share-doc/entities/share-docs-list.ts +++ b/packages/frontend/core/src/modules/share-doc/entities/share-docs-list.ts @@ -36,12 +36,12 @@ export class ShareDocsList extends Entity { revalidate = effect( switchMap(() => - fromPromise(signal => - this.store.getWorkspacesShareDocs( + fromPromise(signal => { + return this.store.getWorkspacesShareDocs( this.workspaceService.workspace.id, signal - ) - ).pipe( + ); + }).pipe( backoffRetry({ when: isNetworkError, count: Infinity, diff --git a/packages/frontend/core/src/modules/share-doc/index.ts b/packages/frontend/core/src/modules/share-doc/index.ts index 074dcedd90..d33c646b48 100644 --- a/packages/frontend/core/src/modules/share-doc/index.ts +++ b/packages/frontend/core/src/modules/share-doc/index.ts @@ -21,7 +21,7 @@ import { ShareDocsStore } from './stores/share-docs'; export function configureShareDocsModule(framework: Framework) { framework .scope(WorkspaceScope) - .service(ShareDocsService) + .service(ShareDocsService, [WorkspaceService]) .store(ShareDocsStore, [GraphQLService]) .entity(ShareDocsList, [ WorkspaceService, diff --git a/packages/frontend/core/src/modules/share-doc/services/share-docs.ts b/packages/frontend/core/src/modules/share-doc/services/share-docs.ts index e550b5fe95..2ee87513ea 100644 --- a/packages/frontend/core/src/modules/share-doc/services/share-docs.ts +++ b/packages/frontend/core/src/modules/share-doc/services/share-docs.ts @@ -1,7 +1,16 @@ +import { WorkspaceFlavour } from '@affine/env/workspace'; +import type { WorkspaceService } from '@toeverything/infra'; import { Service } from '@toeverything/infra'; import { ShareDocsList } from '../entities/share-docs-list'; export class ShareDocsService extends Service { - shareDocs = this.framework.createEntity(ShareDocsList); + constructor(private readonly workspaceService: WorkspaceService) { + super(); + } + + shareDocs = + this.workspaceService.workspace.flavour === WorkspaceFlavour.AFFINE_CLOUD + ? this.framework.createEntity(ShareDocsList) + : null; } diff --git a/packages/frontend/graphql/src/schema.ts b/packages/frontend/graphql/src/schema.ts index 31ede1dcbc..c3ca0a97b5 100644 --- a/packages/frontend/graphql/src/schema.ts +++ b/packages/frontend/graphql/src/schema.ts @@ -93,6 +93,12 @@ export interface CreateCopilotPromptInput { name: Scalars['String']['input']; } +export interface CreateUserInput { + email: Scalars['String']['input']; + name: InputMaybe; + password: InputMaybe; +} + export interface DeleteSessionInput { docId: Scalars['String']['input']; sessionIds: Array; @@ -122,6 +128,11 @@ export enum InvoiceStatus { Void = 'Void', } +export interface ListUserInput { + first: InputMaybe; + skip: InputMaybe; +} + export enum OAuthProviderType { GitHub = 'GitHub', Google = 'Google',