akanjs 3.0.0-alpha.86 → 3.0.0-alpha.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "3.0.0-alpha.86",
3
+ "version": "3.0.0-alpha.87",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/ui/Load/Units.tsx CHANGED
@@ -65,7 +65,7 @@ function Render<RefName extends string, Light extends { id: string }>({
65
65
  pagination,
66
66
  staleTime,
67
67
  }: RenderProps<RefName, Light>) {
68
- const loaded = useRef(false);
68
+ const loadedQueryArgs = useRef<object[] | null>(null);
69
69
  const storeUse = st.use as { [key: string]: () => unknown };
70
70
  const storeDo = st.do as unknown as { [key: string]: (...args: any[]) => Promise<void> };
71
71
  const storeGet = st.get as unknown as <T>() => { [key: string]: T };
@@ -114,23 +114,26 @@ function Render<RefName extends string, Light extends { id: string }>({
114
114
  const initModelObjInsight = (init as DynamicRecord)[names.modelObjInsight] as BaseInsight | null;
115
115
  const initLimitOfModel = (init as DynamicRecord)[names.limitOfModel] as number;
116
116
  const initPageOfModel = (init as DynamicRecord)[names.pageOfModel] as number;
117
+ const initSignature = JSON.stringify(initQueryArgs);
117
118
 
118
119
  const useCache =
119
120
  !modelListLoading &&
120
121
  isQueryEqual(storeGet<object[]>()[namesOfSlice.queryArgsOfModel], initQueryArgs) &&
121
122
  storeGet<Date>()[namesOfSlice.modelInitAt].getTime() >= initModelInitAt.getTime();
122
- if (useCache) loaded.current = true;
123
+ if (useCache) loadedQueryArgs.current = initQueryArgs;
124
+
125
+ const loaded = !!loadedQueryArgs.current && isQueryEqual(loadedQueryArgs.current, initQueryArgs);
123
126
 
124
127
  const modelInitList = useMemo<DataList<Light>>(() => {
125
- if (loaded.current) return modelList;
128
+ if (loaded) return modelList;
126
129
  const initModelObjList = (init as DynamicRecord)[names.modelObjList] as Light[];
127
130
  return new DataList<Light>(
128
131
  withSharedInstances(() => initModelObjList.map((model) => new cnst.light().set(model) as unknown as Light)),
129
132
  );
130
- }, []);
133
+ }, [initSignature]);
131
134
 
132
135
  useEffect(() => {
133
- if (loaded.current) return;
136
+ if (loaded) return;
134
137
  const modelObjInsight = (init as DynamicRecord)[names.modelObjInsight] as BaseInsight | null;
135
138
 
136
139
  const insight = new cnst.insight().set(
@@ -153,8 +156,8 @@ function Render<RefName extends string, Light extends { id: string }>({
153
156
  [namesOfSlice.queryArgsOfModel]: initQueryArgsOfModel,
154
157
  [namesOfSlice.sortOfModel]: initSortOfModel,
155
158
  });
156
- loaded.current = true;
157
- }, []);
159
+ loadedQueryArgs.current = initQueryArgs;
160
+ }, [initSignature]);
158
161
 
159
162
  useEffect(() => {
160
163
  const modelStaleAt = storeGet<Date>()[namesOfSlice.modelStaleAt];
@@ -162,15 +165,15 @@ function Render<RefName extends string, Light extends { id: string }>({
162
165
  if (storeGet<Date>()[namesOfSlice.modelInitAt].getTime() >= staleThreshold) return;
163
166
  if (storeGet<boolean>()[namesOfSlice.modelListLoading]) return;
164
167
  void storeDo[namesOfSlice.refreshModel]({ invalidate: true });
165
- }, []);
168
+ }, [initSignature]);
166
169
 
167
170
  const modelInsight = storeUse[namesOfSlice.modelInsight]() as BaseInsight;
168
171
  const limitOfModel = storeUse[namesOfSlice.limitOfModel]() as number;
169
172
  const pageOfModel = storeUse[namesOfSlice.pageOfModel]() as number;
170
- const insight = loaded.current ? modelInsight : initModelObjInsight;
171
- const limit = loaded.current ? limitOfModel : initLimitOfModel;
172
- const page = loaded.current ? pageOfModel : initPageOfModel;
173
- const total = insight?.count ?? (loaded.current ? modelList : modelInitList).length;
173
+ const insight = loaded ? modelInsight : initModelObjInsight;
174
+ const limit = loaded ? limitOfModel : initLimitOfModel;
175
+ const page = loaded ? pageOfModel : initPageOfModel;
176
+ const total = insight?.count ?? (loaded ? modelList : modelInitList).length;
174
177
  const moreProps = {
175
178
  total,
176
179
  currentPage: page,
@@ -197,7 +200,7 @@ function Render<RefName extends string, Light extends { id: string }>({
197
200
  onSelect: (page) => moreProps.onPageSelect(page, { scrollToTop: false }),
198
201
  });
199
202
 
200
- const modelDataList = !loaded.current ? modelInitList.filter(filter).sort(sort) : modelList.filter(filter).sort(sort);
203
+ const modelDataList = !loaded ? modelInitList.filter(filter).sort(sort) : modelList.filter(filter).sort(sort);
201
204
  const scopePath = useScreenScope({
202
205
  id: sliceName,
203
206
  kind: refName,
@@ -207,7 +210,7 @@ function Render<RefName extends string, Light extends { id: string }>({
207
210
  return { id: item.id, ...(label ? { label } : {}) };
208
211
  }),
209
212
  });
210
- const showLoading = loaded.current && modelListLoading;
213
+ const showLoading = loaded && modelListLoading;
211
214
  if (renderList)
212
215
  return (
213
216
  <>