@oxy.so/services 13.6.0 → 13.8.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/android/build.gradle +1 -0
- package/android/src/main/java/so/oxy/assets/OxyAssetFilesModule.kt +49 -0
- package/android/src/main/java/so/oxy/assets/StreamSha256.kt +23 -0
- package/android/src/test/java/so/oxy/assets/StreamSha256Test.kt +45 -0
- package/expo-module.config.json +3 -2
- package/ios/OxyAssetFilesModule.swift +72 -0
- package/lib/commonjs/ui/components/AccountLanguageBoundary.js +35 -0
- package/lib/commonjs/ui/components/AccountLanguageBoundary.js.map +1 -0
- package/lib/commonjs/ui/components/LanguageBridge.js +37 -34
- package/lib/commonjs/ui/components/LanguageBridge.js.map +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +19 -26
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js +8 -2
- package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +23 -2
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/useEntryLink.js +97 -0
- package/lib/commonjs/ui/hooks/useEntryLink.js.map +1 -0
- package/lib/commonjs/ui/hooks/useLanguageManagement.js +45 -14
- package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/commonjs/ui/utils/entryLink.js +54 -0
- package/lib/commonjs/ui/utils/entryLink.js.map +1 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.js +11 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.js.map +1 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.macos.js +11 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.macos.js.map +1 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.native.js +202 -0
- package/lib/commonjs/ui/utils/nativeAssetFiles.native.js.map +1 -0
- package/lib/module/ui/components/AccountLanguageBoundary.js +32 -0
- package/lib/module/ui/components/AccountLanguageBoundary.js.map +1 -0
- package/lib/module/ui/components/LanguageBridge.js +38 -35
- package/lib/module/ui/components/LanguageBridge.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +18 -27
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/signIn/OxySignUpPanel.js +8 -2
- package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +24 -3
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/useEntryLink.js +94 -0
- package/lib/module/ui/hooks/useEntryLink.js.map +1 -0
- package/lib/module/ui/hooks/useLanguageManagement.js +45 -14
- package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/module/ui/utils/entryLink.js +49 -0
- package/lib/module/ui/utils/entryLink.js.map +1 -0
- package/lib/module/ui/utils/nativeAssetFiles.js +7 -0
- package/lib/module/ui/utils/nativeAssetFiles.js.map +1 -0
- package/lib/module/ui/utils/nativeAssetFiles.macos.js +7 -0
- package/lib/module/ui/utils/nativeAssetFiles.macos.js.map +1 -0
- package/lib/module/ui/utils/nativeAssetFiles.native.js +197 -0
- package/lib/module/ui/utils/nativeAssetFiles.native.js.map +1 -0
- package/lib/typescript/commonjs/ui/components/AccountLanguageBoundary.d.ts +8 -0
- package/lib/typescript/commonjs/ui/components/AccountLanguageBoundary.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts +7 -17
- package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +5 -0
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useEntryLink.d.ts +15 -0
- package/lib/typescript/commonjs/ui/hooks/useEntryLink.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts +5 -1
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +4 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/entryLink.d.ts +8 -0
- package/lib/typescript/commonjs/ui/utils/entryLink.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.d.ts +4 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.macos.d.ts +4 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.macos.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.native.d.ts +4 -0
- package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.native.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/AccountLanguageBoundary.d.ts +8 -0
- package/lib/typescript/module/ui/components/AccountLanguageBoundary.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/LanguageBridge.d.ts +7 -17
- package/lib/typescript/module/ui/components/LanguageBridge.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +5 -0
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useEntryLink.d.ts +15 -0
- package/lib/typescript/module/ui/hooks/useEntryLink.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts +5 -1
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +4 -0
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/entryLink.d.ts +8 -0
- package/lib/typescript/module/ui/utils/entryLink.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.d.ts +4 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.macos.d.ts +4 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.macos.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.native.d.ts +4 -0
- package/lib/typescript/module/ui/utils/nativeAssetFiles.native.d.ts.map +1 -0
- package/package.json +6 -5
- package/src/ui/components/AccountLanguageBoundary.tsx +35 -0
- package/src/ui/components/LanguageBridge.tsx +43 -39
- package/src/ui/components/OxyProvider.tsx +18 -24
- package/src/ui/components/__tests__/AccountLanguageBoundary.test.tsx +87 -0
- package/src/ui/components/__tests__/LanguageBridge.test.tsx +80 -60
- package/src/ui/components/signIn/OxySignUpPanel.tsx +9 -1
- package/src/ui/context/OxyContext.tsx +34 -2
- package/src/ui/context/oxyContextTypes.ts +5 -0
- package/src/ui/hooks/useEntryLink.ts +103 -0
- package/src/ui/hooks/useLanguageManagement.ts +53 -18
- package/src/ui/types/navigation.ts +4 -0
- package/src/ui/utils/__tests__/entryLink.test.ts +30 -0
- package/src/ui/utils/__tests__/nativeAssetFiles.test.ts +270 -0
- package/src/ui/utils/entryLink.ts +61 -0
- package/src/ui/utils/nativeAssetFiles.macos.ts +6 -0
- package/src/ui/utils/nativeAssetFiles.native.ts +212 -0
- package/src/ui/utils/nativeAssetFiles.ts +6 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.readCampaignAttribution = readCampaignAttribution;
|
|
7
|
+
exports.readEntryLink = readEntryLink;
|
|
8
|
+
var _core = require("@oxy.so/core");
|
|
9
|
+
var _client = require("@oxy.so/contracts/client");
|
|
10
|
+
const CAMPAIGN_PARAMETERS = {
|
|
11
|
+
utmSource: 'utm_source',
|
|
12
|
+
utmMedium: 'utm_medium',
|
|
13
|
+
utmCampaign: 'utm_campaign',
|
|
14
|
+
utmContent: 'utm_content',
|
|
15
|
+
utmTerm: 'utm_term',
|
|
16
|
+
fbclid: 'fbclid'
|
|
17
|
+
};
|
|
18
|
+
function readCampaignAttribution(value) {
|
|
19
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;
|
|
20
|
+
const result = {};
|
|
21
|
+
for (const field of Object.keys(CAMPAIGN_PARAMETERS)) {
|
|
22
|
+
const raw = Reflect.get(value, field);
|
|
23
|
+
if (typeof raw !== 'string') continue;
|
|
24
|
+
const normalized = raw.trim();
|
|
25
|
+
const limit = field === 'fbclid' ? _client.CAMPAIGN_CLICK_ID_MAX_LENGTH : _client.CAMPAIGN_LABEL_MAX_LENGTH;
|
|
26
|
+
if (!normalized || normalized.length > limit || (0, _client.hasCampaignControlCharacters)(normalized)) continue;
|
|
27
|
+
result[field] = normalized;
|
|
28
|
+
}
|
|
29
|
+
return Object.keys(result).length ? result : undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Consumes only explicit locale/campaign parameters, never the URL or referrer itself. */
|
|
33
|
+
function readEntryLink(url) {
|
|
34
|
+
if (!url) return {};
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = new URL(url);
|
|
38
|
+
} catch {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
const languages = parsed.searchParams.getAll('lang');
|
|
42
|
+
const requestedLanguage = languages.length === 1 ? languages[0] : undefined;
|
|
43
|
+
const language = requestedLanguage && (0, _client.isLanguageTag)(requestedLanguage) ? (0, _core.normalizeLocale)(requestedLanguage) ?? _core.SUPPORTED_LANGUAGES.find(candidate => candidate.language === requestedLanguage.split('-')[0]?.toLowerCase())?.code : undefined;
|
|
44
|
+
const fields = {};
|
|
45
|
+
for (const [field, query] of Object.entries(CAMPAIGN_PARAMETERS)) {
|
|
46
|
+
const values = parsed.searchParams.getAll(query);
|
|
47
|
+
if (values.length === 1) fields[field] = values[0];
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
language,
|
|
51
|
+
campaignAttribution: readCampaignAttribution(fields)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=entryLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","_client","CAMPAIGN_PARAMETERS","utmSource","utmMedium","utmCampaign","utmContent","utmTerm","fbclid","readCampaignAttribution","value","Array","isArray","undefined","result","field","Object","keys","raw","Reflect","get","normalized","trim","limit","CAMPAIGN_CLICK_ID_MAX_LENGTH","CAMPAIGN_LABEL_MAX_LENGTH","length","hasCampaignControlCharacters","readEntryLink","url","parsed","URL","languages","searchParams","getAll","requestedLanguage","language","isLanguageTag","normalizeLocale","SUPPORTED_LANGUAGES","find","candidate","split","toLowerCase","code","fields","query","entries","values","campaignAttribution"],"sourceRoot":"../../../../src","sources":["ui/utils/entryLink.ts"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAQA,MAAME,mBAAmB,GAAG;EAC1BC,SAAS,EAAE,YAAY;EACvBC,SAAS,EAAE,YAAY;EACvBC,WAAW,EAAE,cAAc;EAC3BC,UAAU,EAAE,aAAa;EACzBC,OAAO,EAAE,UAAU;EACnBC,MAAM,EAAE;AACV,CAAU;AAEH,SAASC,uBAAuBA,CAACC,KAAc,EAAmC;EACvF,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE,OAAOG,SAAS;EACjF,MAAMC,MAA2B,GAAG,CAAC,CAAC;EACtC,KAAK,MAAMC,KAAK,IAAIC,MAAM,CAACC,IAAI,CAACf,mBAAmB,CAAC,EAAmC;IACrF,MAAMgB,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACV,KAAK,EAAEK,KAAK,CAAC;IACrC,IAAI,OAAOG,GAAG,KAAK,QAAQ,EAAE;IAC7B,MAAMG,UAAU,GAAGH,GAAG,CAACI,IAAI,CAAC,CAAC;IAC7B,MAAMC,KAAK,GAAGR,KAAK,KAAK,QAAQ,GAAGS,oCAA4B,GAAGC,iCAAyB;IAC3F,IAAI,CAACJ,UAAU,IAAIA,UAAU,CAACK,MAAM,GAAGH,KAAK,IAAI,IAAAI,oCAA4B,EAACN,UAAU,CAAC,EACtF;IACFP,MAAM,CAACC,KAAK,CAAC,GAAGM,UAAU;EAC5B;EACA,OAAOL,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACY,MAAM,GAAGZ,MAAM,GAAGD,SAAS;AACxD;;AAEA;AACO,SAASe,aAAaA,CAACC,GAAkB,EAG9C;EACA,IAAI,CAACA,GAAG,EAAE,OAAO,CAAC,CAAC;EACnB,IAAIC,MAAW;EACf,IAAI;IACFA,MAAM,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;EACvB,CAAC,CAAC,MAAM;IACN,OAAO,CAAC,CAAC;EACX;EACA,MAAMG,SAAS,GAAGF,MAAM,CAACG,YAAY,CAACC,MAAM,CAAC,MAAM,CAAC;EACpD,MAAMC,iBAAiB,GAAGH,SAAS,CAACN,MAAM,KAAK,CAAC,GAAGM,SAAS,CAAC,CAAC,CAAC,GAAGnB,SAAS;EAC3E,MAAMuB,QAAQ,GACZD,iBAAiB,IAAI,IAAAE,qBAAa,EAACF,iBAAiB,CAAC,GAChD,IAAAG,qBAAe,EAACH,iBAAiB,CAAC,IACnCI,yBAAmB,CAACC,IAAI,CACrBC,SAAS,IAAKA,SAAS,CAACL,QAAQ,KAAKD,iBAAiB,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CACrF,CAAC,EAAEC,IAAI,GACP/B,SAAS;EACf,MAAMgC,MAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAM,CAAC9B,KAAK,EAAE+B,KAAK,CAAC,IAAI9B,MAAM,CAAC+B,OAAO,CAAC7C,mBAAmB,CAAC,EAAE;IAChE,MAAM8C,MAAM,GAAGlB,MAAM,CAACG,YAAY,CAACC,MAAM,CAACY,KAAK,CAAC;IAChD,IAAIE,MAAM,CAACtB,MAAM,KAAK,CAAC,EAAEmB,MAAM,CAAC9B,KAAK,CAAC,GAAGiC,MAAM,CAAC,CAAC,CAAC;EACpD;EACA,OAAO;IAAEZ,QAAQ;IAAEa,mBAAmB,EAAExC,uBAAuB,CAACoC,MAAM;EAAE,CAAC;AAC3E","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.installNativeAssetFiles = installNativeAssetFiles;
|
|
7
|
+
/** Web/Node use their existing Blob transport. Metro selects the native adapter. */
|
|
8
|
+
function installNativeAssetFiles(_oxy) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=nativeAssetFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["installNativeAssetFiles","_oxy","undefined"],"sourceRoot":"../../../../src","sources":["ui/utils/nativeAssetFiles.ts"],"mappings":";;;;;;AAEA;AACO,SAASA,uBAAuBA,CAACC,IAAiB,EAAa;EACpE,OAAOC,SAAS;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.installNativeAssetFiles = installNativeAssetFiles;
|
|
7
|
+
/** Web/Node use their existing Blob transport. Metro selects the native adapter. */
|
|
8
|
+
function installNativeAssetFiles(_oxy) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=nativeAssetFiles.macos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["installNativeAssetFiles","_oxy","undefined"],"sourceRoot":"../../../../src","sources":["ui/utils/nativeAssetFiles.macos.ts"],"mappings":";;;;;;AAEA;AACO,SAASA,uBAAuBA,CAACC,IAAiB,EAAa;EACpE,OAAOC,SAAS;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.installNativeAssetFiles = installNativeAssetFiles;
|
|
7
|
+
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); }
|
|
8
|
+
// File.slice() reads the WHOLE file on Expo; RN Blob does the same on Java's
|
|
9
|
+
// heap. FileHandle reads and native file uploads keep both heaps bounded.
|
|
10
|
+
const COPY_CHUNK_BYTES = 1024 * 1024;
|
|
11
|
+
let partsDirectory;
|
|
12
|
+
let nextPart = 0;
|
|
13
|
+
let nextHash = 0;
|
|
14
|
+
// FileHandle methods are synchronous: awaiting them alone only yields a
|
|
15
|
+
// microtask. Let rendering, native events and abort timers run between chunks.
|
|
16
|
+
function yieldToEventLoop() {
|
|
17
|
+
return new Promise(resolve => setTimeout(resolve, 0));
|
|
18
|
+
}
|
|
19
|
+
function abortError() {
|
|
20
|
+
const error = new Error('Upload aborted');
|
|
21
|
+
error.name = 'AbortError';
|
|
22
|
+
return error;
|
|
23
|
+
}
|
|
24
|
+
function checkAbort(signal) {
|
|
25
|
+
if (signal?.aborted) throw abortError();
|
|
26
|
+
}
|
|
27
|
+
async function temporaryParts() {
|
|
28
|
+
partsDirectory ??= Promise.resolve().then(() => _interopRequireWildcard(require('expo-file-system'))).then(({
|
|
29
|
+
Directory,
|
|
30
|
+
Paths
|
|
31
|
+
}) => {
|
|
32
|
+
const directory = new Directory(Paths.cache, 'oxy-upload-parts');
|
|
33
|
+
// These are foreground transfers. A new JS runtime owns no previous parts;
|
|
34
|
+
// remove leftovers from a killed process before creating any new part.
|
|
35
|
+
if (directory.exists) directory.delete();
|
|
36
|
+
directory.create({
|
|
37
|
+
intermediates: true
|
|
38
|
+
});
|
|
39
|
+
return directory;
|
|
40
|
+
}).catch(error => {
|
|
41
|
+
partsDirectory = undefined;
|
|
42
|
+
throw error;
|
|
43
|
+
});
|
|
44
|
+
return partsDirectory;
|
|
45
|
+
}
|
|
46
|
+
async function copyRange(file, target, start, end, signal) {
|
|
47
|
+
const reader = file.open();
|
|
48
|
+
try {
|
|
49
|
+
reader.offset = start;
|
|
50
|
+
const writer = target.open();
|
|
51
|
+
try {
|
|
52
|
+
for (let offset = start; offset < end;) {
|
|
53
|
+
checkAbort(signal);
|
|
54
|
+
const bytes = await reader.readBytes(Math.min(COPY_CHUNK_BYTES, end - offset));
|
|
55
|
+
if (!bytes.length) throw new Error('File changed while preparing upload');
|
|
56
|
+
await writer.writeBytes(bytes);
|
|
57
|
+
offset += bytes.length;
|
|
58
|
+
await yieldToEventLoop();
|
|
59
|
+
}
|
|
60
|
+
} finally {
|
|
61
|
+
writer.close();
|
|
62
|
+
}
|
|
63
|
+
} finally {
|
|
64
|
+
reader.close();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function putRange(file, request) {
|
|
68
|
+
const [{
|
|
69
|
+
File
|
|
70
|
+
}, legacy, directory] = await Promise.all([Promise.resolve().then(() => _interopRequireWildcard(require('expo-file-system'))), Promise.resolve().then(() => _interopRequireWildcard(require('expo-file-system/legacy'))), temporaryParts()]);
|
|
71
|
+
checkAbort(request.signal);
|
|
72
|
+
const part = new File(directory, `part-${++nextPart}`);
|
|
73
|
+
part.create();
|
|
74
|
+
try {
|
|
75
|
+
await copyRange(file, part, request.start, request.end, request.signal);
|
|
76
|
+
checkAbort(request.signal);
|
|
77
|
+
const task = legacy.createUploadTask(request.url, part.uri, {
|
|
78
|
+
httpMethod: 'PUT',
|
|
79
|
+
uploadType: legacy.FileSystemUploadType.BINARY_CONTENT,
|
|
80
|
+
sessionType: legacy.FileSystemSessionType.FOREGROUND,
|
|
81
|
+
headers: {}
|
|
82
|
+
}, ({
|
|
83
|
+
totalBytesSent
|
|
84
|
+
}) => request.onProgress(totalBytesSent));
|
|
85
|
+
let cancel;
|
|
86
|
+
let stop = () => {};
|
|
87
|
+
const interrupted = new Promise((_resolve, reject) => {
|
|
88
|
+
stop = () => {
|
|
89
|
+
cancel ??= task.cancelAsync();
|
|
90
|
+
void cancel.catch(() => undefined);
|
|
91
|
+
reject(abortError());
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
const timer = setTimeout(() => {
|
|
95
|
+
stop();
|
|
96
|
+
}, request.timeoutMs);
|
|
97
|
+
request.signal?.addEventListener('abort', stop, {
|
|
98
|
+
once: true
|
|
99
|
+
});
|
|
100
|
+
try {
|
|
101
|
+
checkAbort(request.signal);
|
|
102
|
+
const result = await Promise.race([task.uploadAsync(), interrupted]);
|
|
103
|
+
if (!result) throw abortError();
|
|
104
|
+
return result.status >= 200 && result.status < 300 ? {
|
|
105
|
+
ok: true
|
|
106
|
+
} : {
|
|
107
|
+
ok: false,
|
|
108
|
+
status: result.status
|
|
109
|
+
};
|
|
110
|
+
} catch {
|
|
111
|
+
if (request.signal?.aborted) throw abortError();
|
|
112
|
+
// The core session owner applies its bounded retry/backoff policy.
|
|
113
|
+
return {
|
|
114
|
+
ok: false,
|
|
115
|
+
status: 0
|
|
116
|
+
};
|
|
117
|
+
} finally {
|
|
118
|
+
clearTimeout(timer);
|
|
119
|
+
request.signal?.removeEventListener('abort', stop);
|
|
120
|
+
if (cancel) await cancel.catch(() => undefined);
|
|
121
|
+
}
|
|
122
|
+
} finally {
|
|
123
|
+
if (part.exists) part.delete();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function openNativeFile(uri) {
|
|
127
|
+
const {
|
|
128
|
+
File
|
|
129
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('expo-file-system')));
|
|
130
|
+
let nativeHasher = null;
|
|
131
|
+
try {
|
|
132
|
+
const {
|
|
133
|
+
requireOptionalNativeModule
|
|
134
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('expo-modules-core')));
|
|
135
|
+
nativeHasher = requireOptionalNativeModule('OxyAssetFiles');
|
|
136
|
+
} catch {
|
|
137
|
+
// Hosts without the optional Expo module bridge retain bounded file access.
|
|
138
|
+
}
|
|
139
|
+
const file = new File(uri);
|
|
140
|
+
if (!file.exists) throw new Error('Native upload file is unavailable');
|
|
141
|
+
const size = file.size;
|
|
142
|
+
return {
|
|
143
|
+
size,
|
|
144
|
+
// Older native binaries can still use bounded JS reads after an OTA. New
|
|
145
|
+
// binaries hash entirely on a native worker, without sending bytes to JS.
|
|
146
|
+
hash: nativeHasher ? async (onProgress, signal) => {
|
|
147
|
+
checkAbort(signal);
|
|
148
|
+
if (file.size !== size) throw new Error('File changed while hashing');
|
|
149
|
+
const id = `upload-hash-${++nextHash}`;
|
|
150
|
+
const listener = nativeHasher.addListener('hashProgress', event => {
|
|
151
|
+
if (event.id === id && !signal?.aborted) onProgress?.(event.loaded);
|
|
152
|
+
});
|
|
153
|
+
const stop = () => nativeHasher.cancelHash(id);
|
|
154
|
+
try {
|
|
155
|
+
nativeHasher.createHash(id);
|
|
156
|
+
signal?.addEventListener('abort', stop, {
|
|
157
|
+
once: true
|
|
158
|
+
});
|
|
159
|
+
if (signal?.aborted) stop();
|
|
160
|
+
const digest = await nativeHasher.hashAsync(id, uri, size);
|
|
161
|
+
checkAbort(signal);
|
|
162
|
+
return digest;
|
|
163
|
+
} catch (error) {
|
|
164
|
+
checkAbort(signal);
|
|
165
|
+
throw error;
|
|
166
|
+
} finally {
|
|
167
|
+
signal?.removeEventListener('abort', stop);
|
|
168
|
+
listener.remove();
|
|
169
|
+
}
|
|
170
|
+
} : undefined,
|
|
171
|
+
async readRange(start, end) {
|
|
172
|
+
if (file.size !== size) throw new Error('File changed while uploading');
|
|
173
|
+
if (start < 0 || end > size || end < start) throw new Error('Invalid upload file range');
|
|
174
|
+
const reader = file.open();
|
|
175
|
+
try {
|
|
176
|
+
reader.offset = start;
|
|
177
|
+
const output = new Uint8Array(end - start);
|
|
178
|
+
let read = 0;
|
|
179
|
+
while (read < output.length) {
|
|
180
|
+
const bytes = await reader.readBytes(Math.min(COPY_CHUNK_BYTES, output.length - read));
|
|
181
|
+
if (!bytes.length) throw new Error('File changed while hashing');
|
|
182
|
+
output.set(bytes, read);
|
|
183
|
+
read += bytes.length;
|
|
184
|
+
await yieldToEventLoop();
|
|
185
|
+
}
|
|
186
|
+
return output;
|
|
187
|
+
} finally {
|
|
188
|
+
reader.close();
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
putPart: request => {
|
|
192
|
+
if (file.size !== size) throw new Error('File changed while uploading');
|
|
193
|
+
return putRange(file, request);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/** One provider-owned adapter; no native filesystem module loads before an upload. */
|
|
199
|
+
function installNativeAssetFiles(oxy) {
|
|
200
|
+
return oxy.assets.installFileAdapter(openNativeFile);
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=nativeAssetFiles.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["COPY_CHUNK_BYTES","partsDirectory","nextPart","nextHash","yieldToEventLoop","Promise","resolve","setTimeout","abortError","error","Error","name","checkAbort","signal","aborted","temporaryParts","then","_interopRequireWildcard","require","Directory","Paths","directory","cache","exists","delete","create","intermediates","catch","undefined","copyRange","file","target","start","end","reader","open","offset","writer","bytes","readBytes","Math","min","length","writeBytes","close","putRange","request","File","legacy","all","part","task","createUploadTask","url","uri","httpMethod","uploadType","FileSystemUploadType","BINARY_CONTENT","sessionType","FileSystemSessionType","FOREGROUND","headers","totalBytesSent","onProgress","cancel","stop","interrupted","_resolve","reject","cancelAsync","timer","timeoutMs","addEventListener","once","result","race","uploadAsync","status","ok","clearTimeout","removeEventListener","openNativeFile","nativeHasher","requireOptionalNativeModule","size","hash","id","listener","addListener","event","loaded","cancelHash","createHash","digest","hashAsync","remove","readRange","output","Uint8Array","read","set","putPart","installNativeAssetFiles","oxy","assets","installFileAdapter"],"sourceRoot":"../../../../src","sources":["ui/utils/nativeAssetFiles.native.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { FALLBACK_LOCALE, getPrimaryLanguage } from '@oxy.so/core';
|
|
4
|
+
import { useOxy } from "../context/oxyRuntimeContext.js";
|
|
5
|
+
import { useCurrentUser } from "../hooks/queries/useAccountQueries.js";
|
|
6
|
+
import { LanguageBridge } from "./LanguageBridge.js";
|
|
7
|
+
|
|
8
|
+
/** Owner preferences are not part of the public device/account summary. */
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export function AccountLanguageBoundary({
|
|
11
|
+
language,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
14
|
+
const {
|
|
15
|
+
canUsePrivateApi,
|
|
16
|
+
user,
|
|
17
|
+
currentLanguage
|
|
18
|
+
} = useOxy();
|
|
19
|
+
const profile = useCurrentUser({
|
|
20
|
+
enabled: canUsePrivateApi
|
|
21
|
+
});
|
|
22
|
+
// The query mirrors its result into the account runtime in an effect. Wait for
|
|
23
|
+
// that projection as well as the request, so the bridge never publishes the
|
|
24
|
+
// compact session's fallback locale in the frame before its real preference.
|
|
25
|
+
const accountReady = !user || !canUsePrivateApi || profile.fetchStatus === 'paused' || user.languages !== undefined || profile.isError || profile.dataUpdatedAt > 0 && profile.data?.id === user.id && currentLanguage === (getPrimaryLanguage(profile.data) ?? FALLBACK_LOCALE);
|
|
26
|
+
return /*#__PURE__*/_jsx(LanguageBridge, {
|
|
27
|
+
config: language,
|
|
28
|
+
accountReady: accountReady,
|
|
29
|
+
children: children
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=AccountLanguageBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FALLBACK_LOCALE","getPrimaryLanguage","useOxy","useCurrentUser","LanguageBridge","jsx","_jsx","AccountLanguageBoundary","language","children","canUsePrivateApi","user","currentLanguage","profile","enabled","accountReady","fetchStatus","languages","undefined","isError","dataUpdatedAt","data","id","config"],"sourceRoot":"../../../../src","sources":["ui/components/AccountLanguageBoundary.tsx"],"mappings":";;AACA,SAASA,eAAe,EAAEC,kBAAkB,QAAQ,cAAc;AAClE,SAASC,MAAM,QAAQ,iCAA8B;AACrD,SAASC,cAAc,QAAQ,uCAAoC;AAEnE,SAASC,cAAc,QAAQ,qBAAkB;;AAEjD;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,OAAO,SAASC,uBAAuBA,CAAC;EACtCC,QAAQ;EACRC;AAIF,CAAC,EAAE;EACD,MAAM;IAAEC,gBAAgB;IAAEC,IAAI;IAAEC;EAAgB,CAAC,GAAGV,MAAM,CAAC,CAAC;EAC5D,MAAMW,OAAO,GAAGV,cAAc,CAAC;IAAEW,OAAO,EAAEJ;EAAiB,CAAC,CAAC;EAC7D;EACA;EACA;EACA,MAAMK,YAAY,GAChB,CAACJ,IAAI,IACL,CAACD,gBAAgB,IACjBG,OAAO,CAACG,WAAW,KAAK,QAAQ,IAChCL,IAAI,CAACM,SAAS,KAAKC,SAAS,IAC5BL,OAAO,CAACM,OAAO,IACdN,OAAO,CAACO,aAAa,GAAG,CAAC,IACxBP,OAAO,CAACQ,IAAI,EAAEC,EAAE,KAAKX,IAAI,CAACW,EAAE,IAC5BV,eAAe,MAAMX,kBAAkB,CAACY,OAAO,CAACQ,IAAI,CAAC,IAAIrB,eAAe,CAAE;EAC9E,oBACEM,IAAA,CAACF,cAAc;IAACmB,MAAM,EAAEf,QAAS;IAACO,YAAY,EAAEA,YAAa;IAAAN,QAAA,EAC1DA;EAAQ,CACK,CAAC;AAErB","ignoreList":[]}
|
|
@@ -1,47 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect,
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { coerceToSupportedLocale } from '@oxy.so/core';
|
|
5
5
|
import { useOxy } from "../context/oxyRuntimeContext.js";
|
|
6
|
-
/**
|
|
7
|
-
* `OxyProvider`'s language config prop, realized. Oxy decides which
|
|
8
|
-
* language an account (or, signed out, the device/guest locale) should see;
|
|
9
|
-
* this is the ONE place that decision reaches the host app's own i18n library
|
|
10
|
-
* — so an app never re-derives or imperatively tracks a language of its own,
|
|
11
|
-
* and never mounts anything extra to get it. It owns only its translation
|
|
12
|
-
* catalogs.
|
|
13
|
-
*
|
|
14
|
-
* `currentLanguage` may name a locale the host app never shipped a catalog
|
|
15
|
-
* for — {@link coerceToSupportedLocale} narrows it to the closest one the app
|
|
16
|
-
* actually has (exact match, then same base language, then `fallbackLocale`).
|
|
17
|
-
*
|
|
18
|
-
* Renders nothing. Mounted by `OxyProvider` INSIDE `OxyRuntimeProvider` only
|
|
19
|
-
* when this config is supplied, so an app with no i18n of its own pays
|
|
20
|
-
* nothing.
|
|
21
|
-
*/
|
|
6
|
+
/** The SDK resolves the entry/account locale before exposing translated app content. */
|
|
22
7
|
export function LanguageBridge({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
onError
|
|
8
|
+
config,
|
|
9
|
+
accountReady = true,
|
|
10
|
+
children
|
|
27
11
|
}) {
|
|
28
12
|
const {
|
|
29
|
-
currentLanguage
|
|
13
|
+
currentLanguage,
|
|
14
|
+
isLanguageReady,
|
|
15
|
+
isAuthResolved
|
|
30
16
|
} = useOxy();
|
|
31
|
-
const resolvedLocale =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const onChangeRef = useRef(onChange);
|
|
37
|
-
onChangeRef.current = onChange;
|
|
38
|
-
const onErrorRef = useRef(onError);
|
|
39
|
-
onErrorRef.current = onError;
|
|
17
|
+
const resolvedLocale = config ? coerceToSupportedLocale(currentLanguage, config.supportedLocales, config.fallbackLocale) : currentLanguage;
|
|
18
|
+
const configRef = useRef(config);
|
|
19
|
+
configRef.current = config;
|
|
20
|
+
const pendingChange = useRef(Promise.resolve());
|
|
21
|
+
const [prepared, setPrepared] = useState(false);
|
|
40
22
|
useEffect(() => {
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
if (!isLanguageReady || !isAuthResolved || !accountReady) return;
|
|
24
|
+
let active = true;
|
|
25
|
+
// A slow earlier catalog must finish before a later locale is committed.
|
|
26
|
+
// Children stay mounted after boot: changing language never destroys route state.
|
|
27
|
+
pendingChange.current = pendingChange.current.then(async () => {
|
|
28
|
+
if (!active) return;
|
|
29
|
+
const current = configRef.current;
|
|
30
|
+
try {
|
|
31
|
+
await current?.onChange(resolvedLocale);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
current?.onError?.(error, resolvedLocale);
|
|
34
|
+
if (current && resolvedLocale !== current.fallbackLocale) {
|
|
35
|
+
try {
|
|
36
|
+
await current.onChange(current.fallbackLocale);
|
|
37
|
+
} catch (fallbackError) {
|
|
38
|
+
current.onError?.(fallbackError, current.fallbackLocale);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (active) setPrepared(true);
|
|
43
43
|
});
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
return () => {
|
|
45
|
+
active = false;
|
|
46
|
+
};
|
|
47
|
+
}, [accountReady, isAuthResolved, isLanguageReady, resolvedLocale]);
|
|
48
|
+
return !config || prepared ? children : null;
|
|
46
49
|
}
|
|
47
50
|
//# sourceMappingURL=LanguageBridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","coerceToSupportedLocale","useOxy","LanguageBridge","config","accountReady","children","currentLanguage","isLanguageReady","isAuthResolved","resolvedLocale","supportedLocales","fallbackLocale","configRef","current","pendingChange","Promise","resolve","prepared","setPrepared","active","then","onChange","error","onError","fallbackError"],"sourceRoot":"../../../../src","sources":["ui/components/LanguageBridge.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAwB,OAAO;AACnE,SAASC,uBAAuB,QAAQ,cAAc;AACtD,SAASC,MAAM,QAAQ,iCAA8B;AAGrD;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,MAAM;EACNC,YAAY,GAAG,IAAI;EACnBC;AAKF,CAAC,EAAE;EACD,MAAM;IAAEC,eAAe;IAAEC,eAAe;IAAEC;EAAe,CAAC,GAAGP,MAAM,CAAC,CAAC;EACrE,MAAMQ,cAAc,GAAGN,MAAM,GACzBH,uBAAuB,CAACM,eAAe,EAAEH,MAAM,CAACO,gBAAgB,EAAEP,MAAM,CAACQ,cAAc,CAAC,GACxFL,eAAe;EACnB,MAAMM,SAAS,GAAGd,MAAM,CAACK,MAAM,CAAC;EAChCS,SAAS,CAACC,OAAO,GAAGV,MAAM;EAC1B,MAAMW,aAAa,GAAGhB,MAAM,CAACiB,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAC/C,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGnB,QAAQ,CAAC,KAAK,CAAC;EAE/CF,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,eAAe,IAAI,CAACC,cAAc,IAAI,CAACJ,YAAY,EAAE;IAC1D,IAAIe,MAAM,GAAG,IAAI;IACjB;IACA;IACAL,aAAa,CAACD,OAAO,GAAGC,aAAa,CAACD,OAAO,CAACO,IAAI,CAAC,YAAY;MAC7D,IAAI,CAACD,MAAM,EAAE;MACb,MAAMN,OAAO,GAAGD,SAAS,CAACC,OAAO;MACjC,IAAI;QACF,MAAMA,OAAO,EAAEQ,QAAQ,CAACZ,cAAc,CAAC;MACzC,CAAC,CAAC,OAAOa,KAAK,EAAE;QACdT,OAAO,EAAEU,OAAO,GAAGD,KAAK,EAAEb,cAAc,CAAC;QACzC,IAAII,OAAO,IAAIJ,cAAc,KAAKI,OAAO,CAACF,cAAc,EAAE;UACxD,IAAI;YACF,MAAME,OAAO,CAACQ,QAAQ,CAACR,OAAO,CAACF,cAAc,CAAC;UAChD,CAAC,CAAC,OAAOa,aAAa,EAAE;YACtBX,OAAO,CAACU,OAAO,GAAGC,aAAa,EAAEX,OAAO,CAACF,cAAc,CAAC;UAC1D;QACF;MACF;MACA,IAAIQ,MAAM,EAAED,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,MAAM;MACXC,MAAM,GAAG,KAAK;IAChB,CAAC;EACH,CAAC,EAAE,CAACf,YAAY,EAAEI,cAAc,EAAED,eAAe,EAAEE,cAAc,CAAC,CAAC;EAEnE,OAAO,CAACN,MAAM,IAAIc,QAAQ,GAAGZ,QAAQ,GAAG,IAAI;AAC9C","ignoreList":[]}
|
|
@@ -17,23 +17,10 @@ import { isNetConnectivityOnline } from "../utils/netConnectivity.js";
|
|
|
17
17
|
import { KeyboardBoundary } from './KeyboardBoundary';
|
|
18
18
|
import { SafeAreaRoot } from "./SafeAreaRoot.js";
|
|
19
19
|
import { ProductAnalyticsObserver } from "../analytics/productAnalytics.js";
|
|
20
|
-
import {
|
|
20
|
+
import { AccountLanguageBoundary } from "./AccountLanguageBoundary.js";
|
|
21
21
|
import { BloomLocaleBridge } from "./BloomLocaleBridge.js";
|
|
22
|
-
import { useOxy } from "../context/oxyRuntimeContext.js";
|
|
23
|
-
import { useCurrentUser } from "../hooks/queries/useAccountQueries.js";
|
|
24
22
|
import { SupervisionStateObserver } from "../hooks/queries/useSupervision.js";
|
|
25
|
-
|
|
26
|
-
/** Hydrate owner preferences after the bearer is ready, including on cold boot. */
|
|
27
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
28
|
-
function AccountProfileObserver() {
|
|
29
|
-
const {
|
|
30
|
-
canUsePrivateApi
|
|
31
|
-
} = useOxy();
|
|
32
|
-
useCurrentUser({
|
|
33
|
-
enabled: canUsePrivateApi
|
|
34
|
-
});
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
24
|
const bootStyles = StyleSheet.create({
|
|
38
25
|
providerRoot: {
|
|
39
26
|
flex: 1
|
|
@@ -114,7 +101,8 @@ const OxyProvider = ({
|
|
|
114
101
|
accountQueries,
|
|
115
102
|
requireAuth = 'off',
|
|
116
103
|
backgroundSession = false,
|
|
117
|
-
language
|
|
104
|
+
language,
|
|
105
|
+
campaignAttribution = false
|
|
118
106
|
}) => {
|
|
119
107
|
const support = useMemo(() => ({
|
|
120
108
|
onAskAlia,
|
|
@@ -265,23 +253,26 @@ const OxyProvider = ({
|
|
|
265
253
|
sessionMode: sessionMode,
|
|
266
254
|
webAuthMode: webAuthMode,
|
|
267
255
|
backgroundSession: backgroundSession,
|
|
256
|
+
legacyLanguageKeys: language?.legacyStorageKeys,
|
|
257
|
+
captureCampaignAttribution: campaignAttribution,
|
|
268
258
|
platformStorage: platformStorage,
|
|
269
259
|
accountQueries: accountQueries,
|
|
270
260
|
onAuthStateChange: onAuthStateChange,
|
|
271
|
-
children: [/*#__PURE__*/_jsx(
|
|
261
|
+
children: [/*#__PURE__*/_jsx(SupervisionStateObserver, {}), productAnalytics ? /*#__PURE__*/_jsx(ProductAnalyticsObserver, {
|
|
272
262
|
analytics: productAnalytics
|
|
273
|
-
}) : null,
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
263
|
+
}) : null, /*#__PURE__*/_jsx(AccountLanguageBoundary, {
|
|
264
|
+
language: language,
|
|
265
|
+
children: /*#__PURE__*/_jsxs(BloomLocaleBridge, {
|
|
266
|
+
children: [/*#__PURE__*/_jsx(OxySupportContext.Provider, {
|
|
267
|
+
value: support,
|
|
268
|
+
children: /*#__PURE__*/_jsx(SurfaceProvider, {
|
|
269
|
+
children: requireAuth === 'off' ? children : /*#__PURE__*/_jsx(RequireOxyAuth, {
|
|
270
|
+
prompt: requireAuth,
|
|
271
|
+
children: children
|
|
272
|
+
})
|
|
282
273
|
})
|
|
283
|
-
})
|
|
284
|
-
})
|
|
274
|
+
}), /*#__PURE__*/_jsx(ToastOutlet, {})]
|
|
275
|
+
})
|
|
285
276
|
})]
|
|
286
277
|
})
|
|
287
278
|
});
|
|
@@ -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","
|
|
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","AccountLanguageBoundary","BloomLocaleBridge","SupervisionStateObserver","jsx","_jsx","jsxs","_jsxs","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","campaignAttribution","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","legacyLanguageKeys","legacyStorageKeys","captureCampaignAttribution","analytics","Provider","value","prompt","style"],"sourceRoot":"../../../../src","sources":["ui/components/OxyProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -45,7 +45,9 @@ export const OxySignUpPanel = ({
|
|
|
45
45
|
const {
|
|
46
46
|
oxyServices,
|
|
47
47
|
handleWebSession,
|
|
48
|
-
accountDialogController
|
|
48
|
+
accountDialogController,
|
|
49
|
+
currentLanguage,
|
|
50
|
+
campaignAttribution
|
|
49
51
|
} = useOxy();
|
|
50
52
|
const snapshot = useAccountDialogSnapshot(accountDialogController);
|
|
51
53
|
const flowOwner = host === 'dialog' ? accountDialogController : null;
|
|
@@ -121,7 +123,11 @@ export const OxySignUpPanel = ({
|
|
|
121
123
|
const session = await oxyServices.auth.signUp({
|
|
122
124
|
username: username.trim(),
|
|
123
125
|
email,
|
|
124
|
-
emailTicket: ticket
|
|
126
|
+
emailTicket: ticket,
|
|
127
|
+
languages: [currentLanguage],
|
|
128
|
+
...(campaignAttribution ? {
|
|
129
|
+
campaignAttribution
|
|
130
|
+
} : {})
|
|
125
131
|
});
|
|
126
132
|
await handleWebSession(session);
|
|
127
133
|
writeSignInFlow(flowOwner, SIGN_UP_FLOW_KEY, undefined);
|