Skip to content

Commit 009509f

Browse files
committed
0.0.615
1 parent cf2e689 commit 009509f

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

imports/client.tsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2373,12 +2373,16 @@ export class DeepClient<L extends Link<Id> = Link<Id>> implements DeepClientInst
23732373
const o = { remote: true, count: false, sort: true, ...options };
23742374
const query = this.searchQuery(value, o);
23752375
let results;
2376-
if (o.remote) {
2376+
if (o.skip) {
2377+
results = { data: [] };
2378+
} if (o.remote) {
23772379
results = await this.select(query, { apply: o.apply, ...(o.count ? { aggregate: 'count' } : {}) });
23782380
} else {
23792381
results = { data: this.minilinks.select(query, { ...(o.count ? { aggregate: 'count' } : {}) }), query };
23802382
}
2381-
if (o.sort) {
2383+
if (o.skip) {
2384+
results.ids = {};
2385+
} if (o.sort) {
23822386
const sorted = sort(results.data, value);
23832387
results.data = sorted.data;
23842388
results.ids = sorted.ids;
@@ -2729,16 +2733,16 @@ export function useDeepQuery<Table extends 'links'|'numbers'|'strings'|'objects'
27292733
originalData: o?.aggregate ? result?.data?.q0?.aggregate : result?.data?.q0,
27302734
data: generated.data,
27312735
loading: generated.loading,
2732-
options: o,
2736+
options: o, //
27332737
deep,
2734-
links: [],
2735-
plainLinks: [],
2738+
links: [], //
2739+
plainLinks: [], //
27362740
// @ts-ignore
27372741
return: q?.return,
27382742
name: miniName,
27392743
};
27402744
const { data: minilinksResults, plainLinks } = useMinilinksApply(deep.minilinks, miniName, toReturn);
2741-
toReturn.data = o?.aggregate || o?.table !== 'links' ? toReturn.data || [] : minilinksResults;
2745+
toReturn.data = o?.aggregate || o?.table !== 'links' ? toReturn.data || [] : minilinksResults; //
27422746
toReturn.links = minilinksResults;
27432747
toReturn.plainLinks = plainLinks;
27442748
useMemo(() => {
@@ -2856,23 +2860,29 @@ export function sort(links, value) {
28562860
};
28572861
}
28582862

2863+
const defaultEmptyResults = { ids: {}, data: [] };
28592864
export function useSearch(value: string, options: DeepSearchOptions = {}) {
28602865
const deep = useDeep();
2861-
const o = useMemo(() => ({ skip: false, remote: true, count: false, sort: true, ...options }), [options]);
2866+
const prevOptionsRef = useRef<any>();
2867+
const o = useMemo(() => {
2868+
const newPrev = { skip: false, remote: true, count: false, sort: true, ...options };
2869+
if (!isEqual(prevOptionsRef.current, newPrev)) prevOptionsRef.current = newPrev;
2870+
return prevOptionsRef.current;
2871+
}, [options]);
28622872
const query = useMemo(() => this.searchQuery(value, o), [value, o]);
28632873
const qo = useMemo(() => ({ ...(o.count ? { aggregate: 'count' } : {}), skip: o.skip }), [o.count, o.skip]);
28642874
const useHook = useMemo(() => o.remote ? o.subscription ? deep.useSubscription : deep.useQuery : deep.useLocalQuery, [o.remote, o.subscription]);
28652875
const { _q, _o } = useDebouncedInput(query, qo, options?.debounce);
28662876
const _results: any = useHook(_q, _o as any);
2867-
const results = o.remote ? _results : { data: _results };
2877+
const results = useMemo(() => o.remote ? _results : { data: _results }, [_results]);
28682878
if (o.sort) {
2869-
const sorted = useMemo(() => sort(results.data, value), [results.data]);
2879+
const sorted = useMemo(() => o.skip ? defaultEmptyResults : sort(results.data, value), [results.data]);
28702880
results.data = sorted.data;
28712881
results.ids = sorted.ids;
28722882
} else {
28732883
results.ids = useMemo(() => {
28742884
const ids = {};
2875-
if (results?.data?.length) for (let i = 0; i < results.data.length; i++) ids[results?.data?.[i]?.id] = results?.data?.[i];
2885+
if (o.skip && results?.data?.length) for (let i = 0; i < results.data.length; i++) ids[results?.data?.[i]?.id] = results?.data?.[i];
28762886
return ids;
28772887
}, [results.data]);
28782888
}

imports/minilinks.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,7 @@ export function useMinilinksHandle<L extends Link<Id>>(ml, handler: (event, oldL
10291029
}, []);
10301030
};
10311031

1032+
const defaultMinilinksApplyResult = { errors: [], anomalies: [], data: [], plainLinks: [] };
10321033
export function useMinilinksApply<L extends Link<Id>>(ml, name: string, data?: Links<Id, L> | MinilinksApplyInput): {
10331034
errors?: MinilinkError[];
10341035
anomalies?: MinilinkError[];
@@ -1041,7 +1042,11 @@ export function useMinilinksApply<L extends Link<Id>>(ml, name: string, data?: L
10411042
if (ml) ml.apply(Array.isArray(data) ? [] : { ...data, data: [] }, strictName);
10421043
};
10431044
}, []);
1044-
if (ml) return ml.apply(data, strictName);
1045+
const results = useMemo(() => {
1046+
if (ml) return ml.apply(data, strictName);
1047+
return defaultMinilinksApplyResult;
1048+
}, [data]);
1049+
return results;
10451050
}
10461051

10471052
/**

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@deep-foundation/deeplinks",
3-
"version": "0.0.614",
3+
"version": "0.0.615",
44
"license": "Unlicense",
55
"type": "module",
66
"main": "import.js",

0 commit comments

Comments
 (0)