Skip to content

Commit 732c537

Browse files
committed
fix: Setting browse state when not synced with URL
...and a refactor to not implicitly merge the new state with old state when synced with URL.
1 parent d8b5bab commit 732c537

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

app/browser/context.tsx

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ const useBrowseParamsStateWithUrlSync = (initialState: BrowseParams) => {
125125
) => {
126126
rawSetState((curState) => {
127127
const newState = {
128-
...curState,
129128
...(stateUpdate instanceof Function
130129
? stateUpdate(curState)
131130
: stateUpdate),
@@ -168,14 +167,18 @@ const createUseBrowseState = ({ syncWithUrl }: { syncWithUrl: boolean }) => {
168167
const dataset = type === "dataset" ? iri : paramDataset;
169168
const filters = getFiltersFromParams(browseParams);
170169

171-
const setSearch = useEvent((v: string) => setParams({ search: v }));
170+
const setSearch = useEvent((v: string) =>
171+
setParams((prev) => ({ ...prev, search: v }))
172+
);
172173
const setIncludeDrafts = useEvent((v: boolean) =>
173-
setParams({ includeDrafts: v })
174+
setParams((prev) => ({ ...prev, includeDrafts: v }))
174175
);
175176
const setOrder = useEvent((v: SearchCubeResultOrder) =>
176-
setParams({ order: v })
177+
setParams((prev) => ({ ...prev, order: v }))
178+
);
179+
const setDataset = useEvent((v: string) =>
180+
setParams((prev) => ({ ...prev, dataset: v }))
177181
);
178-
const setDataset = useEvent((v: string) => setParams({ dataset: v }));
179182

180183
const previousOrderRef = useRef<SearchCubeResultOrder>(
181184
SearchCubeResultOrder.Score
@@ -187,16 +190,21 @@ const createUseBrowseState = ({ syncWithUrl }: { syncWithUrl: boolean }) => {
187190
includeDrafts: !!includeDrafts,
188191
setIncludeDrafts,
189192
onReset: () => {
190-
setParams({ search: "", order: SearchCubeResultOrder.CreatedDesc });
193+
setParams((prev) => ({
194+
...prev,
195+
search: "",
196+
order: SearchCubeResultOrder.CreatedDesc,
197+
}));
191198
},
192199
onSubmitSearch: (newSearch: string) => {
193-
setParams({
200+
setParams((prev) => ({
201+
...prev,
194202
search: newSearch,
195203
order:
196204
newSearch === ""
197205
? SearchCubeResultOrder.CreatedDesc
198206
: previousOrderRef.current,
199-
});
207+
}));
200208
},
201209
search,
202210
order,
@@ -210,8 +218,8 @@ const createUseBrowseState = ({ syncWithUrl }: { syncWithUrl: boolean }) => {
210218
setDataset,
211219
filters,
212220
setFilters: (filters: BrowseFilter[]) => {
213-
setParams((params) => ({
214-
...params,
221+
setParams((prev) => ({
222+
...prev,
215223
...getParamsFromFilters(filters),
216224
}));
217225
},

0 commit comments

Comments
 (0)