feat: member init

This commit is contained in:
DiamondThree
2023-01-05 19:21:35 +08:00
parent 2773b3e489
commit b6542b0245
5 changed files with 32 additions and 58 deletions
@@ -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}
@@ -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);