@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.
Files changed (114) hide show
  1. package/android/build.gradle +1 -0
  2. package/android/src/main/java/so/oxy/assets/OxyAssetFilesModule.kt +49 -0
  3. package/android/src/main/java/so/oxy/assets/StreamSha256.kt +23 -0
  4. package/android/src/test/java/so/oxy/assets/StreamSha256Test.kt +45 -0
  5. package/expo-module.config.json +3 -2
  6. package/ios/OxyAssetFilesModule.swift +72 -0
  7. package/lib/commonjs/ui/components/AccountLanguageBoundary.js +35 -0
  8. package/lib/commonjs/ui/components/AccountLanguageBoundary.js.map +1 -0
  9. package/lib/commonjs/ui/components/LanguageBridge.js +37 -34
  10. package/lib/commonjs/ui/components/LanguageBridge.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyProvider.js +19 -26
  12. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  13. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js +8 -2
  14. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  15. package/lib/commonjs/ui/context/OxyContext.js +23 -2
  16. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  17. package/lib/commonjs/ui/hooks/useEntryLink.js +97 -0
  18. package/lib/commonjs/ui/hooks/useEntryLink.js.map +1 -0
  19. package/lib/commonjs/ui/hooks/useLanguageManagement.js +45 -14
  20. package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -1
  21. package/lib/commonjs/ui/utils/entryLink.js +54 -0
  22. package/lib/commonjs/ui/utils/entryLink.js.map +1 -0
  23. package/lib/commonjs/ui/utils/nativeAssetFiles.js +11 -0
  24. package/lib/commonjs/ui/utils/nativeAssetFiles.js.map +1 -0
  25. package/lib/commonjs/ui/utils/nativeAssetFiles.macos.js +11 -0
  26. package/lib/commonjs/ui/utils/nativeAssetFiles.macos.js.map +1 -0
  27. package/lib/commonjs/ui/utils/nativeAssetFiles.native.js +202 -0
  28. package/lib/commonjs/ui/utils/nativeAssetFiles.native.js.map +1 -0
  29. package/lib/module/ui/components/AccountLanguageBoundary.js +32 -0
  30. package/lib/module/ui/components/AccountLanguageBoundary.js.map +1 -0
  31. package/lib/module/ui/components/LanguageBridge.js +38 -35
  32. package/lib/module/ui/components/LanguageBridge.js.map +1 -1
  33. package/lib/module/ui/components/OxyProvider.js +18 -27
  34. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  35. package/lib/module/ui/components/signIn/OxySignUpPanel.js +8 -2
  36. package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  37. package/lib/module/ui/context/OxyContext.js +24 -3
  38. package/lib/module/ui/context/OxyContext.js.map +1 -1
  39. package/lib/module/ui/hooks/useEntryLink.js +94 -0
  40. package/lib/module/ui/hooks/useEntryLink.js.map +1 -0
  41. package/lib/module/ui/hooks/useLanguageManagement.js +45 -14
  42. package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -1
  43. package/lib/module/ui/utils/entryLink.js +49 -0
  44. package/lib/module/ui/utils/entryLink.js.map +1 -0
  45. package/lib/module/ui/utils/nativeAssetFiles.js +7 -0
  46. package/lib/module/ui/utils/nativeAssetFiles.js.map +1 -0
  47. package/lib/module/ui/utils/nativeAssetFiles.macos.js +7 -0
  48. package/lib/module/ui/utils/nativeAssetFiles.macos.js.map +1 -0
  49. package/lib/module/ui/utils/nativeAssetFiles.native.js +197 -0
  50. package/lib/module/ui/utils/nativeAssetFiles.native.js.map +1 -0
  51. package/lib/typescript/commonjs/ui/components/AccountLanguageBoundary.d.ts +8 -0
  52. package/lib/typescript/commonjs/ui/components/AccountLanguageBoundary.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts +7 -17
  54. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  56. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  58. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +5 -0
  59. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/ui/hooks/useEntryLink.d.ts +15 -0
  61. package/lib/typescript/commonjs/ui/hooks/useEntryLink.d.ts.map +1 -0
  62. package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts +5 -1
  63. package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/ui/types/navigation.d.ts +4 -0
  65. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/ui/utils/entryLink.d.ts +8 -0
  67. package/lib/typescript/commonjs/ui/utils/entryLink.d.ts.map +1 -0
  68. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.d.ts +4 -0
  69. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.d.ts.map +1 -0
  70. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.macos.d.ts +4 -0
  71. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.macos.d.ts.map +1 -0
  72. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.native.d.ts +4 -0
  73. package/lib/typescript/commonjs/ui/utils/nativeAssetFiles.native.d.ts.map +1 -0
  74. package/lib/typescript/module/ui/components/AccountLanguageBoundary.d.ts +8 -0
  75. package/lib/typescript/module/ui/components/AccountLanguageBoundary.d.ts.map +1 -0
  76. package/lib/typescript/module/ui/components/LanguageBridge.d.ts +7 -17
  77. package/lib/typescript/module/ui/components/LanguageBridge.d.ts.map +1 -1
  78. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  79. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  80. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  81. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +5 -0
  82. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  83. package/lib/typescript/module/ui/hooks/useEntryLink.d.ts +15 -0
  84. package/lib/typescript/module/ui/hooks/useEntryLink.d.ts.map +1 -0
  85. package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts +5 -1
  86. package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts.map +1 -1
  87. package/lib/typescript/module/ui/types/navigation.d.ts +4 -0
  88. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  89. package/lib/typescript/module/ui/utils/entryLink.d.ts +8 -0
  90. package/lib/typescript/module/ui/utils/entryLink.d.ts.map +1 -0
  91. package/lib/typescript/module/ui/utils/nativeAssetFiles.d.ts +4 -0
  92. package/lib/typescript/module/ui/utils/nativeAssetFiles.d.ts.map +1 -0
  93. package/lib/typescript/module/ui/utils/nativeAssetFiles.macos.d.ts +4 -0
  94. package/lib/typescript/module/ui/utils/nativeAssetFiles.macos.d.ts.map +1 -0
  95. package/lib/typescript/module/ui/utils/nativeAssetFiles.native.d.ts +4 -0
  96. package/lib/typescript/module/ui/utils/nativeAssetFiles.native.d.ts.map +1 -0
  97. package/package.json +6 -5
  98. package/src/ui/components/AccountLanguageBoundary.tsx +35 -0
  99. package/src/ui/components/LanguageBridge.tsx +43 -39
  100. package/src/ui/components/OxyProvider.tsx +18 -24
  101. package/src/ui/components/__tests__/AccountLanguageBoundary.test.tsx +87 -0
  102. package/src/ui/components/__tests__/LanguageBridge.test.tsx +80 -60
  103. package/src/ui/components/signIn/OxySignUpPanel.tsx +9 -1
  104. package/src/ui/context/OxyContext.tsx +34 -2
  105. package/src/ui/context/oxyContextTypes.ts +5 -0
  106. package/src/ui/hooks/useEntryLink.ts +103 -0
  107. package/src/ui/hooks/useLanguageManagement.ts +53 -18
  108. package/src/ui/types/navigation.ts +4 -0
  109. package/src/ui/utils/__tests__/entryLink.test.ts +30 -0
  110. package/src/ui/utils/__tests__/nativeAssetFiles.test.ts +270 -0
  111. package/src/ui/utils/entryLink.ts +61 -0
  112. package/src/ui/utils/nativeAssetFiles.macos.ts +6 -0
  113. package/src/ui/utils/nativeAssetFiles.native.ts +212 -0
  114. 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, useMemo, useRef } from 'react';
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
- supportedLocales,
24
- fallbackLocale,
25
- onChange,
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 = useMemo(() => coerceToSupportedLocale(currentLanguage, supportedLocales, fallbackLocale), [currentLanguage, supportedLocales, fallbackLocale]);
32
-
33
- // Refs, not effect dependencies: an inline `onChange`/`onError` (the common
34
- // case) must not re-fire the effect on every render — only a genuine
35
- // change in the RESOLVED locale should call it again.
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
- Promise.resolve(onChangeRef.current(resolvedLocale)).catch(error => {
42
- onErrorRef.current?.(error, resolvedLocale);
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
- }, [resolvedLocale]);
45
- return null;
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","useMemo","useRef","coerceToSupportedLocale","useOxy","LanguageBridge","supportedLocales","fallbackLocale","onChange","onError","currentLanguage","resolvedLocale","onChangeRef","current","onErrorRef","Promise","resolve","catch","error"],"sourceRoot":"../../../../src","sources":["ui/components/LanguageBridge.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAClD,SAASC,uBAAuB,QAAQ,cAAc;AACtD,SAASC,MAAM,QAAQ,iCAA8B;AAGrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,gBAAgB;EAChBC,cAAc;EACdC,QAAQ;EACRC;AACiB,CAAC,EAAQ;EAC1B,MAAM;IAAEC;EAAgB,CAAC,GAAGN,MAAM,CAAC,CAAC;EACpC,MAAMO,cAAc,GAAGV,OAAO,CAC5B,MAAME,uBAAuB,CAACO,eAAe,EAAEJ,gBAAgB,EAAEC,cAAc,CAAC,EAChF,CAACG,eAAe,EAAEJ,gBAAgB,EAAEC,cAAc,CACpD,CAAC;;EAED;EACA;EACA;EACA,MAAMK,WAAW,GAAGV,MAAM,CAACM,QAAQ,CAAC;EACpCI,WAAW,CAACC,OAAO,GAAGL,QAAQ;EAC9B,MAAMM,UAAU,GAAGZ,MAAM,CAACO,OAAO,CAAC;EAClCK,UAAU,CAACD,OAAO,GAAGJ,OAAO;EAE5BT,SAAS,CAAC,MAAM;IACde,OAAO,CAACC,OAAO,CAACJ,WAAW,CAACC,OAAO,CAACF,cAAc,CAAC,CAAC,CAACM,KAAK,CAAEC,KAAc,IAAK;MAC7EJ,UAAU,CAACD,OAAO,GAAGK,KAAK,EAAEP,cAAc,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,OAAO,IAAI;AACb","ignoreList":[]}
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 { LanguageBridge } from "./LanguageBridge.js";
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(AccountProfileObserver, {}), /*#__PURE__*/_jsx(SupervisionStateObserver, {}), productAnalytics ? /*#__PURE__*/_jsx(ProductAnalyticsObserver, {
261
+ children: [/*#__PURE__*/_jsx(SupervisionStateObserver, {}), productAnalytics ? /*#__PURE__*/_jsx(ProductAnalyticsObserver, {
272
262
  analytics: productAnalytics
273
- }) : null, language ? /*#__PURE__*/_jsx(LanguageBridge, {
274
- ...language
275
- }) : null, /*#__PURE__*/_jsxs(BloomLocaleBridge, {
276
- children: [/*#__PURE__*/_jsx(OxySupportContext.Provider, {
277
- value: support,
278
- children: /*#__PURE__*/_jsx(SurfaceProvider, {
279
- children: requireAuth === 'off' ? children : /*#__PURE__*/_jsx(RequireOxyAuth, {
280
- prompt: requireAuth,
281
- children: children
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
- }), /*#__PURE__*/_jsx(ToastOutlet, {})]
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","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
+ {"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);