Skip to content

Commit 853f0fa

Browse files
committed
refactor: expose filterStore as a factory
1 parent 702a192 commit 853f0fa

File tree

1 file changed

+39
-13
lines changed

1 file changed

+39
-13
lines changed

web/filterAST/store/filterStore.ts

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -334,17 +334,43 @@ export const createFilterStore = (
334334
};
335335
};
336336

337-
export const useFilterStore = create<FilterState>()(
338-
persist(
339-
(set, get) => buildFilterStore(set, get) as FilterState,
340-
{
341-
name: "helicone-filter-storage",
342-
partialize: (state) => ({
343-
filter: state.filter,
344-
activeFilterId: state.activeFilterId,
345-
activeFilterName: state.activeFilterName,
346-
hasUnsavedChanges: state.hasUnsavedChanges,
337+
export type MakeFilterStoreOptions = {
338+
storageKey?: string;
339+
initialState?: Partial<FilterState>;
340+
partialize?: (state: FilterState) => Partial<FilterState>;
341+
};
342+
343+
export const makeFilterStore = (options?: MakeFilterStoreOptions) => {
344+
const { storageKey = "helicone-filter-storage", initialState, partialize } =
345+
options || {};
346+
347+
return create<FilterState>()(
348+
persist(
349+
(set, get) => ({
350+
...(buildFilterStore(set, get) as FilterState),
351+
...(initialState || {}),
347352
}),
348-
},
349-
),
350-
);
353+
{
354+
name: storageKey,
355+
partialize:
356+
partialize ||
357+
((state) => ({
358+
filter: state.filter,
359+
activeFilterId: state.activeFilterId,
360+
activeFilterName: state.activeFilterName,
361+
hasUnsavedChanges: state.hasUnsavedChanges,
362+
})),
363+
},
364+
),
365+
);
366+
};
367+
368+
export const useFilterStore = makeFilterStore({
369+
storageKey: "helicone-filter-storage",
370+
partialize: (state) => ({
371+
filter: state.filter,
372+
activeFilterId: state.activeFilterId,
373+
activeFilterName: state.activeFilterName,
374+
hasUnsavedChanges: state.hasUnsavedChanges,
375+
}),
376+
});

0 commit comments

Comments
 (0)