mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-23 21:06:22 +08:00
feat: member init
This commit is contained in:
@@ -21,7 +21,6 @@ interface WorkspaceDeleteProps {
|
|||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
workspaceName: string;
|
workspaceName: string;
|
||||||
workspaceId: string;
|
workspaceId: string;
|
||||||
nextWorkSpaceId: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const WorkspaceDelete = ({
|
export const WorkspaceDelete = ({
|
||||||
@@ -29,7 +28,6 @@ export const WorkspaceDelete = ({
|
|||||||
onClose,
|
onClose,
|
||||||
workspaceId,
|
workspaceId,
|
||||||
workspaceName,
|
workspaceName,
|
||||||
nextWorkSpaceId,
|
|
||||||
}: WorkspaceDeleteProps) => {
|
}: WorkspaceDeleteProps) => {
|
||||||
const [deleteStr, setDeleteStr] = useState<string>('');
|
const [deleteStr, setDeleteStr] = useState<string>('');
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import Input from '@/ui/input';
|
|||||||
import { getDataCenter } from '@affine/datacenter';
|
import { getDataCenter } from '@affine/datacenter';
|
||||||
import { useAppState } from '@/providers/app-state-provider';
|
import { useAppState } from '@/providers/app-state-provider';
|
||||||
import { WorkspaceDelete } from './delete';
|
import { WorkspaceDelete } from './delete';
|
||||||
import { Workspace as StoreWorkspace } from '@blocksuite/store';
|
|
||||||
import { debounce } from '@/utils';
|
import { debounce } from '@/utils';
|
||||||
import { WorkspaceLeave } from './leave';
|
import { WorkspaceLeave } from './leave';
|
||||||
import { Upload } from '@/components/file-upload';
|
import { Upload } from '@/components/file-upload';
|
||||||
@@ -23,18 +22,8 @@ import {
|
|||||||
Workspace,
|
Workspace,
|
||||||
} from '@/hooks/mock-data/mock';
|
} from '@/hooks/mock-data/mock';
|
||||||
|
|
||||||
export const GeneralPage = ({
|
export const GeneralPage = ({ workspace }: { workspace: Workspace }) => {
|
||||||
workspace,
|
const { currentWorkspace, refreshWorkspacesMeta } = useAppState();
|
||||||
}: {
|
|
||||||
workspace: Workspace;
|
|
||||||
workspaces: Record<string, StoreWorkspace | null>;
|
|
||||||
}) => {
|
|
||||||
const {
|
|
||||||
currentWorkspace,
|
|
||||||
workspacesMeta,
|
|
||||||
workspaces,
|
|
||||||
refreshWorkspacesMeta,
|
|
||||||
} = useAppState();
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setWorkspaceName(workspace.name);
|
setWorkspaceName(workspace.name);
|
||||||
const user = getUserInfo();
|
const user = getUserInfo();
|
||||||
@@ -53,13 +42,6 @@ export const GeneralPage = ({
|
|||||||
const handleChangeWorkSpaceName = (newName: string) => {
|
const handleChangeWorkSpaceName = (newName: string) => {
|
||||||
setWorkspaceName(newName);
|
setWorkspaceName(newName);
|
||||||
};
|
};
|
||||||
const currentWorkspaceIndex = workspacesMeta.findIndex(
|
|
||||||
meta => meta.id === workspace.id
|
|
||||||
);
|
|
||||||
const nextWorkSpaceId =
|
|
||||||
currentWorkspaceIndex === workspacesMeta.length - 1
|
|
||||||
? workspacesMeta[currentWorkspaceIndex - 1]?.id
|
|
||||||
: workspacesMeta[currentWorkspaceIndex + 1]?.id;
|
|
||||||
const handleClickDelete = () => {
|
const handleClickDelete = () => {
|
||||||
setShowDelete(true);
|
setShowDelete(true);
|
||||||
};
|
};
|
||||||
@@ -87,7 +69,7 @@ export const GeneralPage = ({
|
|||||||
});
|
});
|
||||||
if (blobId) {
|
if (blobId) {
|
||||||
currentWorkspace?.meta.setAvatar(blobId);
|
currentWorkspace?.meta.setAvatar(blobId);
|
||||||
workspaces[workspace.id]?.meta.setAvatar(blobId);
|
// workspaces[workspace.id]?.meta.setAvatar(blobId);
|
||||||
setUploading(false);
|
setUploading(false);
|
||||||
debouncedRefreshWorkspacesMeta();
|
debouncedRefreshWorkspacesMeta();
|
||||||
}
|
}
|
||||||
@@ -97,15 +79,8 @@ export const GeneralPage = ({
|
|||||||
<div>
|
<div>
|
||||||
<StyledSettingH2 marginTop={56}>Workspace Avatar</StyledSettingH2>
|
<StyledSettingH2 marginTop={56}>Workspace Avatar</StyledSettingH2>
|
||||||
<StyledSettingAvatarContent>
|
<StyledSettingAvatarContent>
|
||||||
<StyledSettingAvatar
|
<StyledSettingAvatar alt="workspace avatar" src={''}>
|
||||||
alt="workspace avatar"
|
AFFiNE
|
||||||
src={
|
|
||||||
workspaces[workspace.id]?.meta.avatar
|
|
||||||
? '/api/blob/' + workspaces[workspace.id]?.meta.avatar
|
|
||||||
: ''
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{workspaces[workspace.id]?.meta.name[0]}
|
|
||||||
</StyledSettingAvatar>
|
</StyledSettingAvatar>
|
||||||
<Upload
|
<Upload
|
||||||
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"
|
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"
|
||||||
@@ -169,7 +144,6 @@ export const GeneralPage = ({
|
|||||||
onClose={handleCloseDelete}
|
onClose={handleCloseDelete}
|
||||||
workspaceName={workspaceName}
|
workspaceName={workspaceName}
|
||||||
workspaceId={workspace.id}
|
workspaceId={workspace.id}
|
||||||
nextWorkSpaceId={nextWorkSpaceId}
|
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@@ -182,7 +156,6 @@ export const GeneralPage = ({
|
|||||||
onClose={handleCloseLeave}
|
onClose={handleCloseLeave}
|
||||||
workspaceName={workspaceName}
|
workspaceName={workspaceName}
|
||||||
workspaceId={workspace.id}
|
workspaceId={workspace.id}
|
||||||
nextWorkSpaceId={nextWorkSpaceId}
|
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -16,13 +16,11 @@ interface WorkspaceDeleteProps {
|
|||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
workspaceName: string;
|
workspaceName: string;
|
||||||
workspaceId: string;
|
workspaceId: string;
|
||||||
nextWorkSpaceId: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const WorkspaceLeave = ({
|
export const WorkspaceLeave = ({
|
||||||
open,
|
open,
|
||||||
onClose,
|
onClose,
|
||||||
nextWorkSpaceId,
|
|
||||||
workspaceId,
|
workspaceId,
|
||||||
}: WorkspaceDeleteProps) => {
|
}: WorkspaceDeleteProps) => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -30,7 +28,7 @@ export const WorkspaceLeave = ({
|
|||||||
const handleLeave = async () => {
|
const handleLeave = async () => {
|
||||||
const dc = await getDataCenter();
|
const dc = await getDataCenter();
|
||||||
await dc.apis.leaveWorkspace({ id: workspaceId });
|
await dc.apis.leaveWorkspace({ id: workspaceId });
|
||||||
router.push(`/workspace/${nextWorkSpaceId}`);
|
// router.push(`/workspace/${nextWorkSpaceId}`);
|
||||||
refreshWorkspacesMeta();
|
refreshWorkspacesMeta();
|
||||||
onClose();
|
onClose();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -45,7 +45,9 @@ import { useAppState } from '@/providers/app-state-provider';
|
|||||||
import { GeneralPage } from './general';
|
import { GeneralPage } from './general';
|
||||||
import {
|
import {
|
||||||
getActiveWorkspace,
|
getActiveWorkspace,
|
||||||
|
getUserInfo,
|
||||||
setWorkspacePublish,
|
setWorkspacePublish,
|
||||||
|
User,
|
||||||
Workspace,
|
Workspace,
|
||||||
} from '@/hooks/mock-data/mock';
|
} from '@/hooks/mock-data/mock';
|
||||||
|
|
||||||
@@ -109,7 +111,7 @@ export const WorkspaceSetting = ({
|
|||||||
isShow,
|
isShow,
|
||||||
onClose,
|
onClose,
|
||||||
}: WorkspaceSettingProps) => {
|
}: WorkspaceSettingProps) => {
|
||||||
const { workspaces } = useAppState();
|
// const { workspaces } = useAppState();
|
||||||
const [activeTab, setActiveTab] = useState<ActiveTab>(ActiveTab.general);
|
const [activeTab, setActiveTab] = useState<ActiveTab>(ActiveTab.general);
|
||||||
const handleTabChange = (tab: ActiveTab) => {
|
const handleTabChange = (tab: ActiveTab) => {
|
||||||
setActiveTab(tab);
|
setActiveTab(tab);
|
||||||
@@ -143,7 +145,7 @@ export const WorkspaceSetting = ({
|
|||||||
) : null}
|
) : null}
|
||||||
<StyledSettingContent>
|
<StyledSettingContent>
|
||||||
{activeTab === ActiveTab.general && (
|
{activeTab === ActiveTab.general && (
|
||||||
<GeneralPage workspace={workspace} workspaces={workspaces} />
|
<GeneralPage workspace={workspace} />
|
||||||
)}
|
)}
|
||||||
{activeTab === ActiveTab.members && workspace && (
|
{activeTab === ActiveTab.members && workspace && (
|
||||||
<MembersPage workspace={workspace} />
|
<MembersPage workspace={workspace} />
|
||||||
@@ -160,23 +162,27 @@ export const WorkspaceSetting = ({
|
|||||||
const MembersPage = ({ workspace }: { workspace: Workspace }) => {
|
const MembersPage = ({ workspace }: { workspace: Workspace }) => {
|
||||||
const [isInviteModalShow, setIsInviteModalShow] = useState(false);
|
const [isInviteModalShow, setIsInviteModalShow] = useState(false);
|
||||||
const [members, setMembers] = useState<Member[]>([]);
|
const [members, setMembers] = useState<Member[]>([]);
|
||||||
const refreshMembers = useCallback(() => {
|
const [userInfo, setUserInfo] = useState<User>();
|
||||||
getDataCenter()
|
// const refreshMembers = useCallback(() => {
|
||||||
.then(dc =>
|
// getDataCenter()
|
||||||
dc.apis.getWorkspaceMembers({
|
// .then(dc =>
|
||||||
id: workspace.id,
|
// dc.apis.getWorkspaceMembers({
|
||||||
})
|
// id: workspace.id,
|
||||||
)
|
// })
|
||||||
.then(data => {
|
// )
|
||||||
setMembers(data);
|
// .then(data => {
|
||||||
})
|
// setMembers(data);
|
||||||
.catch(err => {
|
// })
|
||||||
console.log(err);
|
// .catch(err => {
|
||||||
});
|
// console.log(err);
|
||||||
}, [workspace.id]);
|
// });
|
||||||
|
// }, [workspace.id]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
refreshMembers();
|
const user = getUserInfo();
|
||||||
}, [refreshMembers]);
|
user && setUserInfo(user);
|
||||||
|
// refreshMembers();
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -240,7 +246,7 @@ const MembersPage = ({ workspace }: { workspace: Workspace }) => {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
// console.log('data: ', data);
|
// console.log('data: ', data);
|
||||||
toast('Moved to Trash');
|
toast('Moved to Trash');
|
||||||
refreshMembers();
|
// refreshMembers();
|
||||||
});
|
});
|
||||||
// });
|
// });
|
||||||
}}
|
}}
|
||||||
@@ -280,7 +286,7 @@ const MembersPage = ({ workspace }: { workspace: Workspace }) => {
|
|||||||
setIsInviteModalShow(false);
|
setIsInviteModalShow(false);
|
||||||
}}
|
}}
|
||||||
onInviteSuccess={() => {
|
onInviteSuccess={() => {
|
||||||
refreshMembers();
|
// refreshMembers();
|
||||||
}}
|
}}
|
||||||
workspaceId={workspace.id}
|
workspaceId={workspace.id}
|
||||||
open={isInviteModalShow}
|
open={isInviteModalShow}
|
||||||
|
|||||||
-1
@@ -16,7 +16,6 @@ export const WorkspaceSelector = () => {
|
|||||||
setWorkspaceListShow(true);
|
setWorkspaceListShow(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const setWorkspace = () => {
|
const setWorkspace = () => {
|
||||||
const workspace = getActiveWorkspace();
|
const workspace = getActiveWorkspace();
|
||||||
setWorkSpace(workspace);
|
setWorkSpace(workspace);
|
||||||
|
|||||||
Reference in New Issue
Block a user