Skip to content

Commit

Permalink
fix(web): wrong workspace when sharing link (#506)
Browse files Browse the repository at this point in the history
Co-authored-by: nina992 <nouralali992@gmail.com>
Co-authored-by: Piyush Chauhan <42397980+pyshx@users.noreply.github.com>
  • Loading branch information
3 people committed Jun 23, 2023
1 parent 36ddb20 commit 5b939eb
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 46 deletions.
18 changes: 8 additions & 10 deletions web/src/beta/features/Navbar/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,14 @@ export default (sceneId: string) => {
const handleWorkspaceModalClose = useCallback(() => setWorkspaceModalVisible(false), []);

useEffect(() => {
if (!currentWorkspace && lastWorkspace) setWorkspace(lastWorkspace);
}, [currentWorkspace, lastWorkspace, setWorkspace]);

useEffect(() => {
if (currentWorkspace) return;
const workspace = workspaces?.find(t => t.id === workspaceId);
if (!workspace) return;
setWorkspace(workspace);
setLastWorkspace(currentWorkspace);
}, [workspaces, currentWorkspace, setWorkspace, setLastWorkspace, workspaceId]);
if (!currentWorkspace && lastWorkspace && workspaceId == lastWorkspace.id)
setWorkspace(lastWorkspace);
else {
const workspace = workspaces?.find(workspace => workspace.id === workspaceId);
setWorkspace(workspace);
setLastWorkspace(workspace);
}
}, [currentWorkspace, lastWorkspace, setLastWorkspace, setWorkspace, workspaceId, workspaces]);

