mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-18 07:24:07 +01:00
Performance sweep (#147)
This commit is contained in:
@@ -1,19 +1,25 @@
|
||||
import { useParams } from '@tanstack/react-router';
|
||||
import type { Workspace } from '@yaakapp-internal/models';
|
||||
import { useMemo } from 'react';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { atom, useAtomValue } from 'jotai/index';
|
||||
import { useEffect } from 'react';
|
||||
import { jotaiStore } from '../routes/__root';
|
||||
import { useWorkspaces } from './useWorkspaces';
|
||||
|
||||
export const activeWorkspaceIdAtom = atom<string>();
|
||||
|
||||
export function useActiveWorkspace(): Workspace | null {
|
||||
const workspaceId = useActiveWorkspaceId();
|
||||
const workspaces = useWorkspaces();
|
||||
|
||||
return useMemo(
|
||||
() => workspaces.find((w) => w.id === workspaceId) ?? null,
|
||||
[workspaces, workspaceId],
|
||||
);
|
||||
return workspaces.find((w) => w.id === workspaceId) ?? null;
|
||||
}
|
||||
|
||||
function useActiveWorkspaceId(): string | null {
|
||||
const { workspaceId } = useParams();
|
||||
return workspaceId ?? null;
|
||||
return useAtomValue(activeWorkspaceIdAtom) ?? null;
|
||||
}
|
||||
|
||||
export function useSubscribeActiveWorkspaceId() {
|
||||
const { workspaceId } = useParams({ strict: false });
|
||||
useEffect(() => {
|
||||
jotaiStore.set(activeWorkspaceIdAtom, workspaceId);
|
||||
}, [workspaceId]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user