@oxyhq/services 19.2.0 → 20.0.1
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/FollowButton.js +1 -2
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/SettingsIcon.js +1 -2
- package/lib/commonjs/ui/components/SettingsIcon.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoIcon.js +0 -2
- package/lib/commonjs/ui/components/logo/LogoIcon.js.map +1 -1
- package/lib/commonjs/ui/components/logo/LogoText.js +0 -2
- package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +9 -8
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/commitSessionFlow.js +10 -0
- package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useLanguageManagement.js +109 -28
- package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +1 -3
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +151 -88
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PreferencesScreen.js +5 -6
- package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +1 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/SettingsIcon.js +1 -1
- package/lib/module/ui/components/SettingsIcon.js.map +1 -1
- package/lib/module/ui/components/logo/LogoIcon.js +0 -1
- package/lib/module/ui/components/logo/LogoIcon.js.map +1 -1
- package/lib/module/ui/components/logo/LogoText.js +0 -1
- package/lib/module/ui/components/logo/LogoText.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +9 -8
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/commitSessionFlow.js +10 -0
- package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +1 -3
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/useLanguageManagement.js +107 -29
- package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +1 -3
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +153 -91
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/PreferencesScreen.js +5 -6
- package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +1 -2
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +5 -3
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts +52 -8
- package/lib/typescript/commonjs/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +1 -2
- package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowButton.d.ts +2 -2
- package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.d.ts +1 -1
- package/lib/typescript/module/ui/components/OxyPayButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SettingsIcon.d.ts +1 -1
- package/lib/typescript/module/ui/components/SettingsIcon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts +1 -1
- package/lib/typescript/module/ui/components/logo/LogoIcon.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts +1 -1
- package/lib/typescript/module/ui/components/logo/LogoText.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +1 -2
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +5 -3
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts +52 -8
- package/lib/typescript/module/ui/hooks/useLanguageManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +1 -2
- package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/ui/components/FollowButton.tsx +6 -5
- package/src/ui/components/OxyPayButton.tsx +1 -1
- package/src/ui/components/SettingsIcon.tsx +2 -1
- package/src/ui/components/logo/LogoIcon.tsx +2 -1
- package/src/ui/components/logo/LogoText.tsx +2 -1
- package/src/ui/context/OxyContext.tsx +13 -11
- package/src/ui/context/__tests__/commitSessionFlow.test.ts +27 -0
- package/src/ui/context/commitSessionFlow.ts +10 -0
- package/src/ui/context/hooks/useAuthOperations.ts +1 -5
- package/src/ui/context/oxyContextTypes.ts +3 -0
- package/src/ui/hooks/useFollow.ts +1 -1
- package/src/ui/hooks/useLanguageManagement.ts +144 -42
- package/src/ui/hooks/useSessionManagement.ts +1 -4
- package/src/ui/screens/FeedbackScreen.tsx +1 -1
- package/src/ui/screens/LanguageSelectorScreen.tsx +195 -104
- package/src/ui/screens/PreferencesScreen.tsx +4 -6
- package/src/ui/screens/fileManagement/FileListSection.tsx +1 -1
- package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +1 -1
|
@@ -1,113 +1,139 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
4
|
-
import { View, StyleSheet, ScrollView } from 'react-native';
|
|
3
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
4
|
+
import { View, StyleSheet, ScrollView, TouchableOpacity } from 'react-native';
|
|
5
5
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
6
|
-
import { normalizeTheme } from '@oxyhq/core';
|
|
7
6
|
import { Ionicons } from '@expo/vector-icons';
|
|
8
7
|
import { toast } from '@oxyhq/bloom';
|
|
9
8
|
import { H1, Text } from '@oxyhq/bloom/typography';
|
|
10
9
|
import { SearchInput } from '@oxyhq/bloom/search-input';
|
|
11
10
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
11
|
+
import { SUPPORTED_LANGUAGES, getNativeLanguageName } from '@oxyhq/core';
|
|
12
12
|
import Header from "../components/Header.js";
|
|
13
13
|
import { useI18n } from "../hooks/useI18n.js";
|
|
14
|
-
import { SUPPORTED_LANGUAGES } from '@oxyhq/core';
|
|
15
14
|
import { useOxy } from "../context/OxyContext.js";
|
|
15
|
+
import { addLocale, removeLocale, setPrimaryLocale } from "../hooks/useLanguageManagement.js";
|
|
16
|
+
import { useUpdateProfile } from "../hooks/mutations/useAccountMutations.js";
|
|
16
17
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
-
// Size (in dp) of the circular
|
|
18
|
-
const
|
|
19
|
-
//
|
|
20
|
-
const
|
|
18
|
+
// Size (in dp) of the circular chip rendered as each row's leading icon.
|
|
19
|
+
const CHIP_SIZE = 40;
|
|
20
|
+
// Trailing remove-affordance icon size (dp).
|
|
21
|
+
const REMOVE_ICON_SIZE = 24;
|
|
22
|
+
|
|
23
|
+
/** O(1) catalog lookup by canonical locale code. */
|
|
24
|
+
const CATALOG_BY_CODE = new Map(SUPPORTED_LANGUAGES.map(entry => [entry.code, entry]));
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
|
-
* LanguageSelectorScreen -
|
|
27
|
+
* LanguageSelectorScreen — multi-select over the supported BCP-47 locales.
|
|
24
28
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
+
* The user picks one or more locales; the FIRST (primary) drives the app's UI
|
|
30
|
+
* language. When signed in the ordered selection is persisted to the account
|
|
31
|
+
* (`updateProfile({ languages })`, primary first) and every Oxy app follows it;
|
|
32
|
+
* when signed out a single local override is stored on-device.
|
|
29
33
|
*/
|
|
30
34
|
const LanguageSelectorScreen = ({
|
|
31
35
|
goBack,
|
|
32
|
-
onClose
|
|
33
|
-
theme
|
|
36
|
+
onClose
|
|
34
37
|
}) => {
|
|
35
|
-
// Use useOxy() hook for OxyContext values. The language preference persists
|
|
36
|
-
// on the ACTIVE account's profile — the active session IS that account — so
|
|
37
|
-
// gate the server sync on the active account.
|
|
38
38
|
const {
|
|
39
39
|
user,
|
|
40
|
+
isAuthenticated,
|
|
40
41
|
currentLanguage,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
isAuthenticated
|
|
42
|
+
currentLanguages,
|
|
43
|
+
setLanguage
|
|
44
44
|
} = useOxy();
|
|
45
45
|
const {
|
|
46
46
|
t
|
|
47
47
|
} = useI18n();
|
|
48
48
|
const bloomTheme = useTheme();
|
|
49
|
-
const
|
|
50
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
49
|
+
const updateProfile = useUpdateProfile();
|
|
51
50
|
const [query, setQuery] = useState('');
|
|
51
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
52
|
+
|
|
53
|
+
// The current ordered selection: the account locales when signed in, else
|
|
54
|
+
// the single guest/device locale. Always non-empty (`currentLanguage`
|
|
55
|
+
// resolves to the device or fallback locale).
|
|
56
|
+
const selected = useMemo(() => currentLanguages.length > 0 ? currentLanguages : [currentLanguage], [currentLanguages, currentLanguage]);
|
|
57
|
+
const selectedSet = useMemo(() => new Set(selected), [selected]);
|
|
58
|
+
const selectedEntries = useMemo(() => selected.map(code => CATALOG_BY_CODE.get(code)).filter(entry => entry !== undefined), [selected]);
|
|
59
|
+
|
|
60
|
+
// Available = supported locales not already selected, filtered by the query
|
|
61
|
+
// (matches English name + native name).
|
|
62
|
+
const availableEntries = useMemo(() => {
|
|
63
|
+
const normalizedQuery = query.trim().toLowerCase();
|
|
64
|
+
return SUPPORTED_LANGUAGES.filter(entry => {
|
|
65
|
+
if (selectedSet.has(entry.code)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (!normalizedQuery) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return entry.name.toLowerCase().includes(normalizedQuery) || entry.nativeName.toLowerCase().includes(normalizedQuery);
|
|
72
|
+
});
|
|
73
|
+
}, [query, selectedSet]);
|
|
74
|
+
const isBusy = isSubmitting || updateProfile.isPending;
|
|
52
75
|
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
76
|
+
// Persist the next ordered selection. Signed-in accounts write the full
|
|
77
|
+
// ordered array; guests store only the primary locally.
|
|
78
|
+
const commitSelection = useCallback(async (next, announceCode) => {
|
|
79
|
+
if (isBusy || next.length === 0) {
|
|
80
|
+
return;
|
|
57
81
|
}
|
|
58
|
-
|
|
82
|
+
setIsSubmitting(true);
|
|
59
83
|
try {
|
|
60
|
-
let serverSyncFailed = false;
|
|
61
|
-
|
|
62
|
-
// If signed in, persist preference to backend user settings
|
|
63
84
|
if (isAuthenticated && user?.id) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// Server sync failed, but we'll save locally anyway
|
|
70
|
-
serverSyncFailed = true;
|
|
71
|
-
if (__DEV__) {
|
|
72
|
-
console.warn('Failed to sync language to server (will save locally only):', e instanceof Error ? e.message : e);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
85
|
+
await updateProfile.mutateAsync({
|
|
86
|
+
languages: next
|
|
87
|
+
});
|
|
88
|
+
} else {
|
|
89
|
+
await setLanguage(next[0]);
|
|
75
90
|
}
|
|
76
|
-
|
|
77
|
-
// Always persist locally for immediate UX and for guests
|
|
78
|
-
await setLanguage(languageId);
|
|
79
|
-
const selectedLang = SUPPORTED_LANGUAGES.find(lang => lang.id === languageId);
|
|
80
|
-
|
|
81
|
-
// Show success message (language is saved locally regardless of server sync)
|
|
82
91
|
toast.success(t('language.changed', {
|
|
83
|
-
lang:
|
|
92
|
+
lang: getNativeLanguageName(announceCode)
|
|
84
93
|
}));
|
|
85
|
-
|
|
86
|
-
// Log server sync failure only in dev mode (user experience is still good - saved locally)
|
|
87
|
-
if (serverSyncFailed && __DEV__) {
|
|
88
|
-
console.warn('Language saved locally but server sync failed');
|
|
89
|
-
}
|
|
90
|
-
setIsLoading(false);
|
|
91
|
-
// Close the bottom sheet if possible; otherwise, go back
|
|
92
|
-
if (onClose) onClose();else goBack?.();
|
|
93
94
|
} catch (error) {
|
|
94
|
-
//
|
|
95
|
+
// `useUpdateProfile` already surfaces a toast on failure; only the
|
|
96
|
+
// local (guest) path needs its own error toast.
|
|
97
|
+
if (!(isAuthenticated && user?.id)) {
|
|
98
|
+
toast.error(t('language.saveFailed'));
|
|
99
|
+
}
|
|
95
100
|
if (__DEV__) {
|
|
96
101
|
console.error('Error saving language preference:', error);
|
|
97
102
|
}
|
|
98
|
-
|
|
99
|
-
|
|
103
|
+
} finally {
|
|
104
|
+
setIsSubmitting(false);
|
|
100
105
|
}
|
|
101
|
-
}, [
|
|
106
|
+
}, [isAuthenticated, user?.id, updateProfile, setLanguage, t, isBusy]);
|
|
102
107
|
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
// Adding a locale: signed-in appends (non-primary); a guest can only hold a
|
|
109
|
+
// single locale, so the tapped locale becomes their primary.
|
|
110
|
+
const handleAdd = useCallback(code => {
|
|
111
|
+
const next = isAuthenticated && user?.id ? addLocale(selected, code) : [code];
|
|
112
|
+
void commitSelection(next, code);
|
|
113
|
+
}, [isAuthenticated, user?.id, selected, commitSelection]);
|
|
114
|
+
const handleSetPrimary = useCallback(code => {
|
|
115
|
+
if (selected[0] === code) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
void commitSelection(setPrimaryLocale(selected, code), code);
|
|
119
|
+
}, [selected, commitSelection]);
|
|
120
|
+
const handleRemove = useCallback(code => {
|
|
121
|
+
if (selected.length <= 1) {
|
|
122
|
+
return;
|
|
108
123
|
}
|
|
109
|
-
|
|
110
|
-
|
|
124
|
+
const next = removeLocale(selected, code);
|
|
125
|
+
const announceCode = next[0] ?? code;
|
|
126
|
+
void commitSelection(next, announceCode);
|
|
127
|
+
}, [selected, commitSelection]);
|
|
128
|
+
const renderChip = entry => /*#__PURE__*/_jsx(View, {
|
|
129
|
+
className: "bg-fill-secondary items-center justify-center",
|
|
130
|
+
style: styles.chip,
|
|
131
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
132
|
+
className: "text-text-secondary",
|
|
133
|
+
style: styles.chipLabel,
|
|
134
|
+
children: entry.language.toUpperCase()
|
|
135
|
+
})
|
|
136
|
+
});
|
|
111
137
|
return /*#__PURE__*/_jsxs(View, {
|
|
112
138
|
className: "flex-1 bg-bg",
|
|
113
139
|
children: [/*#__PURE__*/_jsx(Header, {
|
|
@@ -120,7 +146,6 @@ const LanguageSelectorScreen = ({
|
|
|
120
146
|
className: "flex-1",
|
|
121
147
|
contentContainerClassName: "px-screen-margin pt-space-24 pb-space-24",
|
|
122
148
|
showsVerticalScrollIndicator: false,
|
|
123
|
-
removeClippedSubviews: true,
|
|
124
149
|
keyboardShouldPersistTaps: "handled",
|
|
125
150
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
126
151
|
className: "mb-space-16",
|
|
@@ -142,28 +167,60 @@ const LanguageSelectorScreen = ({
|
|
|
142
167
|
label: t('language.search') || 'Search languages'
|
|
143
168
|
})
|
|
144
169
|
}), /*#__PURE__*/_jsx(SettingsListGroup, {
|
|
145
|
-
|
|
146
|
-
|
|
170
|
+
title: t('language.selected'),
|
|
171
|
+
children: selectedEntries.map((entry, index) => {
|
|
172
|
+
const isPrimary = index === 0;
|
|
173
|
+
const canRemove = selected.length > 1;
|
|
147
174
|
return /*#__PURE__*/_jsx(SettingsListItem, {
|
|
148
|
-
icon:
|
|
149
|
-
|
|
150
|
-
|
|
175
|
+
icon: renderChip(entry),
|
|
176
|
+
title: entry.nativeName,
|
|
177
|
+
description: entry.name,
|
|
178
|
+
onPress: isPrimary ? undefined : () => handleSetPrimary(entry.code),
|
|
179
|
+
disabled: isBusy,
|
|
180
|
+
accessibilityLabel: isPrimary ? `${entry.name} — ${t('language.primary')}` : entry.name,
|
|
181
|
+
rightElement: isPrimary ? /*#__PURE__*/_jsx(View, {
|
|
182
|
+
className: "bg-fill-secondary rounded-full px-space-8 py-space-2",
|
|
151
183
|
children: /*#__PURE__*/_jsx(Text, {
|
|
152
|
-
|
|
153
|
-
|
|
184
|
+
className: "text-primary",
|
|
185
|
+
style: styles.primaryBadge,
|
|
186
|
+
children: t('language.primary')
|
|
187
|
+
})
|
|
188
|
+
}) : canRemove ? /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
189
|
+
onPress: () => handleRemove(entry.code),
|
|
190
|
+
disabled: isBusy,
|
|
191
|
+
hitSlop: {
|
|
192
|
+
top: 8,
|
|
193
|
+
bottom: 8,
|
|
194
|
+
left: 8,
|
|
195
|
+
right: 8
|
|
196
|
+
},
|
|
197
|
+
accessibilityRole: "button",
|
|
198
|
+
accessibilityLabel: `${t('language.remove')} ${entry.name}`,
|
|
199
|
+
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
200
|
+
name: "close-circle",
|
|
201
|
+
size: REMOVE_ICON_SIZE,
|
|
202
|
+
color: bloomTheme.colors.textSecondary
|
|
154
203
|
})
|
|
155
|
-
}),
|
|
156
|
-
title: language.name,
|
|
157
|
-
description: language.nativeName,
|
|
158
|
-
onPress: () => handleLanguageSelect(language.id),
|
|
159
|
-
rightElement: isSelected ? /*#__PURE__*/_jsx(Ionicons, {
|
|
160
|
-
name: "checkmark-circle",
|
|
161
|
-
size: CHECK_ICON_SIZE,
|
|
162
|
-
color: bloomTheme.colors.primary
|
|
163
204
|
}) : undefined,
|
|
164
205
|
showChevron: false
|
|
165
|
-
},
|
|
206
|
+
}, entry.code);
|
|
166
207
|
})
|
|
208
|
+
}), /*#__PURE__*/_jsx(SettingsListGroup, {
|
|
209
|
+
title: t('language.available'),
|
|
210
|
+
children: availableEntries.map(entry => /*#__PURE__*/_jsx(SettingsListItem, {
|
|
211
|
+
icon: renderChip(entry),
|
|
212
|
+
title: entry.nativeName,
|
|
213
|
+
description: entry.name,
|
|
214
|
+
onPress: () => handleAdd(entry.code),
|
|
215
|
+
disabled: isBusy,
|
|
216
|
+
accessibilityLabel: entry.name,
|
|
217
|
+
rightElement: /*#__PURE__*/_jsx(Ionicons, {
|
|
218
|
+
name: "add-circle-outline",
|
|
219
|
+
size: REMOVE_ICON_SIZE,
|
|
220
|
+
color: bloomTheme.colors.textSecondary
|
|
221
|
+
}),
|
|
222
|
+
showChevron: false
|
|
223
|
+
}, entry.code))
|
|
167
224
|
})]
|
|
168
225
|
})]
|
|
169
226
|
});
|
|
@@ -180,13 +237,18 @@ const styles = StyleSheet.create({
|
|
|
180
237
|
fontSize: 16,
|
|
181
238
|
lineHeight: 22
|
|
182
239
|
},
|
|
183
|
-
|
|
184
|
-
width:
|
|
185
|
-
height:
|
|
186
|
-
borderRadius:
|
|
240
|
+
chip: {
|
|
241
|
+
width: CHIP_SIZE,
|
|
242
|
+
height: CHIP_SIZE,
|
|
243
|
+
borderRadius: CHIP_SIZE / 2
|
|
244
|
+
},
|
|
245
|
+
chipLabel: {
|
|
246
|
+
fontSize: 13,
|
|
247
|
+
fontWeight: '600'
|
|
187
248
|
},
|
|
188
|
-
|
|
189
|
-
fontSize:
|
|
249
|
+
primaryBadge: {
|
|
250
|
+
fontSize: 12,
|
|
251
|
+
fontWeight: '600'
|
|
190
252
|
}
|
|
191
253
|
});
|
|
192
254
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","useState","View","StyleSheet","ScrollView","TouchableOpacity","useTheme","Ionicons","toast","H1","Text","SearchInput","SettingsListGroup","SettingsListItem","SUPPORTED_LANGUAGES","getNativeLanguageName","Header","useI18n","useOxy","addLocale","removeLocale","setPrimaryLocale","useUpdateProfile","jsx","_jsx","jsxs","_jsxs","CHIP_SIZE","REMOVE_ICON_SIZE","CATALOG_BY_CODE","Map","map","entry","code","LanguageSelectorScreen","goBack","onClose","user","isAuthenticated","currentLanguage","currentLanguages","setLanguage","t","bloomTheme","updateProfile","query","setQuery","isSubmitting","setIsSubmitting","selected","length","selectedSet","Set","selectedEntries","get","filter","undefined","availableEntries","normalizedQuery","trim","toLowerCase","has","name","includes","nativeName","isBusy","isPending","commitSelection","next","announceCode","id","mutateAsync","languages","success","lang","error","__DEV__","console","handleAdd","handleSetPrimary","handleRemove","renderChip","className","style","styles","chip","children","chipLabel","language","toUpperCase","title","subtitle","onBack","variant","elevation","contentContainerClassName","showsVerticalScrollIndicator","keyboardShouldPersistTaps","bigTitle","bigSubtitle","value","onChangeText","onClearText","label","index","isPrimary","canRemove","icon","description","onPress","disabled","accessibilityLabel","rightElement","primaryBadge","hitSlop","top","bottom","left","right","accessibilityRole","size","color","colors","textSecondary","showChevron","create","fontSize","lineHeight","letterSpacing","width","height","borderRadius","fontWeight","memo"],"sourceRoot":"../../../../src","sources":["ui/screens/LanguageSelectorScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import { AccessibilityInfo, Platform, View, ScrollView } from 'react-native';
|
|
|
5
5
|
import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
|
|
6
6
|
import { Switch } from '@oxyhq/bloom/switch';
|
|
7
7
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
8
|
+
import { getNativeLanguageName } from '@oxyhq/core';
|
|
8
9
|
import Header from "../components/Header.js";
|
|
9
10
|
import { SettingsIcon } from "../components/SettingsIcon.js";
|
|
10
11
|
import { useI18n } from "../hooks/useI18n.js";
|
|
@@ -109,12 +110,10 @@ const PreferencesScreen = ({
|
|
|
109
110
|
}
|
|
110
111
|
}, [themePref, t]);
|
|
111
112
|
const nextTheme = THEME_ORDER[(THEME_ORDER.indexOf(themePref) + 1) % THEME_ORDER.length] ?? 'system';
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return locale;
|
|
117
|
-
}, [prefs?.language, locale]);
|
|
113
|
+
|
|
114
|
+
// The active UI locale is driven by the account's primary language when
|
|
115
|
+
// signed in (else the device locale) — surfaced here via the i18n `locale`.
|
|
116
|
+
const languageDescription = useMemo(() => getNativeLanguageName(locale), [locale]);
|
|
118
117
|
const isSaving = updateMutation.isPending;
|
|
119
118
|
return /*#__PURE__*/_jsxs(View, {
|
|
120
119
|
className: "flex-1 bg-bg",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","AccessibilityInfo","Platform","View","ScrollView","SettingsListGroup","SettingsListItem","Switch","useTheme","Header","SettingsIcon","useI18n","useOxy","useCurrentUser","useUpdateUserPreferences","jsx","_jsx","jsxs","_jsxs","THEME_ORDER","getDeviceTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","PreferencesScreen","onClose","goBack","navigate","bloomTheme","t","locale","isAuthenticated","data","user","enabled","updateMutation","prefs","userPreferences","themePref","theme","reduceMotionPref","reduceMotion","deviceTimezone","timezone","systemReduceMotion","setSystemReduceMotion","cancelled","isReduceMotionEnabled","then","value","catch","sub","addEventListener","remove","handleThemeChange","nextTheme","patch","mutateAsync","handleReduceMotionToggle","next","handleResetTimezone","themeDisplay","indexOf","length","languageDescription","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","AccessibilityInfo","Platform","View","ScrollView","SettingsListGroup","SettingsListItem","Switch","useTheme","getNativeLanguageName","Header","SettingsIcon","useI18n","useOxy","useCurrentUser","useUpdateUserPreferences","jsx","_jsx","jsxs","_jsxs","THEME_ORDER","getDeviceTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","PreferencesScreen","onClose","goBack","navigate","bloomTheme","t","locale","isAuthenticated","data","user","enabled","updateMutation","prefs","userPreferences","themePref","theme","reduceMotionPref","reduceMotion","deviceTimezone","timezone","systemReduceMotion","setSystemReduceMotion","cancelled","isReduceMotionEnabled","then","value","catch","sub","addEventListener","remove","handleThemeChange","nextTheme","patch","mutateAsync","handleReduceMotionToggle","next","handleResetTimezone","themeDisplay","indexOf","length","languageDescription","isSaving","isPending","className","children","title","onBack","variant","elevation","icon","name","color","colors","primary","description","onPress","disabled","success","rightElement","onValueChange","showChevron","info","undefined","OS","secondary","memo"],"sourceRoot":"../../../../src","sources":["ui/screens/PreferencesScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { ViewStyle, TextStyle, StyleProp } from 'react-native';
|
|
3
3
|
import type { BulkFollowResult, BulkUnfollowResult } from '@oxyhq/core';
|
|
4
4
|
/** Props shared by both single- and multi-user follow modes. */
|
|
5
5
|
interface FollowButtonBaseProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMrF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,yEAAyE;AACzE,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAgNjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { ViewStyle, TextStyle, StyleProp } from 'react-native';
|
|
3
3
|
import type { PaymentItem, PaymentGatewayResult } from '../screens/PaymentGatewayScreen';
|
|
4
4
|
export interface OxyPayButtonProps {
|
|
5
5
|
style?: StyleProp<ViewStyle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyPayButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyPayButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"OxyPayButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/OxyPayButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGzF,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACzD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4B7C,CAAC;AAcF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsIcon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/SettingsIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SettingsIcon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/SettingsIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,UAAU,iBAAiB;IACvB,uCAAuC;IACvC,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD,eAAO,MAAM,YAAY,+CAA8B,CAAC;AACxD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoIcon.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/logo/LogoIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LogoIcon.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/logo/LogoIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,UAAU,aAAa;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAmBD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2B5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoText.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/logo/LogoText.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LogoText.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/logo/LogoText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,UAAU,aAAa;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAmBD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2B5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { OxyContextState, OxyContextProviderProps } from './oxyContextTypes';
|
|
3
3
|
export type { OxyContextState, PasswordSignInResult, OxyContextProviderProps } from './oxyContextTypes';
|
|
4
4
|
export declare const OxyProvider: React.FC<OxyContextProviderProps>;
|
|
5
5
|
export declare const OxyContextProvider: React.FC<OxyContextProviderProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0D/B,OAAO,
|
|
1
|
+
{"version":3,"file":"OxyContext.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/OxyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0D/B,OAAO,KAAK,EACV,eAAe,EAEf,uBAAuB,EAExB,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAIxG,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA83BzD,CAAC;AAEF,eAAO,MAAM,kBAAkB,mCAAc,CAAC;AAiE9C,eAAO,MAAM,MAAM,QAAO,eAMzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitSessionFlow.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/commitSessionFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"commitSessionFlow.d.ts","sourceRoot":"","sources":["../../../../../src/ui/context/commitSessionFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMxC,MAAM,WAAW,6BAA6B;IAC5C;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,6EAA6E;IAC7E,mBAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,sCAAsC;IACtC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,yEAAyE;IACzE,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,6EAA6E;IAC7E,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
|
|
@@ -32,7 +32,6 @@ export interface UseAuthOperationsOptions {
|
|
|
32
32
|
sessionClient: SessionClient;
|
|
33
33
|
/** Reprojects `sessionClient.getState()` onto sessions/activeSessionId/user (Task 1's callback). Awaited after a partial `signOut` so the exposed state reflects the server truth before the call resolves. */
|
|
34
34
|
syncFromClient: () => Promise<void>;
|
|
35
|
-
applyLanguagePreference: (user: User) => Promise<void>;
|
|
36
35
|
onAuthStateChange?: (user: User | null) => void;
|
|
37
36
|
onError?: (error: ApiError) => void;
|
|
38
37
|
loginSuccess: (user: User) => void;
|
|
@@ -62,5 +61,5 @@ export declare function clearPersistedAuthSafe(store: AuthStateStore, logger?: (
|
|
|
62
61
|
* Authentication operations using public key cryptography.
|
|
63
62
|
* Accepts public key as parameter - identity management is handled by the app layer.
|
|
64
63
|
*/
|
|
65
|
-
export declare const useAuthOperations: ({ oxyServices, store, activeSessionId, setActiveSessionId, updateSessions, saveActiveSessionId, clearSessionState, switchSession, sessionClient, syncFromClient,
|
|
64
|
+
export declare const useAuthOperations: ({ oxyServices, store, activeSessionId, setActiveSessionId, updateSessions, saveActiveSessionId, clearSessionState, switchSession, sessionClient, syncFromClient, onAuthStateChange, onError, loginSuccess, loginFailure, logoutStore, setAuthState, logger, }: UseAuthOperationsOptions) => UseAuthOperationsResult;
|
|
66
65
|
//# sourceMappingURL=useAuthOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,0JAA0J;IAC1J,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;;;OAKG;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B,+MAA+M;IAC/M,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,
|
|
1
|
+
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,0JAA0J;IAC1J,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;;;OAKG;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B,+MAA+M;IAC/M,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAClD,IAAI,CAIN;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,+PAkB/B,wBAAwB,KAAG,uBAkR7B,CAAC"}
|
|
@@ -27,7 +27,10 @@ export interface OxyContextState {
|
|
|
27
27
|
isAuthResolved: boolean;
|
|
28
28
|
isStorageReady: boolean;
|
|
29
29
|
error: string | null;
|
|
30
|
+
/** Active UI locale (`language-REGION`): the account's primary locale when signed in, else the guest/device locale. */
|
|
30
31
|
currentLanguage: string;
|
|
32
|
+
/** Ordered account locales (primary first) when signed in, or the single guest override when signed out. */
|
|
33
|
+
currentLanguages: string[];
|
|
31
34
|
currentLanguageMetadata: ReturnType<typeof useLanguageManagement>['metadata'];
|
|
32
35
|
currentLanguageName: string;
|
|
33
36
|
currentNativeLanguageName: string;
|