From f17283173367b7217054df7fb785ee44a9dd86c0 Mon Sep 17 00:00:00 2001 From: Himself65 Date: Tue, 7 Mar 2023 23:31:22 -0600 Subject: [PATCH] feat: publish local workspace (#1406) --- .../enable-affine-cloud-modal/index.tsx | 2 - .../panel/publish/index.tsx | 74 +++++++++++++------ .../blocksuite/block-suite-editor/index.tsx | 2 + apps/web/src/pages/_app.tsx | 1 - .../pages/workspace/[workspaceId]/setting.tsx | 3 +- apps/web/src/providers/ThemeProvider.tsx | 9 ++- apps/web/src/styles/globals.css | 1 - 7 files changed, 62 insertions(+), 30 deletions(-) diff --git a/apps/web/src/components/affine/enable-affine-cloud-modal/index.tsx b/apps/web/src/components/affine/enable-affine-cloud-modal/index.tsx index 5d3c73ae87..3b7f4fc775 100644 --- a/apps/web/src/components/affine/enable-affine-cloud-modal/index.tsx +++ b/apps/web/src/components/affine/enable-affine-cloud-modal/index.tsx @@ -4,11 +4,9 @@ import { CloseIcon } from '@blocksuite/icons'; import React from 'react'; import { useCurrentUser } from '../../../hooks/current/use-current-user'; -import { AffineWorkspace } from '../../../shared'; import { Content, ContentTitle, Header, StyleButton, StyleTips } from './style'; interface EnableAffineCloudModalProps { - workspace: AffineWorkspace; open: boolean; onConfirm: () => void; onClose: () => void; diff --git a/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx b/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx index af1503101a..07e5b24e55 100644 --- a/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx +++ b/apps/web/src/components/affine/workspace-setting-detail/panel/publish/index.tsx @@ -7,24 +7,27 @@ import { Wrapper, } from '@affine/component'; import { useTranslation } from '@affine/i18n'; +import { Box } from '@mui/material'; import React, { useCallback, useEffect, useState } from 'react'; -import { lockMutex } from '../../../../../atoms'; import { useToggleWorkspacePublish } from '../../../../../hooks/affine/use-toggle-workspace-publish'; +import { transformWorkspace } from '../../../../../plugins'; import { AffineOfficialWorkspace, AffineWorkspace, LocalWorkspace, RemWorkspaceFlavour, } from '../../../../../shared'; +import { apis } from '../../../../../shared/apis'; import { Unreachable } from '../../../affine-error-eoundary'; import { EnableAffineCloudModal } from '../../../enable-affine-cloud-modal'; +import { WorkspaceSettingDetailProps } from '../../index'; -export type PublishPanelProps = { +export type PublishPanelProps = WorkspaceSettingDetailProps & { workspace: AffineOfficialWorkspace; }; -export type PublishPanelAffineProps = { +export type PublishPanelAffineProps = WorkspaceSettingDetailProps & { workspace: AffineWorkspace; }; @@ -70,9 +73,7 @@ const PublishPanelAffine: React.FC = ({ { setOpen(false); }} - onConfirm={() => { - lockMutex(async () => { - return publishWorkspace(true); - }).then(() => { - setOpen(false); - }); + onConfirm={async () => { + await publishWorkspace(true); + setOpen(false); }} /> ); }; -export type PublishPanelLocalProps = { +export type PublishPanelLocalProps = WorkspaceSettingDetailProps & { workspace: LocalWorkspace; }; -const PublishPanelLocal: React.FC = ({ workspace }) => { +const PublishPanelLocal: React.FC = ({ + workspace, + onTransferWorkspace, +}) => { const { t } = useTranslation(); + const [open, setOpen] = useState(false); return ( <> - {t('Publishing')} + + {t('Publishing')} + + { + setOpen(false); + }} + onConfirm={async () => { + const id = await transformWorkspace( + RemWorkspaceFlavour.LOCAL, + RemWorkspaceFlavour.AFFINE, + workspace + ); + await apis.updateWorkspace({ + id, + public: true, + }); + // fixme: there imply that reload the whole page + onTransferWorkspace(id); + setOpen(false); + }} + /> ); }; -export const PublishPanel: React.FC = ({ workspace }) => { - if (workspace.flavour === RemWorkspaceFlavour.AFFINE) { - return ; - } else if (workspace.flavour === RemWorkspaceFlavour.LOCAL) { - return ; +export const PublishPanel: React.FC = props => { + if (props.workspace.flavour === RemWorkspaceFlavour.AFFINE) { + return ; + } else if (props.workspace.flavour === RemWorkspaceFlavour.LOCAL) { + return ; } throw new Unreachable(); }; diff --git a/apps/web/src/components/blocksuite/block-suite-editor/index.tsx b/apps/web/src/components/blocksuite/block-suite-editor/index.tsx index b0ab1a7239..56783564c9 100644 --- a/apps/web/src/components/blocksuite/block-suite-editor/index.tsx +++ b/apps/web/src/components/blocksuite/block-suite-editor/index.tsx @@ -1,3 +1,5 @@ +import '@blocksuite/editor/themes/affine.css'; + import { config } from '@affine/env'; import { BlockHub } from '@blocksuite/blocks'; import { EditorContainer } from '@blocksuite/editor'; diff --git a/apps/web/src/pages/_app.tsx b/apps/web/src/pages/_app.tsx index 4be54dbd9e..dd52ef69af 100644 --- a/apps/web/src/pages/_app.tsx +++ b/apps/web/src/pages/_app.tsx @@ -1,4 +1,3 @@ -import '@blocksuite/editor/themes/affine.css'; import '../styles/globals.css'; import { config, setupGlobal } from '@affine/env'; diff --git a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx index 6bf64ad03d..1485446c3f 100644 --- a/apps/web/src/pages/workspace/[workspaceId]/setting.tsx +++ b/apps/web/src/pages/workspace/[workspaceId]/setting.tsx @@ -102,8 +102,9 @@ const SettingPage: NextPageWithLayout = () => { (targetWorkspaceId: string) => { router .replace({ - pathname: `/workspace/[workspaceId]/all`, + pathname: `/workspace/[workspaceId]/setting`, query: { + ...router.query, workspaceId: targetWorkspaceId, }, }) diff --git a/apps/web/src/providers/ThemeProvider.tsx b/apps/web/src/providers/ThemeProvider.tsx index 49dbd0da48..ccbddd5e75 100644 --- a/apps/web/src/providers/ThemeProvider.tsx +++ b/apps/web/src/providers/ThemeProvider.tsx @@ -20,7 +20,14 @@ const ThemeInjector = React.memo<{ return ( ); diff --git a/apps/web/src/styles/globals.css b/apps/web/src/styles/globals.css index 18da472e3c..c61cddde65 100644 --- a/apps/web/src/styles/globals.css +++ b/apps/web/src/styles/globals.css @@ -149,7 +149,6 @@ legend { border: 0; font-size: var(--affine-font-base); line-height: var(--affine-line-height); - color: var(--affine-text-color); font-family: var(--affine-font-family); } body {