Merge branch 'feat/filesystem_and_search' of github.com:toeverything/AFFiNE into feat/filesystem_and_search

This commit is contained in:
DiamondThree
2022-12-23 16:03:34 +08:00
5 changed files with 75 additions and 28 deletions
+11 -11
View File
@@ -32,20 +32,20 @@ jobs:
node-version: 18.x
registry-url: https://npm.pkg.github.com
scope: '@toeverything'
cache: 'pnpm'
# cache: 'pnpm'
- run: node scripts/module-resolve/ci.js
- name: Restore cache
uses: actions/cache@v3
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-
# - name: Restore cache
# uses: actions/cache@v3
# with:
# path: |
# .next/cache
# # Generate a new cache whenever packages or source files change.
# key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# # If source files changed but packages didn't, rebuild from a prior cache.
# restore-keys: |
# ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-
- name: Install dependencies
run: pnpm install --no-frozen-lockfile
@@ -31,8 +31,8 @@ export const WorkspaceDelete = ({
nextWorkSpaceId,
}: WorkspaceDeleteProps) => {
const [deleteStr, setDeleteStr] = useState<string>('');
const router = useRouter();
const { refreshWorkspacesMeta } = useAppState();
const router = useRouter();
const handlerInputChange = (workspaceName: string) => {
setDeleteStr(workspaceName);
@@ -15,6 +15,7 @@ import { WorkspaceDetails } from '@/components/workspace-slider-bar/WorkspaceSel
import { WorkspaceDelete } from './delete';
import { Workspace as StoreWorkspace } from '@blocksuite/store';
import { debounce } from '@/utils';
import { WorkspaceLeave } from './leave';
export const GeneralPage = ({
workspace,
@@ -32,6 +33,7 @@ export const GeneralPage = ({
refreshWorkspacesMeta,
} = useAppState();
const [showDelete, setShowDelete] = useState<boolean>(false);
const [showLeave, setShowLeave] = useState<boolean>(false);
const [workspaceName, setWorkspaceName] = useState<string>(
workspaces[workspace.id]?.meta.name ||
(workspace.type === WorkspaceType.Private && user ? user.name : '')
@@ -53,21 +55,22 @@ export const GeneralPage = ({
currentWorkspaceIndex > workspacesMeta.length - 1
? workspacesMeta[currentWorkspaceIndex - 1]?.id
: workspacesMeta[currentWorkspaceIndex + 1]?.id;
const handleCloseDelete = () => {
setShowDelete(false);
};
const handleClickDelete = () => {
setShowDelete(true);
};
const handleCloseDelete = () => {
setShowDelete(false);
};
const handleClickLeave = () => {
setShowLeave(true);
};
const handleCloseLeave = () => {
setShowLeave(false);
};
return workspace ? (
<div>
<WorkspaceDelete
open={showDelete}
onClose={handleCloseDelete}
workspaceName={workspaceName}
workspaceId={workspace.id}
nextWorkSpaceId={nextWorkSpaceId}
></WorkspaceDelete>
<StyledSettingH2 marginTop={56}>Workspace Avatar</StyledSettingH2>
<StyledSettingAvatarContent>
<StyledSettingAvatar
@@ -104,9 +107,33 @@ export const GeneralPage = ({
></Input>
</StyledSettingInputContainer>
<StyledDeleteButtonContainer>
<Button type="danger" shape="circle" onClick={handleClickDelete}>
Delete Workspace
</Button>
{isOwner ? (
<>
<Button type="danger" shape="circle" onClick={handleClickDelete}>
Delete Workspace
</Button>
<WorkspaceDelete
open={showDelete}
onClose={handleCloseDelete}
workspaceName={workspaceName}
workspaceId={workspace.id}
nextWorkSpaceId={nextWorkSpaceId}
/>
</>
) : (
<>
<Button type="danger" shape="circle" onClick={handleClickLeave}>
Leave Workspace
</Button>
<WorkspaceLeave
open={showLeave}
onClose={handleCloseLeave}
workspaceName={workspaceName}
workspaceId={workspace.id}
nextWorkSpaceId={nextWorkSpaceId}
/>
</>
)}
</StyledDeleteButtonContainer>
</div>
) : null;
@@ -7,6 +7,9 @@ import {
} from './style';
import { ModalCloseButton } from '@/ui/modal';
import { Button } from '@/ui/button';
import { leaveWorkspace } from '@pathfinder/data-services';
import { Router, useRouter } from 'next/router';
import { useAppState } from '@/providers/app-state-provider';
interface WorkspaceDeleteProps {
open: boolean;
@@ -16,9 +19,19 @@ interface WorkspaceDeleteProps {
nextWorkSpaceId: string;
}
export const WorkspaceDelete = ({ open, onClose }: WorkspaceDeleteProps) => {
export const WorkspaceLeave = ({
open,
onClose,
nextWorkSpaceId,
workspaceId,
}: WorkspaceDeleteProps) => {
const router = useRouter();
const { refreshWorkspacesMeta } = useAppState();
const handleLeave = async () => {
// TODO
await leaveWorkspace({ id: workspaceId });
router.push(`/workspace/${nextWorkSpaceId}`);
refreshWorkspacesMeta();
onClose();
};
return (
@@ -48,4 +61,4 @@ export const WorkspaceDelete = ({ open, onClose }: WorkspaceDeleteProps) => {
);
};
export default WorkspaceDelete;
export default WorkspaceLeave;
@@ -163,3 +163,10 @@ export async function getBlob(params: {
}): Promise<ArrayBuffer> {
return client.get(`/api/blob/${params.blobId}`).arrayBuffer();
}
export interface LeaveWorkspaceParams {
id: number | string;
}
export async function leaveWorkspace({ id }: LeaveWorkspaceParams) {
await client.delete(`/api/workspace/${id}/permission`).json();
}