diff --git a/apps/web/src/atoms/public-workspace/index.ts b/apps/web/src/atoms/public-workspace/index.ts index ede6e3a1b3..520f3fef15 100644 --- a/apps/web/src/atoms/public-workspace/index.ts +++ b/apps/web/src/atoms/public-workspace/index.ts @@ -13,18 +13,11 @@ export const publicBlockSuiteAtom = atom>( throw new Error('No workspace id'); } const binary = await affineApis.downloadWorkspace(workspaceId, true); - // fixme: this is a hack - const params = new URLSearchParams(window.location.search); - const prefixUrl = params.get('prefixUrl') - ? (params.get('prefixUrl') as string) - : '/'; const blockSuiteWorkspace = createEmptyBlockSuiteWorkspace( workspaceId, (k: string) => // fixme: token could be expired - ({ api: `${prefixUrl}api/workspace`, token: getLoginStorage()?.token }[ - k - ]) + ({ api: `api/workspace`, token: getLoginStorage()?.token }[k]) ); BlockSuiteWorkspace.Y.applyUpdate( blockSuiteWorkspace.doc, @@ -39,19 +32,6 @@ export const publicBlockSuiteAtom = atom>( ); blockSuiteWorkspace.awarenessStore.setFlag('enable_slash_menu', false); blockSuiteWorkspace.awarenessStore.setFlag('enable_drag_handle', false); - return new Promise(resolve => { - setTimeout(() => { - // const workspace: LocalWorkspace = { - // id: workspaceId, - // blockSuiteWorkspace, - // flavour: RemWorkspaceFlavour.LOCAL, - // providers: [], - // }; - // fixme: quick search won't work, ASAP - // dataCenter.workspaces.push(workspace); - // dataCenter.callbacks.forEach(cb => cb()); - resolve(blockSuiteWorkspace); - }, 0); - }); + return blockSuiteWorkspace; } ); diff --git a/apps/web/src/layouts/index.tsx b/apps/web/src/layouts/index.tsx index 6e9650c97d..922871a0a4 100644 --- a/apps/web/src/layouts/index.tsx +++ b/apps/web/src/layouts/index.tsx @@ -16,6 +16,10 @@ import { openWorkspacesModalAtom, workspaceLockAtom, } from '../atoms'; +import { + publicBlockSuiteAtom, + publicWorkspaceIdAtom, +} from '../atoms/public-workspace'; import { HelpIsland } from '../components/pure/help-island'; import { PageLoading } from '../components/pure/loading'; import WorkSpaceSliderBar from '../components/pure/workspace-slider-bar'; @@ -42,6 +46,48 @@ const QuickSearchModal = dynamic( () => import('../components/pure/quick-search-modal') ); +export const PublicQuickSearch: React.FC = () => { + const blockSuiteWorkspace = useAtomValue(publicBlockSuiteAtom); + const router = useRouter(); + const [openQuickSearchModal, setOpenQuickSearchModalAtom] = useAtom( + openQuickSearchModalAtom + ); + return ( + + ); +}; + +export const QuickSearch: React.FC = () => { + const [currentWorkspace] = useCurrentWorkspace(); + const router = useRouter(); + const [openQuickSearchModal, setOpenQuickSearchModalAtom] = useAtom( + openQuickSearchModalAtom + ); + const blockSuiteWorkspace = currentWorkspace?.blockSuiteWorkspace; + const isPublicWorkspace = + router.pathname.split('/')[1] === 'public-workspace'; + const publicWorkspaceId = useAtomValue(publicWorkspaceIdAtom); + if (!blockSuiteWorkspace) { + if (isPublicWorkspace && publicWorkspaceId) { + return ; + } + return null; + } + return ( + + ); +}; + const logger = new DebugLogger('workspace-layout'); export const WorkspaceLayout: React.FC = function WorkspacesSuspense({ children }) { @@ -217,14 +263,7 @@ export const WorkspaceLayoutInner: React.FC = ({ - {currentWorkspace?.blockSuiteWorkspace && ( - - )} + ); };