Add selectedLogs, rename setSelectedProjectId

This commit is contained in:
David Corbitt
2023-08-12 03:35:54 -07:00
parent 5fa5109f34
commit 89815e1f7f
3 changed files with 36 additions and 8 deletions

View File

@@ -33,7 +33,7 @@ export default function ProjectMenu() {
const utils = api.useContext();
const selectedProjectId = useAppStore((s) => s.selectedProjectId);
const setselectedProjectId = useAppStore((s) => s.setselectedProjectId);
const setSelectedProjectId = useAppStore((s) => s.setSelectedProjectId);
const { data: projects } = api.projects.list.useQuery();
@@ -43,9 +43,9 @@ export default function ProjectMenu() {
projects[0] &&
(!selectedProjectId || !projects.find((proj) => proj.id === selectedProjectId))
) {
setselectedProjectId(projects[0].id);
setSelectedProjectId(projects[0].id);
}
}, [selectedProjectId, setselectedProjectId, projects]);
}, [selectedProjectId, setSelectedProjectId, projects]);
const { data: selectedProject } = useSelectedProject();
@@ -55,7 +55,7 @@ export default function ProjectMenu() {
const [createProject, isLoading] = useHandledAsyncCallback(async () => {
const newProj = await createMutation.mutateAsync({ name: "Untitled Project" });
await utils.projects.list.invalidate();
setselectedProjectId(newProj.id);
setSelectedProjectId(newProj.id);
await router.push({ pathname: "/project/settings" });
}, [createMutation, router]);
@@ -176,7 +176,7 @@ const ProjectOption = ({
isActive: boolean;
onClose: () => void;
}) => {
const setselectedProjectId = useAppStore((s) => s.setselectedProjectId);
const setSelectedProjectId = useAppStore((s) => s.setSelectedProjectId);
const [gearHovered, setGearHovered] = useState(false);
return (
@@ -184,7 +184,7 @@ const ProjectOption = ({
as={Link}
href="/experiments"
onClick={() => {
setselectedProjectId(proj.id);
setSelectedProjectId(proj.id);
onClose();
}}
w="full"

View File

@@ -0,0 +1,25 @@
import { type SliceCreator } from "./store";
export const editorBackground = "#fafafa";
export type SelectedLogsSlice = {
selectedLogIds: Set<string>;
setSelectedLogIds: (ids: Set<string>) => void;
toggleSelectedLogId: (id: string) => void;
};
export const createSelectedLogsSlice: SliceCreator<SelectedLogsSlice> = (set, get) => ({
selectedLogIds: new Set(),
setSelectedLogIds: (ids: Set<string>) =>
set((state) => {
state.selectedLogs.selectedLogIds = ids;
}),
toggleSelectedLogId: (id: string) =>
set((state) => {
if (state.selectedLogs.selectedLogIds.has(id)) {
state.selectedLogs.selectedLogIds.delete(id);
} else {
state.selectedLogs.selectedLogIds.add(id);
}
}),
});

View File

@@ -8,6 +8,7 @@ import {
} from "./sharedVariantEditor.slice";
import { type APIClient } from "~/utils/api";
import { persistOptions, type stateToPersist } from "./persist";
import { type SelectedLogsSlice, createSelectedLogsSlice } from "./selectedLogsSlice";
export type State = {
drawerOpen: boolean;
@@ -17,7 +18,8 @@ export type State = {
setApi: (api: APIClient) => void;
sharedVariantEditor: SharedVariantEditorSlice;
selectedProjectId: string | null;
setselectedProjectId: (id: string) => void;
setSelectedProjectId: (id: string) => void;
selectedLogs: SelectedLogsSlice;
};
export type SliceCreator<T> = StateCreator<State, [["zustand/immer", never]], [], T>;
@@ -48,10 +50,11 @@ const useBaseStore = create<
}),
sharedVariantEditor: createVariantEditorSlice(set, get, ...rest),
selectedProjectId: null,
setselectedProjectId: (id: string) =>
setSelectedProjectId: (id: string) =>
set((state) => {
state.selectedProjectId = id;
}),
selectedLogs: createSelectedLogsSlice(set, get, ...rest),
})),
persistOptions,
),