useEffect(() => {
setProject(p =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ export type Project = {
export type Props = {
currentProject?: Project;
currentProjectStatus?: Status;
teamId?: string;
workspaceId?: string;
onPublishmentStatusClick?: (p: publishingType) => void;
onPreviewOpen?: () => void;
} & CommonHeaderProps;

const Header: React.FC<Props> = ({
currentProject,
currentProjectStatus,
teamId,
workspaceId,
onPublishmentStatusClick,
onPreviewOpen,
...props
Expand All @@ -53,7 +53,7 @@ const Header: React.FC<Props> = ({
}, [currentProjectStatus]);

const center = currentProject && (
<ProjectMenu currentProject={currentProject} workspaceId={teamId} />
<ProjectMenu currentProject={currentProject} workspaceId={workspaceId} />
);

const right = (
Expand Down
24 changes: 17 additions & 7 deletions web/src/classic/components/organisms/Dashboard/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ export default (workspaceId?: string) => {
const t = useT();
const navigate = useNavigate();

useEffect(() => {
if (!currentWorkspace && lastWorkspace) setCurrentWorkspace(lastWorkspace);
}, [currentWorkspace, lastWorkspace, setCurrentWorkspace]);

const toPublishmentStatus = (s: PublishmentStatus) =>
s === PublishmentStatus.Public
? "published"
Expand All @@ -64,14 +60,28 @@ export default (workspaceId?: string) => {
const gqlCache = useApolloClient().cache;

useEffect(() => {
if (workspace?.id && workspace.id !== currentWorkspace?.id) {
if (!currentWorkspace && lastWorkspace && lastWorkspace.id === workspaceId)
setCurrentWorkspace(lastWorkspace);
else if (workspace) {
setCurrentWorkspace({
personal,
...workspace,
});
setLastWorkspace(currentWorkspace);
setLastWorkspace({
personal,
...workspace,
});
}
}, [currentWorkspace, workspace, setCurrentWorkspace, personal, setLastWorkspace]);
}, [
currentWorkspace,
workspace,
setCurrentWorkspace,
personal,
setLastWorkspace,
lastWorkspace,
workspaceId,
workspaces,
]);

const handleWorkspaceChange = useCallback(
(workspaceId: string) => {
Expand Down
44 changes: 22 additions & 22 deletions web/src/classic/components/organisms/EarthEditor/Header/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@ export default () => {

const [projectAlias, setProjectAlias] = useState<string | undefined>();

const { data: teamsData } = useGetTeamsQuery();
const teams = teamsData?.me?.teams;
const { data: WorkspacesData } = useGetTeamsQuery();
const workspaces = WorkspacesData?.me?.teams;

const { data } = useGetProjectBySceneQuery({
variables: { sceneId: sceneId ?? "" },
skip: !sceneId,
});
const teamId = data?.node?.__typename === "Scene" ? data.node.teamId : undefined;

const workspaceId = data?.node?.__typename === "Scene" ? data.node.teamId : undefined;
const project = useMemo(
() =>
data?.node?.__typename === "Scene" && data.node.project
Expand All @@ -63,7 +64,7 @@ export default () => {
);

const user: User = {
name: teamsData?.me?.name || "",
name: WorkspacesData?.me?.name || "",
};

const [validAlias, setValidAlias] = useState(false);
Expand All @@ -80,9 +81,16 @@ export default () => {
},
[checkProjectAliasQuery, project],
);

useEffect(() => {
if (!currentWorkspace && lastWorkspace) setWorkspace(lastWorkspace);
}, [currentWorkspace, lastWorkspace, setWorkspace]);
if (!currentWorkspace && lastWorkspace && workspaceId == lastWorkspace.id)
setWorkspace(lastWorkspace);
else {
const workspace = workspaces?.find(workspace => workspace.id === workspaceId);
setWorkspace(workspace);
setLastWorkspace(workspace);
}
}, [currentWorkspace, lastWorkspace, setLastWorkspace, setWorkspace, workspaceId, workspaces]);

useEffect(() => {
setValidAlias(
Expand All @@ -94,14 +102,6 @@ export default () => {
);
}, [validatingAlias, checkProjectAliasData, project]);

useEffect(() => {
if (currentWorkspace) return;
const team = teams?.find(t => t.id === teamId);
if (!team) return;
setWorkspace(team);
setLastWorkspace(currentWorkspace);
}, [teams, currentWorkspace, teamId, setWorkspace, setLastWorkspace]);

useEffect(() => {
setProject(p =>
p?.id !== project?.id
Expand Down Expand Up @@ -171,16 +171,16 @@ export default () => {
);

const handleTeamChange = useCallback(
(teamId: string) => {
const team = teams?.find(team => team.id === teamId);
if (team && teamId !== currentWorkspace?.id) {
setWorkspace(team);
(workspaceId: string) => {
const workspace = workspaces?.find(workspace => workspace.id === workspaceId);
if (workspace && workspaceId !== currentWorkspace?.id) {
setWorkspace(workspace);
setLastWorkspace(currentWorkspace);

navigate(`/dashboard/${teamId}`);
navigate(`/dashboard/${workspaceId}`);
}
},
[teams, currentWorkspace, setWorkspace, setLastWorkspace, navigate],
[workspaces, currentWorkspace, setWorkspace, setLastWorkspace, navigate],
);

const [createTeamMutation] = useCreateTeamMutation();
Expand Down Expand Up @@ -217,8 +217,8 @@ export default () => {
}, [t, setNotification]);

return {
teams,
teamId,
workspaces,
workspaceId,
publicationModalVisible,
searchIndex,
publishing,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export type Props = {

const Header: React.FC<Props> = ({ className }) => {
const {
teams = [],
teamId,
workspaces = [],
workspaceId,
publicationModalVisible,
searchIndex,
publishing,
Expand Down Expand Up @@ -51,8 +51,8 @@ const Header: React.FC<Props> = ({ className }) => {
currentProjectStatus={projectStatus}
currentProject={currentProject}
user={user}
workspaces={teams}
teamId={teamId}
workspaces={workspaces}
workspaceId={workspaceId}
currentWorkspace={currentWorkspace}
modalShown={workspaceModalVisible}
onPublishmentStatusClick={handlePublicationModalOpen}
Expand Down

0 comments on commit 5b939eb

Please sign in to comment.