User userId instead of workspaceId in routing

This commit is contained in:
Hakan Shehu
2024-11-10 22:56:50 +01:00
parent 35182bdb3d
commit 4e12a7e66a
10 changed files with 28 additions and 11 deletions

View File

@@ -62,6 +62,7 @@ export class WorkspaceCreateMutationHandler
return {
output: {
id: data.id,
userId: data.user.id,
},
changes: [
{

View File

@@ -8,6 +8,7 @@ export type WorkspaceCreateMutationInput = {
export type WorkspaceCreateMutationOutput = {
id: string;
userId: string;
};
declare module '@/operations/mutations' {

View File

@@ -2,7 +2,7 @@ import React from 'react';
import { Login } from '@/renderer/components/accounts/login';
import { AppLoading } from '@/renderer/app-loading';
import { AccountContext } from '@/renderer/contexts/account';
import { Outlet } from 'react-router-dom';
import { Outlet, useParams } from 'react-router-dom';
import { AccountLogout } from '@/renderer/components/accounts/account-logout';
import { DelayedComponent } from '@/renderer/components/ui/delayed-component';
import { useQuery } from '@/renderer/hooks/use-query';
@@ -11,6 +11,7 @@ import { AccountSettingsDialog } from '@/renderer/components/accounts/account-se
export const App = () => {
const [showLogout, setShowLogout] = React.useState(false);
const [showAccountSettings, setShowAccountSettings] = React.useState(false);
const { userId } = useParams<{ userId: string }>();
const { data: servers, isPending: isPendingServers } = useQuery({
type: 'server_list',
@@ -37,7 +38,21 @@ export const App = () => {
return <Login />;
}
const account = accounts[0];
const workspace = workspaces?.find(
(workspace) => workspace.userId === userId
);
let account = accounts[0];
if (workspace) {
const workspaceAccount = accounts.find(
(account) => account.id === workspace.accountId
);
if (workspaceAccount) {
account = workspaceAccount;
}
}
const server = servers?.find((server) => server.domain === account?.server);
if (!server) {

View File

@@ -48,7 +48,7 @@ export const EmailLogin = ({ server }: EmailLoginProps) => {
onSuccess(output) {
if (output.success) {
if (output.workspaces.length > 0) {
navigate(`/${output.workspaces[0].id}`);
navigate(`/${output.workspaces[0].user.id}`);
} else {
navigate('/create');
}

View File

@@ -51,7 +51,7 @@ export const EmailRegister = ({ server }: EmailRegisterProps) => {
onSuccess(output) {
if (output.success) {
if (output.workspaces.length > 0) {
navigate(`/${output.workspaces[0].id}`);
navigate(`/${output.workspaces[0].user.id}`);
} else {
navigate('/create');
}

View File

@@ -71,7 +71,7 @@ export const SidebarHeader = () => {
<DropdownMenuItem
key={workspace.id}
onClick={() => {
navigate(`/${workspace.id}`);
navigate(`/${workspace.userId}`);
}}
className="gap-2 p-2"
>

View File

@@ -32,7 +32,7 @@ export const WorkspaceCreate = () => {
avatar: values.avatar ?? null,
},
onSuccess(output) {
navigate(`/${output.id}`);
navigate(`/${output.userId}`);
},
onError() {
toast({

View File

@@ -12,7 +12,7 @@ export const WorkspaceRedirect = (): React.ReactNode => {
return;
}
navigate(`/${account.workspaces[0].id}`);
navigate(`/${account.workspaces[0].userId}`);
}, [account.workspaces, navigate]);
return null;

View File

@@ -16,13 +16,13 @@ import {
} from '@/renderer/components/ui/sidebar';
export const Workspace = () => {
const { workspaceId } = useParams<{ workspaceId: string }>();
const { userId } = useParams<{ userId: string }>();
const account = useAccount();
const navigate = useNavigate();
const [searchParams, setSearchParams] = useSearchParams();
const [openSettings, setOpenSettings] = React.useState(false);
const workspace = account.workspaces.find((w) => w.id === workspaceId);
const workspace = account.workspaces.find((w) => w.userId === userId);
if (!workspace) {
return <p>Workspace not found</p>;
@@ -34,7 +34,7 @@ export const Workspace = () => {
value={{
...workspace,
navigateToNode(nodeId) {
navigate(`/${workspaceId}/${nodeId}`);
navigate(`/${userId}/${nodeId}`);
},
openModal(modal) {
setSearchParams((prev) => {

View File

@@ -25,7 +25,7 @@ const router = createHashRouter([
element: <WorkspaceCreate />,
},
{
path: ':workspaceId',
path: ':userId',
element: <Workspace />,
children: [
{