@arcote.tech/arc-react 0.7.15 → 0.7.17
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/dist/index.js
CHANGED
|
@@ -306,7 +306,7 @@ import {
|
|
|
306
306
|
StreamingEventPublisher,
|
|
307
307
|
StreamingQueryCache,
|
|
308
308
|
buildContextAccessor,
|
|
309
|
-
|
|
309
|
+
triggerModuleSync
|
|
310
310
|
} from "@arcote.tech/arc";
|
|
311
311
|
import {
|
|
312
312
|
createContext as createContext4,
|
|
@@ -449,8 +449,7 @@ Event payload:`, event.payload);
|
|
|
449
449
|
}
|
|
450
450
|
} else if (eventWire && queryWire) {
|
|
451
451
|
streamingCache = new StreamingQueryCache;
|
|
452
|
-
|
|
453
|
-
eventPublisher = new StreamingEventPublisher(streamingCache, eventWire);
|
|
452
|
+
eventPublisher = new StreamingEventPublisher(eventWire);
|
|
454
453
|
eventPublisher.registerViews(views);
|
|
455
454
|
if (authAdapter.isAuthenticated()) {
|
|
456
455
|
eventWire.connect();
|
|
@@ -512,18 +511,21 @@ Event payload:`, event.payload);
|
|
|
512
511
|
return scoped;
|
|
513
512
|
}
|
|
514
513
|
function createScope(name) {
|
|
515
|
-
function setToken(token) {
|
|
514
|
+
async function setToken(token) {
|
|
516
515
|
authAdapter.setToken(token, name);
|
|
516
|
+
let syncPromise;
|
|
517
517
|
if (cachedModel) {
|
|
518
|
-
cachedModel.scope(name).setToken(token);
|
|
519
|
-
cachedModel.getAdapters().streamingCache?.invalidateScope(name);
|
|
518
|
+
syncPromise = cachedModel.scope(name).setToken(token);
|
|
519
|
+
cachedModel.getAdapters().streamingCache?.invalidateScope(name, eventWire);
|
|
520
520
|
} else {
|
|
521
521
|
eventWire?.setScopeToken(name, token);
|
|
522
522
|
if (eventWire && token && eventWire.getState() === "disconnected") {
|
|
523
523
|
eventWire.connect();
|
|
524
524
|
}
|
|
525
|
+
syncPromise = triggerModuleSync(name);
|
|
525
526
|
}
|
|
526
527
|
notifyScopeTokenListeners(name);
|
|
528
|
+
await syncPromise;
|
|
527
529
|
}
|
|
528
530
|
function useToken() {
|
|
529
531
|
const [token, setTokenState] = useState3(() => authAdapter.getToken(name));
|
|
@@ -570,51 +572,30 @@ Event payload:`, event.payload);
|
|
|
570
572
|
return;
|
|
571
573
|
const unsubs = [];
|
|
572
574
|
const element = model.context.get(desc.element);
|
|
573
|
-
const qCtx = element?.queryContext?.(adapters);
|
|
574
|
-
const method = qCtx?.[desc.method];
|
|
575
|
-
const reExecute = async () => {
|
|
576
|
-
if (!method)
|
|
577
|
-
return;
|
|
578
|
-
try {
|
|
579
|
-
const result = await method(...desc.args);
|
|
580
|
-
setData(result);
|
|
581
|
-
setLoading(false);
|
|
582
|
-
} catch (err) {
|
|
583
|
-
console.error(`[Arc] Query error:`, err);
|
|
584
|
-
}
|
|
585
|
-
};
|
|
586
575
|
if (adapters.streamingCache) {
|
|
587
|
-
const
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
current = newResult;
|
|
602
|
-
changed = true;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
if (!changed)
|
|
606
|
-
return;
|
|
607
|
-
cachedResult = current;
|
|
608
|
-
reExecute();
|
|
576
|
+
const sub = adapters.streamingCache.subscribe(desc, name, adapters.eventWire, () => {
|
|
577
|
+
const snap = sub.read();
|
|
578
|
+
setData(snap.result);
|
|
579
|
+
setLoading(snap.loading);
|
|
580
|
+
});
|
|
581
|
+
unsubs.push(sub.unsubscribe);
|
|
582
|
+
const initial = sub.read();
|
|
583
|
+
setData(initial.result);
|
|
584
|
+
setLoading(initial.loading);
|
|
585
|
+
} else {
|
|
586
|
+
const qCtx = element?.queryContext?.(adapters);
|
|
587
|
+
const method = qCtx?.[desc.method];
|
|
588
|
+
const reExecute = async () => {
|
|
589
|
+
if (!method)
|
|
609
590
|
return;
|
|
591
|
+
try {
|
|
592
|
+
const result = await method(...desc.args);
|
|
593
|
+
setData(result);
|
|
594
|
+
setLoading(false);
|
|
595
|
+
} catch (err) {
|
|
596
|
+
console.error(`[Arc] Query error:`, err);
|
|
610
597
|
}
|
|
611
|
-
|
|
612
|
-
}));
|
|
613
|
-
unsubs.push(adapters.streamingCache.subscribeView(desc.element, adapters.eventWire, name));
|
|
614
|
-
if (store.hasData()) {
|
|
615
|
-
reExecute();
|
|
616
|
-
}
|
|
617
|
-
} else {
|
|
598
|
+
};
|
|
618
599
|
if (adapters.eventPublisher) {
|
|
619
600
|
const aggregateName = element?.name;
|
|
620
601
|
const eventTypes = element?.getElements?.()?.map((e) => aggregateName ? `${aggregateName}.${e.name}` : e.name) ?? [];
|
|
@@ -701,4 +682,4 @@ export {
|
|
|
701
682
|
Form
|
|
702
683
|
};
|
|
703
684
|
|
|
704
|
-
//# debugId=
|
|
685
|
+
//# debugId=4CA84684BEAF949D64756E2164756E21
|
|
@@ -21,7 +21,7 @@ export interface ScopeAPI<C extends ArcContextAny = ArcContextAny> {
|
|
|
21
21
|
}>;
|
|
22
22
|
useQuery: () => QueryAccessor<C>;
|
|
23
23
|
useMutation: () => MutationAccessor<C>;
|
|
24
|
-
setToken: (token: string | null) => void
|
|
24
|
+
setToken: (token: string | null) => Promise<void>;
|
|
25
25
|
useToken: () => string | null;
|
|
26
26
|
}
|
|
27
27
|
export declare const modelProviderFactory: <C extends ArcContextAny>(context: C, options: ReactModelOptions) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcote.tech/arc-react",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.17",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Przemysław Krasiński [arcote.tech]",
|
|
7
7
|
"description": "React client for the Arc framework, providing utilities for querying data and executing commands, enhancing the development of reactive and efficient user interfaces.",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"typescript": "^5.2.2"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@arcote.tech/arc": "^0.7.
|
|
35
|
+
"@arcote.tech/arc": "^0.7.17",
|
|
36
36
|
"react": "^18.0.0 || ^19.0.0",
|
|
37
37
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
38
38
|
"typescript": "^5.0.0"
|