@oxy.so/services 12.12.0 → 12.13.0
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/lib/commonjs/ui/components/OxyProvider.js +2 -1
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useSupervision.js +45 -9
- package/lib/commonjs/ui/hooks/queries/useSupervision.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +2 -1
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/hooks/queries/useSupervision.js +45 -10
- package/lib/module/ui/hooks/queries/useSupervision.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSupervision.d.ts +22 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSupervision.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useSupervision.d.ts +22 -1
- package/lib/typescript/module/ui/hooks/queries/useSupervision.d.ts.map +1 -1
- package/package.json +5 -6
- package/src/ui/components/OxyProvider.tsx +2 -0
- package/src/ui/hooks/queries/__tests__/useSupervision.test.tsx +73 -0
- package/src/ui/hooks/queries/useSupervision.ts +43 -9
|
@@ -25,6 +25,7 @@ var _LanguageBridge = require("./LanguageBridge.js");
|
|
|
25
25
|
var _BloomLocaleBridge = require("./BloomLocaleBridge.js");
|
|
26
26
|
var _oxyRuntimeContext = require("../context/oxyRuntimeContext.js");
|
|
27
27
|
var _useAccountQueries = require("../hooks/queries/useAccountQueries.js");
|
|
28
|
+
var _useSupervision = require("../hooks/queries/useSupervision.js");
|
|
28
29
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
30
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /** Hydrate owner preferences after the bearer is ready, including on cold boot. */
|
|
30
31
|
function AccountProfileObserver() {
|
|
@@ -270,7 +271,7 @@ const OxyProvider = ({
|
|
|
270
271
|
platformStorage: platformStorage,
|
|
271
272
|
accountQueries: accountQueries,
|
|
272
273
|
onAuthStateChange: onAuthStateChange,
|
|
273
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AccountProfileObserver, {}), productAnalytics ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_productAnalytics.ProductAnalyticsObserver, {
|
|
274
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(AccountProfileObserver, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_useSupervision.SupervisionStateObserver, {}), productAnalytics ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_productAnalytics.ProductAnalyticsObserver, {
|
|
274
275
|
analytics: productAnalytics
|
|
275
276
|
}) : null, language ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_LanguageBridge.LanguageBridge, {
|
|
276
277
|
...language
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_oxySupportContext","require","_routes","_react","_reactNative","_reactNativeGestureHandler","_OxyContext","_reactQuery","_surfaces","_toast","_core","_RequireOxyAuth","_queryClient","_storageHelpers","_netConnectivity","_KeyboardBoundary","_SafeAreaRoot","_productAnalytics","_LanguageBridge","_BloomLocaleBridge","_oxyRuntimeContext","_useAccountQueries","_jsxRuntime","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AccountProfileObserver","canUsePrivateApi","useOxy","useCurrentUser","enabled","bootStyles","StyleSheet","create","providerRoot","flex","isWeb","Platform","OS","OxyProvider","oxyServices","children","onAuthStateChange","onAskAlia","documentationUrl","aliaAvatar","oxyOneArtwork","productAnalytics","storageKeyPrefix","clientId","baseURL","authWebUrl","authRedirectUri","authorizeBaseUrl","sessionMode","webAuthMode","queryClient","providedQueryClient","accountQueries","requireAuth","backgroundSession","language","support","useMemo","useEffect","loadScreens","catch","undefined","queryClientRef","useRef","persistenceUnsubRef","ownsQueryClientRef","accountQueriesRef","platformStorage","setPlatformStorage","useState","current","client","createQueryClient","mounted","bootstrap","storage","createPlatformStorage","error","__DEV__","loggerUtil","warn","component","createMemoryStorage","persistence","attachQueryPersistence","unsubscribe","restored","handleVisibilityChange","focusManager","setFocused","document","visibilityState","addEventListener","removeEventListener","subscription","AppState","state","remove","cleanup","setupNetworkMonitoring","onlineManager","setOnline","navigator","onLine","handleOnline","handleOffline","window","NetInfo","Promise","resolve","then","fetch","isNetConnectivityOnline","coreContent","jsx","QueryClientProvider","jsxs","OxyRuntimeProvider","ProductAnalyticsObserver","analytics","LanguageBridge","BloomLocaleBridge","OxySupportContext","Provider","value","SurfaceProvider","RequireOxyAuth","prompt","ToastOutlet","GestureHandlerRootView","style","SafeAreaRoot","KeyboardBoundary","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,KAAA,GAAAT,OAAA;AACA,IAAAU,eAAA,GAAAV,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AAKA,IAAAa,gBAAA,GAAAb,OAAA;AACA,IAAAc,iBAAA,GAAAd,OAAA;AACA,IAAAe,aAAA,GAAAf,OAAA;AACA,IAAAgB,iBAAA,GAAAhB,OAAA;AACA,IAAAiB,eAAA,GAAAjB,OAAA;AACA,IAAAkB,kBAAA,GAAAlB,OAAA;AACA,IAAAmB,kBAAA,GAAAnB,OAAA;AACA,IAAAoB,kBAAA,GAAApB,OAAA;
|
|
1
|
+
{"version":3,"names":["_oxySupportContext","require","_routes","_react","_reactNative","_reactNativeGestureHandler","_OxyContext","_reactQuery","_surfaces","_toast","_core","_RequireOxyAuth","_queryClient","_storageHelpers","_netConnectivity","_KeyboardBoundary","_SafeAreaRoot","_productAnalytics","_LanguageBridge","_BloomLocaleBridge","_oxyRuntimeContext","_useAccountQueries","_useSupervision","_jsxRuntime","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AccountProfileObserver","canUsePrivateApi","useOxy","useCurrentUser","enabled","bootStyles","StyleSheet","create","providerRoot","flex","isWeb","Platform","OS","OxyProvider","oxyServices","children","onAuthStateChange","onAskAlia","documentationUrl","aliaAvatar","oxyOneArtwork","productAnalytics","storageKeyPrefix","clientId","baseURL","authWebUrl","authRedirectUri","authorizeBaseUrl","sessionMode","webAuthMode","queryClient","providedQueryClient","accountQueries","requireAuth","backgroundSession","language","support","useMemo","useEffect","loadScreens","catch","undefined","queryClientRef","useRef","persistenceUnsubRef","ownsQueryClientRef","accountQueriesRef","platformStorage","setPlatformStorage","useState","current","client","createQueryClient","mounted","bootstrap","storage","createPlatformStorage","error","__DEV__","loggerUtil","warn","component","createMemoryStorage","persistence","attachQueryPersistence","unsubscribe","restored","handleVisibilityChange","focusManager","setFocused","document","visibilityState","addEventListener","removeEventListener","subscription","AppState","state","remove","cleanup","setupNetworkMonitoring","onlineManager","setOnline","navigator","onLine","handleOnline","handleOffline","window","NetInfo","Promise","resolve","then","fetch","isNetConnectivityOnline","coreContent","jsx","QueryClientProvider","jsxs","OxyRuntimeProvider","SupervisionStateObserver","ProductAnalyticsObserver","analytics","LanguageBridge","BloomLocaleBridge","OxySupportContext","Provider","value","SurfaceProvider","RequireOxyAuth","prompt","ToastOutlet","GestureHandlerRootView","style","SafeAreaRoot","KeyboardBoundary","_default","exports"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,35 +3,71 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.SupervisionStateObserver = SupervisionStateObserver;
|
|
6
7
|
exports.supervisionQueryKeys = void 0;
|
|
7
8
|
exports.useSupervision = useSupervision;
|
|
8
9
|
var _reactQuery = require("@tanstack/react-query");
|
|
10
|
+
var _client = require("@oxy.so/contracts/client");
|
|
9
11
|
var _oxyRuntimeContext = require("../../context/oxyRuntimeContext.js");
|
|
12
|
+
var _useOxyEvent = require("../useOxyEvent.js");
|
|
10
13
|
const supervisionQueryKeys = exports.supervisionQueryKeys = {
|
|
11
14
|
all: ['oxy', 'safety', 'supervision'],
|
|
12
15
|
account: (id, sessionId) => ['oxy', 'safety', 'supervision', id, sessionId]
|
|
13
16
|
};
|
|
14
|
-
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The signed-in personal account's supervision (parental-control) state.
|
|
20
|
+
*
|
|
21
|
+
* Policy: the SDK keeps the session's supervision state always current — it is
|
|
22
|
+
* fetched when the session is established, refetched when the app returns to
|
|
23
|
+
* the foreground, and refetched when the session socket signals
|
|
24
|
+
* `supervision_changed` (`SupervisionStateObserver`, mounted by `OxyProvider`).
|
|
25
|
+
* Screens read it from the cache without waiting for the network: no observer
|
|
26
|
+
* forces its own refetch on mount. `data` is undefined only while the session's
|
|
27
|
+
* first fetch is pending, when the query is disabled (signed out, or not a
|
|
28
|
+
* personal account) and after a failed fetch.
|
|
29
|
+
*
|
|
30
|
+
* Advisory UI state only. The server keeps enforcing supervision on every
|
|
31
|
+
* content request; never treat this value as authorization.
|
|
32
|
+
*/
|
|
15
33
|
function useSupervision() {
|
|
16
34
|
const {
|
|
17
35
|
oxyServices,
|
|
18
36
|
user,
|
|
19
|
-
|
|
37
|
+
canUsePrivateApi,
|
|
20
38
|
activeSessionId
|
|
21
39
|
} = (0, _oxyRuntimeContext.useOxy)();
|
|
22
40
|
const result = (0, _reactQuery.useQuery)({
|
|
23
41
|
queryKey: supervisionQueryKeys.account(user?.id ?? '', activeSessionId ?? ''),
|
|
24
42
|
queryFn: () => oxyServices.safety.supervisionState(),
|
|
25
|
-
enabled:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
43
|
+
enabled: canUsePrivateApi && !!activeSessionId && user?.kind === 'personal',
|
|
44
|
+
// Fresh until the socket signal or a return to the foreground says otherwise.
|
|
45
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
46
|
+
// The observer below keeps the current session's entry alive; this only
|
|
47
|
+
// bounds how long a previous session's entry outlives it.
|
|
48
|
+
gcTime: 30 * 60 * 1000,
|
|
49
|
+
refetchOnWindowFocus: 'always'
|
|
31
50
|
});
|
|
32
51
|
return {
|
|
33
52
|
...result,
|
|
34
|
-
data: result.
|
|
53
|
+
data: result.isError ? undefined : result.data
|
|
35
54
|
};
|
|
36
55
|
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Keeps the session's supervision state current for every `useSupervision()`
|
|
59
|
+
* reader: its observer fetches once the session is established and on each
|
|
60
|
+
* return to the foreground, and the `supervision_changed` socket signal
|
|
61
|
+
* refetches it. Rendered once by `OxyProvider`.
|
|
62
|
+
*/
|
|
63
|
+
function SupervisionStateObserver() {
|
|
64
|
+
const queryClient = (0, _reactQuery.useQueryClient)();
|
|
65
|
+
useSupervision();
|
|
66
|
+
(0, _useOxyEvent.useOxyEvent)(_client.SUPERVISION_CHANGED_EVENT, () => {
|
|
67
|
+
void queryClient.invalidateQueries({
|
|
68
|
+
queryKey: supervisionQueryKeys.all
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
37
73
|
//# sourceMappingURL=useSupervision.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactQuery","require","_oxyRuntimeContext","supervisionQueryKeys","exports","all","account","id","sessionId","useSupervision","oxyServices","user","
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","_client","_oxyRuntimeContext","_useOxyEvent","supervisionQueryKeys","exports","all","account","id","sessionId","useSupervision","oxyServices","user","canUsePrivateApi","activeSessionId","useOxy","result","useQuery","queryKey","queryFn","safety","supervisionState","enabled","kind","staleTime","Number","POSITIVE_INFINITY","gcTime","refetchOnWindowFocus","data","isError","undefined","SupervisionStateObserver","queryClient","useQueryClient","useOxyEvent","SUPERVISION_CHANGED_EVENT","invalidateQueries"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useSupervision.ts"],"mappings":";;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEO,MAAMI,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAClCE,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAU;EAC9CC,OAAO,EAAEA,CAACC,EAAU,EAAEC,SAAiB,KACrC,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAED,EAAE,EAAEC,SAAS;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAG;EAC/B,MAAM;IAAEC,WAAW;IAAEC,IAAI;IAAEC,gBAAgB;IAAEC;EAAgB,CAAC,GAAG,IAAAC,yBAAM,EAAC,CAAC;EACzE,MAAMC,MAAM,GAAG,IAAAC,oBAAQ,EAAC;IACtBC,QAAQ,EAAEd,oBAAoB,CAACG,OAAO,CAACK,IAAI,EAAEJ,EAAE,IAAI,EAAE,EAAEM,eAAe,IAAI,EAAE,CAAC;IAC7EK,OAAO,EAAEA,CAAA,KAAMR,WAAW,CAACS,MAAM,CAACC,gBAAgB,CAAC,CAAC;IACpDC,OAAO,EAAET,gBAAgB,IAAI,CAAC,CAACC,eAAe,IAAIF,IAAI,EAAEW,IAAI,KAAK,UAAU;IAC3E;IACAC,SAAS,EAAEC,MAAM,CAACC,iBAAiB;IACnC;IACA;IACAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACtBC,oBAAoB,EAAE;EACxB,CAAC,CAAC;EACF,OAAO;IACL,GAAGZ,MAAM;IACTa,IAAI,EAAEb,MAAM,CAACc,OAAO,GAAGC,SAAS,GAAGf,MAAM,CAACa;EAC5C,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,wBAAwBA,CAAA,EAAG;EACzC,MAAMC,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpCxB,cAAc,CAAC,CAAC;EAChB,IAAAyB,wBAAW,EAACC,iCAAyB,EAAE,MAAM;IAC3C,KAAKH,WAAW,CAACI,iBAAiB,CAAC;MAAEnB,QAAQ,EAAEd,oBAAoB,CAACE;IAAI,CAAC,CAAC;EAC5E,CAAC,CAAC;EACF,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -21,6 +21,7 @@ import { LanguageBridge } from "./LanguageBridge.js";
|
|
|
21
21
|
import { BloomLocaleBridge } from "./BloomLocaleBridge.js";
|
|
22
22
|
import { useOxy } from "../context/oxyRuntimeContext.js";
|
|
23
23
|
import { useCurrentUser } from "../hooks/queries/useAccountQueries.js";
|
|
24
|
+
import { SupervisionStateObserver } from "../hooks/queries/useSupervision.js";
|
|
24
25
|
|
|
25
26
|
/** Hydrate owner preferences after the bearer is ready, including on cold boot. */
|
|
26
27
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -267,7 +268,7 @@ const OxyProvider = ({
|
|
|
267
268
|
platformStorage: platformStorage,
|
|
268
269
|
accountQueries: accountQueries,
|
|
269
270
|
onAuthStateChange: onAuthStateChange,
|
|
270
|
-
children: [/*#__PURE__*/_jsx(AccountProfileObserver, {}), productAnalytics ? /*#__PURE__*/_jsx(ProductAnalyticsObserver, {
|
|
271
|
+
children: [/*#__PURE__*/_jsx(AccountProfileObserver, {}), /*#__PURE__*/_jsx(SupervisionStateObserver, {}), productAnalytics ? /*#__PURE__*/_jsx(ProductAnalyticsObserver, {
|
|
271
272
|
analytics: productAnalytics
|
|
272
273
|
}) : null, language ? /*#__PURE__*/_jsx(LanguageBridge, {
|
|
273
274
|
...language
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OxySupportContext","loadScreens","useEffect","useRef","useState","useMemo","AppState","Platform","StyleSheet","GestureHandlerRootView","OxyRuntimeProvider","QueryClientProvider","focusManager","onlineManager","SurfaceProvider","ToastOutlet","logger","loggerUtil","RequireOxyAuth","attachQueryPersistence","createQueryClient","createMemoryStorage","createPlatformStorage","isNetConnectivityOnline","KeyboardBoundary","SafeAreaRoot","ProductAnalyticsObserver","LanguageBridge","BloomLocaleBridge","useOxy","useCurrentUser","jsx","_jsx","jsxs","_jsxs","AccountProfileObserver","canUsePrivateApi","enabled","bootStyles","create","providerRoot","flex","isWeb","OS","OxyProvider","oxyServices","children","onAuthStateChange","onAskAlia","documentationUrl","aliaAvatar","oxyOneArtwork","productAnalytics","storageKeyPrefix","clientId","baseURL","authWebUrl","authRedirectUri","authorizeBaseUrl","sessionMode","webAuthMode","queryClient","providedQueryClient","accountQueries","requireAuth","backgroundSession","language","support","catch","undefined","queryClientRef","persistenceUnsubRef","ownsQueryClientRef","accountQueriesRef","platformStorage","setPlatformStorage","current","client","mounted","bootstrap","storage","error","__DEV__","warn","component","persistence","unsubscribe","restored","handleVisibilityChange","setFocused","document","visibilityState","addEventListener","removeEventListener","subscription","state","remove","cleanup","setupNetworkMonitoring","setOnline","navigator","onLine","handleOnline","handleOffline","window","NetInfo","default","fetch","coreContent","analytics","Provider","value","prompt","style"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,iCAA8B;AAChE,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,QAAiB,OAAO;AACrE,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAC7D,SAASC,sBAAsB,QAAQ,8BAA8B;AAErE,SAASC,kBAAkB,QAAsC,0BAAuB;AACxF,SAASC,mBAAmB,EAAEC,YAAY,EAAEC,aAAa,QAAQ,uBAAuB;AACxF,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,MAAM,IAAIC,UAAU,QAAQ,cAAc;AACnD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,sBAAsB,EAAEC,iBAAiB,QAAQ,yBAAsB;AAChF,SACEC,mBAAmB,EACnBC,qBAAqB,QAEhB,4BAAyB;AAChC,SAASC,uBAAuB,QAAQ,6BAA0B;AAClE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,wBAAwB,QAAQ,kCAA+B;AACxE,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,MAAM,QAAQ,iCAA8B;AACrD,SAASC,cAAc,QAAQ,uCAAoC;;
|
|
1
|
+
{"version":3,"names":["OxySupportContext","loadScreens","useEffect","useRef","useState","useMemo","AppState","Platform","StyleSheet","GestureHandlerRootView","OxyRuntimeProvider","QueryClientProvider","focusManager","onlineManager","SurfaceProvider","ToastOutlet","logger","loggerUtil","RequireOxyAuth","attachQueryPersistence","createQueryClient","createMemoryStorage","createPlatformStorage","isNetConnectivityOnline","KeyboardBoundary","SafeAreaRoot","ProductAnalyticsObserver","LanguageBridge","BloomLocaleBridge","useOxy","useCurrentUser","SupervisionStateObserver","jsx","_jsx","jsxs","_jsxs","AccountProfileObserver","canUsePrivateApi","enabled","bootStyles","create","providerRoot","flex","isWeb","OS","OxyProvider","oxyServices","children","onAuthStateChange","onAskAlia","documentationUrl","aliaAvatar","oxyOneArtwork","productAnalytics","storageKeyPrefix","clientId","baseURL","authWebUrl","authRedirectUri","authorizeBaseUrl","sessionMode","webAuthMode","queryClient","providedQueryClient","accountQueries","requireAuth","backgroundSession","language","support","catch","undefined","queryClientRef","persistenceUnsubRef","ownsQueryClientRef","accountQueriesRef","platformStorage","setPlatformStorage","current","client","mounted","bootstrap","storage","error","__DEV__","warn","component","persistence","unsubscribe","restored","handleVisibilityChange","setFocused","document","visibilityState","addEventListener","removeEventListener","subscription","state","remove","cleanup","setupNetworkMonitoring","setOnline","navigator","onLine","handleOnline","handleOffline","window","NetInfo","default","fetch","coreContent","analytics","Provider","value","prompt","style"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,32 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
import { SUPERVISION_CHANGED_EVENT } from '@oxy.so/contracts/client';
|
|
4
5
|
import { useOxy } from "../../context/oxyRuntimeContext.js";
|
|
6
|
+
import { useOxyEvent } from "../useOxyEvent.js";
|
|
5
7
|
export const supervisionQueryKeys = {
|
|
6
8
|
all: ['oxy', 'safety', 'supervision'],
|
|
7
9
|
account: (id, sessionId) => ['oxy', 'safety', 'supervision', id, sessionId]
|
|
8
10
|
};
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The signed-in personal account's supervision (parental-control) state.
|
|
14
|
+
*
|
|
15
|
+
* Policy: the SDK keeps the session's supervision state always current — it is
|
|
16
|
+
* fetched when the session is established, refetched when the app returns to
|
|
17
|
+
* the foreground, and refetched when the session socket signals
|
|
18
|
+
* `supervision_changed` (`SupervisionStateObserver`, mounted by `OxyProvider`).
|
|
19
|
+
* Screens read it from the cache without waiting for the network: no observer
|
|
20
|
+
* forces its own refetch on mount. `data` is undefined only while the session's
|
|
21
|
+
* first fetch is pending, when the query is disabled (signed out, or not a
|
|
22
|
+
* personal account) and after a failed fetch.
|
|
23
|
+
*
|
|
24
|
+
* Advisory UI state only. The server keeps enforcing supervision on every
|
|
25
|
+
* content request; never treat this value as authorization.
|
|
26
|
+
*/
|
|
10
27
|
export function useSupervision() {
|
|
11
28
|
const {
|
|
12
29
|
oxyServices,
|
|
13
30
|
user,
|
|
14
|
-
|
|
31
|
+
canUsePrivateApi,
|
|
15
32
|
activeSessionId
|
|
16
33
|
} = useOxy();
|
|
17
34
|
const result = useQuery({
|
|
18
35
|
queryKey: supervisionQueryKeys.account(user?.id ?? '', activeSessionId ?? ''),
|
|
19
36
|
queryFn: () => oxyServices.safety.supervisionState(),
|
|
20
|
-
enabled:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
enabled: canUsePrivateApi && !!activeSessionId && user?.kind === 'personal',
|
|
38
|
+
// Fresh until the socket signal or a return to the foreground says otherwise.
|
|
39
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
40
|
+
// The observer below keeps the current session's entry alive; this only
|
|
41
|
+
// bounds how long a previous session's entry outlives it.
|
|
42
|
+
gcTime: 30 * 60 * 1000,
|
|
43
|
+
refetchOnWindowFocus: 'always'
|
|
26
44
|
});
|
|
27
45
|
return {
|
|
28
46
|
...result,
|
|
29
|
-
data: result.
|
|
47
|
+
data: result.isError ? undefined : result.data
|
|
30
48
|
};
|
|
31
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Keeps the session's supervision state current for every `useSupervision()`
|
|
53
|
+
* reader: its observer fetches once the session is established and on each
|
|
54
|
+
* return to the foreground, and the `supervision_changed` socket signal
|
|
55
|
+
* refetches it. Rendered once by `OxyProvider`.
|
|
56
|
+
*/
|
|
57
|
+
export function SupervisionStateObserver() {
|
|
58
|
+
const queryClient = useQueryClient();
|
|
59
|
+
useSupervision();
|
|
60
|
+
useOxyEvent(SUPERVISION_CHANGED_EVENT, () => {
|
|
61
|
+
void queryClient.invalidateQueries({
|
|
62
|
+
queryKey: supervisionQueryKeys.all
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
32
67
|
//# sourceMappingURL=useSupervision.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useQuery","useOxy","supervisionQueryKeys","all","account","id","sessionId","useSupervision","oxyServices","user","
|
|
1
|
+
{"version":3,"names":["useQuery","useQueryClient","SUPERVISION_CHANGED_EVENT","useOxy","useOxyEvent","supervisionQueryKeys","all","account","id","sessionId","useSupervision","oxyServices","user","canUsePrivateApi","activeSessionId","result","queryKey","queryFn","safety","supervisionState","enabled","kind","staleTime","Number","POSITIVE_INFINITY","gcTime","refetchOnWindowFocus","data","isError","undefined","SupervisionStateObserver","queryClient","invalidateQueries"],"sourceRoot":"../../../../../src","sources":["ui/hooks/queries/useSupervision.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,cAAc,QAAQ,uBAAuB;AAChE,SAASC,yBAAyB,QAAQ,0BAA0B;AACpE,SAASC,MAAM,QAAQ,oCAAiC;AACxD,SAASC,WAAW,QAAQ,mBAAgB;AAE5C,OAAO,MAAMC,oBAAoB,GAAG;EAClCC,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAU;EAC9CC,OAAO,EAAEA,CAACC,EAAU,EAAEC,SAAiB,KACrC,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAED,EAAE,EAAEC,SAAS;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/B,MAAM;IAAEC,WAAW;IAAEC,IAAI;IAAEC,gBAAgB;IAAEC;EAAgB,CAAC,GAAGX,MAAM,CAAC,CAAC;EACzE,MAAMY,MAAM,GAAGf,QAAQ,CAAC;IACtBgB,QAAQ,EAAEX,oBAAoB,CAACE,OAAO,CAACK,IAAI,EAAEJ,EAAE,IAAI,EAAE,EAAEM,eAAe,IAAI,EAAE,CAAC;IAC7EG,OAAO,EAAEA,CAAA,KAAMN,WAAW,CAACO,MAAM,CAACC,gBAAgB,CAAC,CAAC;IACpDC,OAAO,EAAEP,gBAAgB,IAAI,CAAC,CAACC,eAAe,IAAIF,IAAI,EAAES,IAAI,KAAK,UAAU;IAC3E;IACAC,SAAS,EAAEC,MAAM,CAACC,iBAAiB;IACnC;IACA;IACAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACtBC,oBAAoB,EAAE;EACxB,CAAC,CAAC;EACF,OAAO;IACL,GAAGX,MAAM;IACTY,IAAI,EAAEZ,MAAM,CAACa,OAAO,GAAGC,SAAS,GAAGd,MAAM,CAACY;EAC5C,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,wBAAwBA,CAAA,EAAG;EACzC,MAAMC,WAAW,GAAG9B,cAAc,CAAC,CAAC;EACpCS,cAAc,CAAC,CAAC;EAChBN,WAAW,CAACF,yBAAyB,EAAE,MAAM;IAC3C,KAAK6B,WAAW,CAACC,iBAAiB,CAAC;MAAEhB,QAAQ,EAAEX,oBAAoB,CAACC;IAAI,CAAC,CAAC;EAC5E,CAAC,CAAC;EACF,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyProvider.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"OxyProvider.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAuC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0NrC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -2,7 +2,21 @@ export declare const supervisionQueryKeys: {
|
|
|
2
2
|
all: readonly ["oxy", "safety", "supervision"];
|
|
3
3
|
account: (id: string, sessionId: string) => readonly ["oxy", "safety", "supervision", string, string];
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The signed-in personal account's supervision (parental-control) state.
|
|
7
|
+
*
|
|
8
|
+
* Policy: the SDK keeps the session's supervision state always current — it is
|
|
9
|
+
* fetched when the session is established, refetched when the app returns to
|
|
10
|
+
* the foreground, and refetched when the session socket signals
|
|
11
|
+
* `supervision_changed` (`SupervisionStateObserver`, mounted by `OxyProvider`).
|
|
12
|
+
* Screens read it from the cache without waiting for the network: no observer
|
|
13
|
+
* forces its own refetch on mount. `data` is undefined only while the session's
|
|
14
|
+
* first fetch is pending, when the query is disabled (signed out, or not a
|
|
15
|
+
* personal account) and after a failed fetch.
|
|
16
|
+
*
|
|
17
|
+
* Advisory UI state only. The server keeps enforcing supervision on every
|
|
18
|
+
* content request; never treat this value as authorization.
|
|
19
|
+
*/
|
|
6
20
|
export declare function useSupervision(): {
|
|
7
21
|
data: {
|
|
8
22
|
self: {
|
|
@@ -472,4 +486,11 @@ export declare function useSupervision(): {
|
|
|
472
486
|
}, Error>>;
|
|
473
487
|
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
474
488
|
};
|
|
489
|
+
/**
|
|
490
|
+
* Keeps the session's supervision state current for every `useSupervision()`
|
|
491
|
+
* reader: its observer fetches once the session is established and on each
|
|
492
|
+
* return to the foreground, and the `supervision_changed` socket signal
|
|
493
|
+
* refetches it. Rendered once by `OxyProvider`.
|
|
494
|
+
*/
|
|
495
|
+
export declare function SupervisionStateObserver(): null;
|
|
475
496
|
//# sourceMappingURL=useSupervision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSupervision.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useSupervision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSupervision.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useSupervision.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB;;kBAEjB,MAAM,aAAa,MAAM;CAExC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB7B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,SAOvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyProvider.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"OxyProvider.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAqB,CAAC;AAuC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0NrC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -2,7 +2,21 @@ export declare const supervisionQueryKeys: {
|
|
|
2
2
|
all: readonly ["oxy", "safety", "supervision"];
|
|
3
3
|
account: (id: string, sessionId: string) => readonly ["oxy", "safety", "supervision", string, string];
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The signed-in personal account's supervision (parental-control) state.
|
|
7
|
+
*
|
|
8
|
+
* Policy: the SDK keeps the session's supervision state always current — it is
|
|
9
|
+
* fetched when the session is established, refetched when the app returns to
|
|
10
|
+
* the foreground, and refetched when the session socket signals
|
|
11
|
+
* `supervision_changed` (`SupervisionStateObserver`, mounted by `OxyProvider`).
|
|
12
|
+
* Screens read it from the cache without waiting for the network: no observer
|
|
13
|
+
* forces its own refetch on mount. `data` is undefined only while the session's
|
|
14
|
+
* first fetch is pending, when the query is disabled (signed out, or not a
|
|
15
|
+
* personal account) and after a failed fetch.
|
|
16
|
+
*
|
|
17
|
+
* Advisory UI state only. The server keeps enforcing supervision on every
|
|
18
|
+
* content request; never treat this value as authorization.
|
|
19
|
+
*/
|
|
6
20
|
export declare function useSupervision(): {
|
|
7
21
|
data: {
|
|
8
22
|
self: {
|
|
@@ -472,4 +486,11 @@ export declare function useSupervision(): {
|
|
|
472
486
|
}, Error>>;
|
|
473
487
|
fetchStatus: import("@tanstack/react-query").FetchStatus;
|
|
474
488
|
};
|
|
489
|
+
/**
|
|
490
|
+
* Keeps the session's supervision state current for every `useSupervision()`
|
|
491
|
+
* reader: its observer fetches once the session is established and on each
|
|
492
|
+
* return to the foreground, and the `supervision_changed` socket signal
|
|
493
|
+
* refetches it. Rendered once by `OxyProvider`.
|
|
494
|
+
*/
|
|
495
|
+
export declare function SupervisionStateObserver(): null;
|
|
475
496
|
//# sourceMappingURL=useSupervision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSupervision.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useSupervision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSupervision.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useSupervision.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB;;kBAEjB,MAAM,aAAa,MAAM;CAExC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB7B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,SAOvC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxy.so/services",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.13.0",
|
|
4
4
|
"description": "OxyHQ Expo/React Native SDK — UI components, screens, and native features",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -147,11 +147,10 @@
|
|
|
147
147
|
"copy-assets": "copyfiles -u 1 \"src/assets/**/*\" lib/commonjs/assets && copyfiles -u 1 \"src/assets/**/*\" lib/module/assets",
|
|
148
148
|
"copy-dts": "copyfiles -u 1 \"src/**/*.d.ts\" lib/typescript",
|
|
149
149
|
"delete-debug-view": "rm -rf ./lib/commonjs/components/bottomSheetDebugView ./lib/module/components/bottomSheetDebugView ./lib/typescript/components/bottomSheetDebugView || true",
|
|
150
|
-
"delete-dts.js": "find ./lib/commonjs -name '*.d.js*' -delete && find ./lib/module -name '*.d.js*' -delete"
|
|
151
|
-
"prepublishOnly": "node ../../scripts/assert-bun-publish.mjs && bun run typescript && bun run test && bun run build"
|
|
150
|
+
"delete-dts.js": "find ./lib/commonjs -name '*.d.js*' -delete && find ./lib/module -name '*.d.js*' -delete"
|
|
152
151
|
},
|
|
153
152
|
"dependencies": {
|
|
154
|
-
"@oxy.so/contracts": "^5.
|
|
153
|
+
"@oxy.so/contracts": "^5.8.0",
|
|
155
154
|
"color": "^5.0.3",
|
|
156
155
|
"@peable.to/sdk": "0.4.1"
|
|
157
156
|
},
|
|
@@ -160,7 +159,7 @@
|
|
|
160
159
|
"@commitlint/config-conventional": "^21.2.0",
|
|
161
160
|
"@expo/app-integrity": "~58.0.2",
|
|
162
161
|
"@expo/vector-icons": "^15.0.3",
|
|
163
|
-
"@oxy.so/core": "6.15.
|
|
162
|
+
"@oxy.so/core": "6.15.2",
|
|
164
163
|
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
165
164
|
"@react-native-community/netinfo": "^12.0.1",
|
|
166
165
|
"@react-native/babel-preset": "^0.88.0",
|
|
@@ -175,7 +174,7 @@
|
|
|
175
174
|
"@types/jest": "^30.0.0",
|
|
176
175
|
"@types/node": "^20.19.43",
|
|
177
176
|
"@types/react": "*",
|
|
178
|
-
"@oxy.so/bloom": "
|
|
177
|
+
"@oxy.so/bloom": "15.18.0",
|
|
179
178
|
"copyfiles": "^2.4.1",
|
|
180
179
|
"expo-clipboard": "~58.0.3",
|
|
181
180
|
"expo-constants": "~58.0.12",
|
|
@@ -24,6 +24,7 @@ import { LanguageBridge } from './LanguageBridge';
|
|
|
24
24
|
import { BloomLocaleBridge } from './BloomLocaleBridge';
|
|
25
25
|
import { useOxy } from '../context/oxyRuntimeContext';
|
|
26
26
|
import { useCurrentUser } from '../hooks/queries/useAccountQueries';
|
|
27
|
+
import { SupervisionStateObserver } from '../hooks/queries/useSupervision';
|
|
27
28
|
|
|
28
29
|
/** Hydrate owner preferences after the bearer is ready, including on cold boot. */
|
|
29
30
|
function AccountProfileObserver() {
|
|
@@ -283,6 +284,7 @@ const OxyProvider: FC<OxyProviderProps> = ({
|
|
|
283
284
|
onAuthStateChange={onAuthStateChange as OxyRuntimeProviderProps['onAuthStateChange']}
|
|
284
285
|
>
|
|
285
286
|
<AccountProfileObserver />
|
|
287
|
+
<SupervisionStateObserver />
|
|
286
288
|
{productAnalytics ? <ProductAnalyticsObserver analytics={productAnalytics} /> : null}
|
|
287
289
|
{language ? <LanguageBridge {...language} /> : null}
|
|
288
290
|
<BloomLocaleBridge>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { act, render, renderHook, waitFor } from '@testing-library/react';
|
|
3
|
+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
|
+
import { SUPERVISION_CHANGED_EVENT } from '@oxy.so/contracts/client';
|
|
5
|
+
import { SupervisionStateObserver, useSupervision } from '../useSupervision';
|
|
6
|
+
|
|
7
|
+
const mockSupervisionState = jest.fn();
|
|
8
|
+
const mockServerEvents = new Map<string, (payload: unknown) => void>();
|
|
9
|
+
jest.mock('../../../context/oxyRuntimeContext', () => ({
|
|
10
|
+
useOxy: () => ({
|
|
11
|
+
oxyServices: { safety: { supervisionState: mockSupervisionState } },
|
|
12
|
+
user: { id: 'child', kind: 'personal' },
|
|
13
|
+
canUsePrivateApi: true,
|
|
14
|
+
activeSessionId: 'session',
|
|
15
|
+
sessionClient: {
|
|
16
|
+
onServerEvent: (event: string, listener: (payload: unknown) => void) => {
|
|
17
|
+
mockServerEvents.set(event, listener);
|
|
18
|
+
return () => mockServerEvents.delete(event);
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
const state = (status: 'active' | 'ended') => ({
|
|
25
|
+
self: {
|
|
26
|
+
childAccountId: 'child',
|
|
27
|
+
guardianAccountId: 'guardian',
|
|
28
|
+
status,
|
|
29
|
+
policyVersion: '2',
|
|
30
|
+
consentVersion: '1',
|
|
31
|
+
createdAt: '2026-10-23T00:00:00.000Z',
|
|
32
|
+
},
|
|
33
|
+
children: [],
|
|
34
|
+
invitations: [],
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
function setup() {
|
|
38
|
+
const client = new QueryClient();
|
|
39
|
+
const wrapper = ({ children }: { children: ReactNode }) => (
|
|
40
|
+
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
41
|
+
);
|
|
42
|
+
render(<SupervisionStateObserver />, { wrapper });
|
|
43
|
+
return wrapper;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
mockSupervisionState.mockReset();
|
|
48
|
+
mockServerEvents.clear();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('serves the session state to a new screen from the cache, without a request', async () => {
|
|
52
|
+
mockSupervisionState.mockResolvedValue(state('active'));
|
|
53
|
+
const wrapper = setup();
|
|
54
|
+
await waitFor(() => expect(mockSupervisionState).toHaveBeenCalledTimes(1));
|
|
55
|
+
await act(async () => {});
|
|
56
|
+
|
|
57
|
+
const { result } = renderHook(() => useSupervision(), { wrapper });
|
|
58
|
+
|
|
59
|
+
expect(result.current.data?.self?.status).toBe('active');
|
|
60
|
+
expect(mockSupervisionState).toHaveBeenCalledTimes(1);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('refetches when the session socket signals a supervision change', async () => {
|
|
64
|
+
mockSupervisionState.mockResolvedValueOnce(state('active')).mockResolvedValue(state('ended'));
|
|
65
|
+
const wrapper = setup();
|
|
66
|
+
const { result } = renderHook(() => useSupervision(), { wrapper });
|
|
67
|
+
await waitFor(() => expect(result.current.data?.self?.status).toBe('active'));
|
|
68
|
+
|
|
69
|
+
act(() => mockServerEvents.get(SUPERVISION_CHANGED_EVENT)?.(undefined));
|
|
70
|
+
|
|
71
|
+
await waitFor(() => expect(result.current.data?.self?.status).toBe('ended'));
|
|
72
|
+
expect(mockSupervisionState).toHaveBeenCalledTimes(2);
|
|
73
|
+
});
|
|
@@ -1,25 +1,59 @@
|
|
|
1
|
-
import { useQuery } from '@tanstack/react-query';
|
|
1
|
+
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { SUPERVISION_CHANGED_EVENT } from '@oxy.so/contracts/client';
|
|
2
3
|
import { useOxy } from '../../context/oxyRuntimeContext';
|
|
4
|
+
import { useOxyEvent } from '../useOxyEvent';
|
|
5
|
+
|
|
3
6
|
export const supervisionQueryKeys = {
|
|
4
7
|
all: ['oxy', 'safety', 'supervision'] as const,
|
|
5
8
|
account: (id: string, sessionId: string) =>
|
|
6
9
|
['oxy', 'safety', 'supervision', id, sessionId] as const,
|
|
7
10
|
};
|
|
8
|
-
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The signed-in personal account's supervision (parental-control) state.
|
|
14
|
+
*
|
|
15
|
+
* Policy: the SDK keeps the session's supervision state always current — it is
|
|
16
|
+
* fetched when the session is established, refetched when the app returns to
|
|
17
|
+
* the foreground, and refetched when the session socket signals
|
|
18
|
+
* `supervision_changed` (`SupervisionStateObserver`, mounted by `OxyProvider`).
|
|
19
|
+
* Screens read it from the cache without waiting for the network: no observer
|
|
20
|
+
* forces its own refetch on mount. `data` is undefined only while the session's
|
|
21
|
+
* first fetch is pending, when the query is disabled (signed out, or not a
|
|
22
|
+
* personal account) and after a failed fetch.
|
|
23
|
+
*
|
|
24
|
+
* Advisory UI state only. The server keeps enforcing supervision on every
|
|
25
|
+
* content request; never treat this value as authorization.
|
|
26
|
+
*/
|
|
9
27
|
export function useSupervision() {
|
|
10
|
-
const { oxyServices, user,
|
|
28
|
+
const { oxyServices, user, canUsePrivateApi, activeSessionId } = useOxy();
|
|
11
29
|
const result = useQuery({
|
|
12
30
|
queryKey: supervisionQueryKeys.account(user?.id ?? '', activeSessionId ?? ''),
|
|
13
31
|
queryFn: () => oxyServices.safety.supervisionState(),
|
|
14
|
-
enabled:
|
|
15
|
-
|
|
16
|
-
|
|
32
|
+
enabled: canUsePrivateApi && !!activeSessionId && user?.kind === 'personal',
|
|
33
|
+
// Fresh until the socket signal or a return to the foreground says otherwise.
|
|
34
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
35
|
+
// The observer below keeps the current session's entry alive; this only
|
|
36
|
+
// bounds how long a previous session's entry outlives it.
|
|
37
|
+
gcTime: 30 * 60 * 1000,
|
|
17
38
|
refetchOnWindowFocus: 'always',
|
|
18
|
-
refetchOnMount: 'always',
|
|
19
|
-
retry: false,
|
|
20
39
|
});
|
|
21
40
|
return {
|
|
22
41
|
...result,
|
|
23
|
-
data: result.
|
|
42
|
+
data: result.isError ? undefined : result.data,
|
|
24
43
|
};
|
|
25
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Keeps the session's supervision state current for every `useSupervision()`
|
|
48
|
+
* reader: its observer fetches once the session is established and on each
|
|
49
|
+
* return to the foreground, and the `supervision_changed` socket signal
|
|
50
|
+
* refetches it. Rendered once by `OxyProvider`.
|
|
51
|
+
*/
|
|
52
|
+
export function SupervisionStateObserver() {
|
|
53
|
+
const queryClient = useQueryClient();
|
|
54
|
+
useSupervision();
|
|
55
|
+
useOxyEvent(SUPERVISION_CHANGED_EVENT, () => {
|
|
56
|
+
void queryClient.invalidateQueries({ queryKey: supervisionQueryKeys.all });
|
|
57
|
+
});
|
|
58
|
+
return null;
|
|
59
|
+
}
|