Add selectedLogs, rename setSelectedProjectId
This commit is contained in:
@@ -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"
|
||||
|
||||
25
app/src/state/selectedLogsSlice.ts
Normal file
25
app/src/state/selectedLogsSlice.ts
Normal 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);
|
||||
}
|
||||
}),
|
||||
});
|
||||
@@ -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,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user