@ethora/chat-component-rn 26.8.3 → 26.8.4

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 (61) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +43 -6
  3. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  4. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +136 -3
  5. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  6. package/lib/commonjs/helpers/preferencesStorage.js +44 -0
  7. package/lib/commonjs/helpers/preferencesStorage.js.map +1 -0
  8. package/lib/commonjs/i18n/strings.js +42 -0
  9. package/lib/commonjs/i18n/strings.js.map +1 -1
  10. package/lib/commonjs/main.js +13 -0
  11. package/lib/commonjs/main.js.map +1 -1
  12. package/lib/commonjs/roomStore/chatSettingsSlice.js +17 -4
  13. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  14. package/lib/commonjs/services/pushRegistration.js +13 -2
  15. package/lib/commonjs/services/pushRegistration.js.map +1 -1
  16. package/lib/commonjs/theme/theme.js +28 -4
  17. package/lib/commonjs/theme/theme.js.map +1 -1
  18. package/lib/commonjs/version.js +1 -1
  19. package/lib/module/components/MainComponents/ReduxWrapper.js +47 -10
  20. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  21. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +139 -6
  22. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  23. package/lib/module/helpers/preferencesStorage.js +36 -0
  24. package/lib/module/helpers/preferencesStorage.js.map +1 -0
  25. package/lib/module/i18n/strings.js +42 -0
  26. package/lib/module/i18n/strings.js.map +1 -1
  27. package/lib/module/main.js +1 -0
  28. package/lib/module/main.js.map +1 -1
  29. package/lib/module/roomStore/chatSettingsSlice.js +14 -3
  30. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  31. package/lib/module/services/pushRegistration.js +13 -2
  32. package/lib/module/services/pushRegistration.js.map +1 -1
  33. package/lib/module/theme/theme.js +28 -3
  34. package/lib/module/theme/theme.js.map +1 -1
  35. package/lib/module/version.js +1 -1
  36. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  37. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  38. package/lib/typescript/helpers/preferencesStorage.d.ts +11 -0
  39. package/lib/typescript/helpers/preferencesStorage.d.ts.map +1 -0
  40. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  41. package/lib/typescript/main.d.ts +2 -0
  42. package/lib/typescript/main.d.ts.map +1 -1
  43. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +12 -1
  44. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  45. package/lib/typescript/services/pushRegistration.d.ts.map +1 -1
  46. package/lib/typescript/theme/theme.d.ts +17 -3
  47. package/lib/typescript/theme/theme.d.ts.map +1 -1
  48. package/lib/typescript/types/types.d.ts +23 -1
  49. package/lib/typescript/types/types.d.ts.map +1 -1
  50. package/lib/typescript/version.d.ts +1 -1
  51. package/package.json +2 -2
  52. package/src/components/MainComponents/ReduxWrapper.tsx +52 -11
  53. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +157 -4
  54. package/src/helpers/preferencesStorage.ts +40 -0
  55. package/src/i18n/strings.ts +42 -0
  56. package/src/main.ts +2 -0
  57. package/src/roomStore/chatSettingsSlice.ts +24 -2
  58. package/src/services/pushRegistration.ts +15 -2
  59. package/src/theme/theme.ts +39 -5
  60. package/src/types/types.ts +24 -1
  61. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -7,10 +7,14 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this pr
7
7
 
8
8
  ### Added
9
9
 
10
+ - **Settings: Appearance (Light / Dark / System) and a Push notifications switch.** Two new cards on the Settings screen, in the same card style as Manage Data / Visibility. The appearance pick is persisted per device (`@ethora/preferences`, `helpers/preferencesStorage.ts`), folded into `config.dark` by the store (`setThemePreference`; a later `setConfig` from the host keeps the user's choice) so every consumer sees it, and reported to the host through `eventHandlers.onThemeChange(preference, isDark)`. `config.dark` accepts `'system'`, resolved against the OS scheme (`resolveTheme(config, systemDark)` / `isDarkTheme`, falling back to `Appearance.getColorScheme()` for callers without a hook). The push switch (`setPushEnabled`) is wired into the SDK's own token registration: off releases every device-token registration on the backend and keeps the tokens, on registers them again, `registerPushToken` resolves `'disabled'` meanwhile; the host is told through `eventHandlers.onPushNotificationsToggle(enabled)`. `settings.hideAppearance` / `settings.hidePushToggle` hide either card. `ThemePreference`, `setThemePreference`, `setPushEnabled` are exported. Tests in `userSettingsScreen.test.tsx`, `theme.test.ts`, `pushRegistration.test.ts`.
11
+
10
12
  - **`registerPushToken` / `unregisterPushToken` / `getRegisteredPushToken` — the host hands the SDK its push token; the SDK does the rest.** Until now the only code that filed a device token was `usePushNotifications`, a Firebase-bound hook that was never mounted and not exported, so a host had no way to register a token through the SDK at all (`instructions.md` claimed otherwise). `registerPushToken(token, { tokenType? })` (`src/services/pushRegistration.ts`) files the token under the signed-in user via `POST /v1/push/subscription/{appId}` — the endpoint the web SDK and the Ethora RN app already use — waits for a session when called before sign-in (`'deferred'`), dedupes the same token + account, honours `pushNotifications.enabled: false` (`'disabled'`), and rejects with `PushRegistrationError` (`status`, `body`) when the backend refuses. On logout `logoutService` releases the registration (`DELETE`, before the access token is cleared) and keeps the token, so the next login of any account is registered again without another call. `unregisterPushToken()` deletes and forgets (`'unregistered' | 'forgotten'`). `detectPushTokenType` tells `expo` / `apns` / `fcm` tokens apart by shape; a backend that predates `tokenType` still gets `apns` / `fcm` tokens through the legacy payload, while `expo` and `apns-voip` are never downgraded into something it could not deliver to. `pushNotifications.apiUrl` keeps the standalone push gateway (`ethora-node-push`) reachable as an explicit legacy mode with its own strict schema (`projectName`, not `projectId`, which the SDK used to send). A device holds up to two tokens — the chat token (`expo` / `fcm` / `apns`) and an optional PushKit `apns-voip` token — registered, released and re-registered together; a rotated token releases the one it replaces. `config.pushNotifications.getPushTokens` is the declarative alternative (called once per login, retried after a back-off on failure), so a host can hand over tokens without wiring `registerPushToken` itself; both can be combined. `PushTokenType`, `PushTokenRegistration`, `PushDeviceType`, `PushSubscriptionPayload`, `RegisterPushTokenOptions/Outcome`, `UnregisterPushTokenOptions/Outcome`, `RegisteredPushToken`, `getRegisteredPushTokens` and `isPushRegistrationError` are exported. The two-slot model and the declarative hook follow `feat/push-token-providers`; the transport differs (main API instead of the gateway, see Fixed). Tests in `pushRegistration.test.ts`.
11
13
 
12
14
  ### Fixed
13
15
 
16
+ - **Android crashed on launch with `NoClassDefFoundError: expo.modules.kotlin.types.AnyTypeProvider` (expo-secure-store).** `expo-secure-store` was pinned to the SDK 54 line (`~15.0.7`, resolved 15.0.8) while the app runs Expo 57. Expo 57 consumes modules as prebuilt AARs, and that AAR was compiled against an `expo-modules-core` where `AnyTypeProvider` still existed, so the crash surfaced at native module registration, not at build time. Bumped to `~57.0.4` (`npx expo install --check` lists the rest of the drift).
17
+
14
18
  - **Push registration pointed at a dead endpoint with the wrong payload.** The SDK's only registration path posted `projectId` to `{pushNotifications.apiUrl}/subscriptions` — the standalone gateway, whose Joi schema requires `projectName` and rejects unknown keys, and which the hosted clusters no longer expose at all (`nginx 405`). Every attempt failed and was logged as a success. Registration now goes through the main API by default (see Added); the gateway contract is fixed and kept behind `apiUrl` for self-hosted setups.
15
19
 
16
20
  ### Removed
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ReduxWrapper = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
8
9
  var _reactRedux = require("react-redux");
9
10
  var _reactNativeKeyboardController = require("react-native-keyboard-controller");
10
11
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
@@ -12,6 +13,7 @@ var _native = require("styled-components/native");
12
13
  var _theme = require("../../theme/theme");
13
14
  var _roomStore = require("../../roomStore");
14
15
  var _chatSettingsSlice = require("../../roomStore/chatSettingsSlice");
16
+ var _preferencesStorage = require("../../helpers/preferencesStorage");
15
17
  var _xmppProvider = require("../../context/xmppProvider");
16
18
  var _MessageNotificationContext = require("../../context/MessageNotificationContext");
17
19
  var _ToastContext = require("../../context/ToastContext");
@@ -51,6 +53,42 @@ const ConfigEnabler = ({
51
53
  }, [config, dispatch]);
52
54
  return null;
53
55
  };
56
+ const ChatThemeProvider = ({
57
+ config,
58
+ children
59
+ }) => {
60
+ const dispatch = (0, _reactRedux.useDispatch)();
61
+ const storeConfig = (0, _reactRedux.useSelector)(s => s.chatSettingStore.config);
62
+ const preference = (0, _reactRedux.useSelector)(s => s.chatSettingStore.themePreference);
63
+ const systemDark = (0, _reactNative.useColorScheme)() === 'dark';
64
+ const effective = (0, _theme.applyThemePreference)(storeConfig ?? config, preference);
65
+ const theme = (0, _react.useMemo)(() => (0, _theme.resolveTheme)(effective, systemDark), [effective, systemDark]);
66
+ const hydrated = (0, _react.useRef)(false);
67
+ (0, _react.useEffect)(() => {
68
+ if (hydrated.current) {
69
+ return;
70
+ }
71
+ hydrated.current = true;
72
+ (0, _preferencesStorage.loadPreferences)().then(prefs => {
73
+ if (prefs.theme) {
74
+ dispatch((0, _chatSettingsSlice.setThemePreference)(prefs.theme));
75
+ }
76
+ if (typeof prefs.pushEnabled === 'boolean') {
77
+ dispatch((0, _chatSettingsSlice.setPushEnabled)(prefs.pushEnabled));
78
+ }
79
+ });
80
+ }, [dispatch]);
81
+ const onThemeChange = config?.eventHandlers?.onThemeChange;
82
+ (0, _react.useEffect)(() => {
83
+ if (preference && onThemeChange) {
84
+ onThemeChange(preference, theme.dark);
85
+ }
86
+ }, [preference, theme.dark, onThemeChange]);
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_native.ThemeProvider, {
88
+ theme: theme,
89
+ children: children
90
+ });
91
+ };
54
92
  const ReduxWrapper = exports.ReduxWrapper = /*#__PURE__*/_react.default.memo(({
55
93
  ...props
56
94
  }) => {
@@ -69,12 +107,11 @@ const ReduxWrapper = exports.ReduxWrapper = /*#__PURE__*/_react.default.memo(({
69
107
  // KeyboardAvoidingView under the same flag).
70
108
  const ownKeyboardHandling = !memoizedConfig?.disableKeyboardAvoidingView;
71
109
 
72
- // Light/dark palette (config.dark + config.darkColors). Styled
73
- // components read it via `({ theme }) => theme.surface`; plain RN
74
- // styles via the `useTheme()` hook.
75
- const theme = (0, _react.useMemo)(() => (0, _theme.resolveTheme)(memoizedConfig), [memoizedConfig]);
76
- const tree = /*#__PURE__*/(0, _jsxRuntime.jsx)(_native.ThemeProvider, {
77
- theme: theme,
110
+ // Light/dark palette (config.dark + config.darkColors + the Settings
111
+ // choice). Styled components read it via `({ theme }) => theme.surface`;
112
+ // plain RN styles via the `useTheme()` hook.
113
+ const tree = /*#__PURE__*/(0, _jsxRuntime.jsx)(ChatThemeProvider, {
114
+ config: memoizedConfig,
78
115
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_xmppProvider.XmppProvider, {
79
116
  config: memoizedConfig,
80
117
  isVisible: props.isVisible,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactRedux","_reactNativeKeyboardController","_reactNativeSafeAreaContext","_native","_theme","_roomStore","_chatSettingsSlice","_xmppProvider","_MessageNotificationContext","_ToastContext","_LoginWrapper","_interopRequireDefault","_installPromiseRejectionTracker","_useChatFonts","_pushRegistration","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","installPromiseRejectionTracker","installPushTokenHook","ConfigEnabler","config","dispatch","useDispatch","React","useEffect","setConfig","ReduxWrapper","exports","memo","props","memoizedConfig","useMemo","useChatFonts","typography","ownKeyboardHandling","disableKeyboardAvoidingView","theme","resolveTheme","tree","jsx","ThemeProvider","children","XmppProvider","isVisible","ToastProvider","MessageNotificationProvider","jsxs","Provider","store","SafeAreaProvider","KeyboardProvider"],"sourceRoot":"../../../../src","sources":["components/MainComponents/ReduxWrapper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactRedux","_reactNativeKeyboardController","_reactNativeSafeAreaContext","_native","_theme","_roomStore","_chatSettingsSlice","_preferencesStorage","_xmppProvider","_MessageNotificationContext","_ToastContext","_LoginWrapper","_interopRequireDefault","_installPromiseRejectionTracker","_useChatFonts","_pushRegistration","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","installPromiseRejectionTracker","installPushTokenHook","ConfigEnabler","config","dispatch","useDispatch","React","useEffect","setConfig","ChatThemeProvider","children","storeConfig","useSelector","s","chatSettingStore","preference","themePreference","systemDark","useColorScheme","effective","applyThemePreference","theme","useMemo","resolveTheme","hydrated","useRef","current","loadPreferences","then","prefs","setThemePreference","pushEnabled","setPushEnabled","onThemeChange","eventHandlers","dark","jsx","ThemeProvider","ReduxWrapper","exports","memo","props","memoizedConfig","useChatFonts","typography","ownKeyboardHandling","disableKeyboardAvoidingView","tree","XmppProvider","isVisible","ToastProvider","MessageNotificationProvider","jsxs","Provider","store","SafeAreaProvider","KeyboardProvider"],"sourceRoot":"../../../../src","sources":["components/MainComponents/ReduxWrapper.tsx"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,7 @@ var _chatSettingsSlice = require("../../../roomStore/chatSettingsSlice");
14
14
  var _MODAL_TYPES = require("../../../helpers/constants/MODAL_TYPES");
15
15
  var _useChatSettingState = require("../../../hooks/useChatSettingState");
16
16
  var _typography = require("../../../helpers/typography");
17
+ var _preferencesStorage = require("../../../helpers/preferencesStorage");
17
18
  var _useT = require("../../../i18n/useT");
18
19
  var _useTheme = require("../../../hooks/useTheme");
19
20
  var _jsxRuntime = require("react/jsx-runtime");
@@ -21,6 +22,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
21
22
  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); }
22
23
  /** @format */
23
24
 
25
+ const APPEARANCES = ['light', 'dark', 'system'];
24
26
  const UserSettingsModal = ({
25
27
  handleCloseModal
26
28
  }) => {
@@ -31,6 +33,17 @@ const UserSettingsModal = ({
31
33
  } = (0, _useChatSettingState.useChatSettingState)();
32
34
  const theme = (0, _useTheme.useTheme)();
33
35
  const styles = (0, _react.useMemo)(() => createStyles(theme), [theme]);
36
+ const themePreference = (0, _reactRedux.useSelector)(s => s.chatSettingStore.themePreference);
37
+ const pushEnabled = (0, _reactRedux.useSelector)(s => s.chatSettingStore.pushEnabled);
38
+
39
+ // What the picker shows before the user ever touched it: the host's
40
+ // config.dark, so the selected segment matches what is on screen.
41
+ const appearance = themePreference ?? (config?.dark === 'system' ? 'system' : config?.dark ? 'dark' : 'light');
42
+ const appearanceLabels = (0, _react.useMemo)(() => ({
43
+ light: t('settings.appearance.light'),
44
+ dark: t('settings.appearance.dark'),
45
+ system: t('settings.appearance.system')
46
+ }), [t]);
34
47
  const options = (0, _react.useMemo)(() => [{
35
48
  label: t('settings.manageData.title'),
36
49
  key: _MODAL_TYPES.MODAL_TYPES.MANAGE_DATA
@@ -41,15 +54,85 @@ const UserSettingsModal = ({
41
54
  const handleClick = (0, _react.useCallback)(key => {
42
55
  dispatch((0, _chatSettingsSlice.setActiveModal)(key));
43
56
  }, [dispatch]);
57
+ const handleAppearance = (0, _react.useCallback)(pref => {
58
+ dispatch((0, _chatSettingsSlice.setThemePreference)(pref));
59
+ (0, _preferencesStorage.savePreferences)({
60
+ theme: pref
61
+ });
62
+ }, [dispatch]);
63
+
64
+ // The SDK acts on the flag itself (pushRegistration releases / restores
65
+ // the device-token registrations); the host is told so it can mirror
66
+ // the choice on any native push side it owns.
67
+ const onPushNotificationsToggle = config?.eventHandlers?.onPushNotificationsToggle;
68
+ const handlePush = (0, _react.useCallback)(enabled => {
69
+ dispatch((0, _chatSettingsSlice.setPushEnabled)(enabled));
70
+ (0, _preferencesStorage.savePreferences)({
71
+ pushEnabled: enabled
72
+ });
73
+ if (onPushNotificationsToggle) {
74
+ Promise.resolve(onPushNotificationsToggle(enabled)).catch(err => console.warn('[settings] onPushNotificationsToggle failed', err));
75
+ }
76
+ }, [dispatch, onPushNotificationsToggle]);
44
77
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styledModalComponents.ModalContainerFullScreen, {
45
78
  style: styles.screen,
46
79
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ModalHeaderComponent.default, {
47
80
  handleCloseModal: handleCloseModal,
48
81
  headerTitle: t('settings.menu.title'),
49
82
  titleStyle: (0, _typography.chatTextStyle)(config?.typography?.profile?.screenTitle)
50
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
83
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
51
84
  style: styles.body,
52
- children: options.map(option => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
85
+ children: [!config?.settings?.hideAppearance ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
86
+ style: [styles.card, styles.stackCard],
87
+ testID: "settings-appearance",
88
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
89
+ style: styles.label,
90
+ children: t('settings.appearance.title')
91
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
92
+ style: styles.segmented,
93
+ accessibilityRole: "radiogroup",
94
+ children: APPEARANCES.map(pref => {
95
+ const selected = pref === appearance;
96
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
97
+ testID: `settings-appearance-${pref}`,
98
+ accessibilityRole: "radio",
99
+ accessibilityState: {
100
+ selected
101
+ },
102
+ activeOpacity: 0.7,
103
+ style: [styles.segment, selected && styles.segmentSelected],
104
+ onPress: () => handleAppearance(pref),
105
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
106
+ style: [styles.segmentLabel, selected && styles.segmentLabelSelected],
107
+ children: appearanceLabels[pref]
108
+ })
109
+ }, pref);
110
+ })
111
+ })]
112
+ }) : null, !config?.settings?.hidePushToggle ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
113
+ style: styles.card,
114
+ testID: "settings-notifications",
115
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
116
+ style: styles.switchText,
117
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
118
+ style: styles.label,
119
+ children: t('settings.notifications.push')
120
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
121
+ style: styles.hint,
122
+ children: t('settings.notifications.pushHint')
123
+ })]
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Switch, {
125
+ testID: "settings-push-switch",
126
+ value: pushEnabled !== false,
127
+ onValueChange: handlePush,
128
+ trackColor: {
129
+ true: theme.primary,
130
+ false: theme.surfaceSecondary
131
+ },
132
+ thumbColor: theme.surface,
133
+ ios_backgroundColor: theme.surfaceSecondary
134
+ })]
135
+ }) : null, options.map(option => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
53
136
  testID: `settings-row-${option.key}`,
54
137
  activeOpacity: 0.7,
55
138
  style: styles.card,
@@ -63,7 +146,7 @@ const UserSettingsModal = ({
63
146
  height: 20,
64
147
  style: styles.chevron
65
148
  })]
66
- }, option.key))
149
+ }, option.key))]
67
150
  })]
68
151
  });
69
152
  };
@@ -93,11 +176,61 @@ const createStyles = theme => _reactNative.StyleSheet.create({
93
176
  shadowRadius: 12,
94
177
  elevation: 3
95
178
  },
179
+ // Label above the control instead of beside it: three segments do not
180
+ // fit next to a label on narrow phones.
181
+ stackCard: {
182
+ flexDirection: 'column',
183
+ alignItems: 'stretch',
184
+ gap: 14
185
+ },
96
186
  label: {
97
187
  fontSize: 17,
98
188
  fontWeight: '500',
99
189
  color: theme.text
100
190
  },
191
+ hint: {
192
+ marginTop: 4,
193
+ fontSize: 13,
194
+ lineHeight: 18,
195
+ color: theme.textSecondary
196
+ },
197
+ switchText: {
198
+ flex: 1,
199
+ paddingRight: 16
200
+ },
201
+ segmented: {
202
+ flexDirection: 'row',
203
+ backgroundColor: theme.surfaceSecondary,
204
+ borderRadius: 12,
205
+ padding: 3,
206
+ gap: 3
207
+ },
208
+ segment: {
209
+ flex: 1,
210
+ alignItems: 'center',
211
+ justifyContent: 'center',
212
+ paddingVertical: 9,
213
+ borderRadius: 9
214
+ },
215
+ segmentSelected: {
216
+ backgroundColor: theme.surface,
217
+ shadowColor: theme.shadow,
218
+ shadowOffset: {
219
+ width: 0,
220
+ height: 1
221
+ },
222
+ shadowOpacity: 0.08,
223
+ shadowRadius: 3,
224
+ elevation: 2
225
+ },
226
+ segmentLabel: {
227
+ fontSize: 15,
228
+ fontWeight: '500',
229
+ color: theme.textSecondary
230
+ },
231
+ segmentLabelSelected: {
232
+ color: theme.text
233
+ },
101
234
  chevron: {
102
235
  transform: [{
103
236
  rotate: '-90deg'
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactRedux","_styledModalComponents","_ModalHeaderComponent","_interopRequireDefault","_icons","_chatSettingsSlice","_MODAL_TYPES","_useChatSettingState","_typography","_useT","_useTheme","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","UserSettingsModal","handleCloseModal","useT","dispatch","useDispatch","config","useChatSettingState","theme","useTheme","styles","useMemo","createStyles","options","label","key","MODAL_TYPES","MANAGE_DATA","VISIBILITY","handleClick","useCallback","setActiveModal","jsxs","ModalContainerFullScreen","style","screen","children","jsx","headerTitle","titleStyle","chatTextStyle","typography","profile","screenTitle","View","body","map","option","TouchableOpacity","testID","activeOpacity","card","onPress","Text","ArowDownIcon","color","textSecondary","width","height","chevron","StyleSheet","create","backgroundColor","listBackground","padding","gap","flexDirection","alignItems","justifyContent","surface","borderRadius","paddingHorizontal","paddingVertical","shadowColor","shadow","shadowOffset","shadowOpacity","shadowRadius","elevation","fontSize","fontWeight","text","transform","rotate","_default","exports"],"sourceRoot":"../../../../../src","sources":["components/Modals/UserSettingsModal/UserSettingsModal.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactRedux","_styledModalComponents","_ModalHeaderComponent","_interopRequireDefault","_icons","_chatSettingsSlice","_MODAL_TYPES","_useChatSettingState","_typography","_preferencesStorage","_useT","_useTheme","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","APPEARANCES","UserSettingsModal","handleCloseModal","useT","dispatch","useDispatch","config","useChatSettingState","theme","useTheme","styles","useMemo","createStyles","themePreference","useSelector","s","chatSettingStore","pushEnabled","appearance","dark","appearanceLabels","light","system","options","label","key","MODAL_TYPES","MANAGE_DATA","VISIBILITY","handleClick","useCallback","setActiveModal","handleAppearance","pref","setThemePreference","savePreferences","onPushNotificationsToggle","eventHandlers","handlePush","enabled","setPushEnabled","Promise","resolve","catch","err","console","warn","jsxs","ModalContainerFullScreen","style","screen","children","jsx","headerTitle","titleStyle","chatTextStyle","typography","profile","screenTitle","View","body","settings","hideAppearance","card","stackCard","testID","Text","segmented","accessibilityRole","map","selected","TouchableOpacity","accessibilityState","activeOpacity","segment","segmentSelected","onPress","segmentLabel","segmentLabelSelected","hidePushToggle","switchText","hint","Switch","value","onValueChange","trackColor","true","primary","false","surfaceSecondary","thumbColor","surface","ios_backgroundColor","option","ArowDownIcon","color","textSecondary","width","height","chevron","StyleSheet","create","backgroundColor","listBackground","padding","gap","flexDirection","alignItems","justifyContent","borderRadius","paddingHorizontal","paddingVertical","shadowColor","shadow","shadowOffset","shadowOpacity","shadowRadius","elevation","fontSize","fontWeight","text","marginTop","lineHeight","flex","paddingRight","transform","rotate","_default","exports"],"sourceRoot":"../../../../../src","sources":["components/Modals/UserSettingsModal/UserSettingsModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.savePreferences = exports.loadPreferences = exports.clearPreferences = void 0;
7
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /** @format */
10
+
11
+ const KEY = '@ethora/preferences';
12
+
13
+ /** Small, unencrypted, per-device user preferences set from Settings. */
14
+
15
+ const loadPreferences = async () => {
16
+ try {
17
+ const raw = await _asyncStorage.default.getItem(KEY);
18
+ return raw ? JSON.parse(raw) : {};
19
+ } catch {
20
+ return {};
21
+ }
22
+ };
23
+ exports.loadPreferences = loadPreferences;
24
+ const savePreferences = async patch => {
25
+ try {
26
+ const current = await loadPreferences();
27
+ await _asyncStorage.default.setItem(KEY, JSON.stringify({
28
+ ...current,
29
+ ...patch
30
+ }));
31
+ } catch (error) {
32
+ console.warn('[preferences] save failed', error);
33
+ }
34
+ };
35
+ exports.savePreferences = savePreferences;
36
+ const clearPreferences = async () => {
37
+ try {
38
+ await _asyncStorage.default.removeItem(KEY);
39
+ } catch {
40
+ /* ignore */
41
+ }
42
+ };
43
+ exports.clearPreferences = clearPreferences;
44
+ //# sourceMappingURL=preferencesStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","e","__esModule","default","KEY","loadPreferences","raw","AsyncStorage","getItem","JSON","parse","exports","savePreferences","patch","current","setItem","stringify","error","console","warn","clearPreferences","removeItem"],"sourceRoot":"../../../src","sources":["helpers/preferencesStorage.ts"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqE,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAFrE;;AAKA,MAAMG,GAAG,GAAG,qBAAqB;;AAEjC;;AAMO,MAAMC,eAAe,GAAG,MAAAA,CAAA,KAAwC;EACrE,IAAI;IACF,MAAMC,GAAG,GAAG,MAAMC,qBAAY,CAACC,OAAO,CAACJ,GAAG,CAAC;IAC3C,OAAOE,GAAG,GAAIG,IAAI,CAACC,KAAK,CAACJ,GAAG,CAAC,GAAyB,CAAC,CAAC;EAC1D,CAAC,CAAC,MAAM;IACN,OAAO,CAAC,CAAC;EACX;AACF,CAAC;AAACK,OAAA,CAAAN,eAAA,GAAAA,eAAA;AAEK,MAAMO,eAAe,GAAG,MAC7BC,KAAwB,IACN;EAClB,IAAI;IACF,MAAMC,OAAO,GAAG,MAAMT,eAAe,CAAC,CAAC;IACvC,MAAME,qBAAY,CAACQ,OAAO,CAACX,GAAG,EAAEK,IAAI,CAACO,SAAS,CAAC;MAAE,GAAGF,OAAO;MAAE,GAAGD;IAAM,CAAC,CAAC,CAAC;EAC3E,CAAC,CAAC,OAAOI,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CAAC,2BAA2B,EAAEF,KAAK,CAAC;EAClD;AACF,CAAC;AAACN,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,MAAMQ,gBAAgB,GAAG,MAAAA,CAAA,KAA2B;EACzD,IAAI;IACF,MAAMb,qBAAY,CAACc,UAAU,CAACjB,GAAG,CAAC;EACpC,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC;AAACO,OAAA,CAAAS,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -243,6 +243,13 @@ const en = {
243
243
  'settings.blockedUsers.label': 'Blocked Users',
244
244
  'settings.blockedUsers.description': 'Users you have blocked cannot send you messages or see when you are online.',
245
245
  'settings.blockedUsers.emptyState': "You haven't blocked anyone yet.",
246
+ 'settings.appearance.title': 'Appearance',
247
+ 'settings.appearance.light': 'Light',
248
+ 'settings.appearance.dark': 'Dark',
249
+ 'settings.appearance.system': 'System',
250
+ 'settings.notifications.title': 'Notifications',
251
+ 'settings.notifications.push': 'Push notifications',
252
+ 'settings.notifications.pushHint': 'New messages and calls wake this device even when the app is closed.',
246
253
  'settings.visibility.title': 'Visibility',
247
254
  'settings.visibility.profileLabel': 'Profile Visibility',
248
255
  'settings.visibility.open': 'Open (default)',
@@ -493,6 +500,13 @@ const fr = {
493
500
  'settings.blockedUsers.label': 'Utilisateurs bloqués',
494
501
  'settings.blockedUsers.description': "Les utilisateurs que vous avez bloqués ne peuvent pas vous envoyer de messages ni voir quand vous êtes en ligne.",
495
502
  'settings.blockedUsers.emptyState': "Vous n'avez encore bloqué personne.",
503
+ 'settings.appearance.title': 'Apparence',
504
+ 'settings.appearance.light': 'Clair',
505
+ 'settings.appearance.dark': 'Sombre',
506
+ 'settings.appearance.system': 'Système',
507
+ 'settings.notifications.title': 'Notifications',
508
+ 'settings.notifications.push': 'Notifications push',
509
+ 'settings.notifications.pushHint': 'Les nouveaux messages et appels réveillent cet appareil même quand l\'application est fermée.',
496
510
  'settings.visibility.title': 'Visibilité',
497
511
  'settings.visibility.profileLabel': 'Visibilité du profil',
498
512
  'settings.visibility.open': 'Ouvert (par défaut)',
@@ -743,6 +757,13 @@ const es = {
743
757
  'settings.blockedUsers.label': 'Usuarios bloqueados',
744
758
  'settings.blockedUsers.description': 'Los usuarios que hayas bloqueado no podrán enviarte mensajes ni ver cuándo estás en línea.',
745
759
  'settings.blockedUsers.emptyState': 'Todavía no has bloqueado a nadie.',
760
+ 'settings.appearance.title': 'Apariencia',
761
+ 'settings.appearance.light': 'Claro',
762
+ 'settings.appearance.dark': 'Oscuro',
763
+ 'settings.appearance.system': 'Sistema',
764
+ 'settings.notifications.title': 'Notificaciones',
765
+ 'settings.notifications.push': 'Notificaciones push',
766
+ 'settings.notifications.pushHint': 'Los mensajes y llamadas nuevos despiertan este dispositivo incluso con la aplicación cerrada.',
746
767
  'settings.visibility.title': 'Visibilidad',
747
768
  'settings.visibility.profileLabel': 'Visibilidad del perfil',
748
769
  'settings.visibility.open': 'Abierto (predeterminado)',
@@ -993,6 +1014,13 @@ const pt = {
993
1014
  'settings.blockedUsers.label': 'Utilizadores bloqueados',
994
1015
  'settings.blockedUsers.description': 'Os utilizadores que bloqueou não lhe podem enviar mensagens nem ver quando está online.',
995
1016
  'settings.blockedUsers.emptyState': 'Ainda não bloqueou ninguém.',
1017
+ 'settings.appearance.title': 'Aparência',
1018
+ 'settings.appearance.light': 'Claro',
1019
+ 'settings.appearance.dark': 'Escuro',
1020
+ 'settings.appearance.system': 'Sistema',
1021
+ 'settings.notifications.title': 'Notificações',
1022
+ 'settings.notifications.push': 'Notificações push',
1023
+ 'settings.notifications.pushHint': 'Novas mensagens e chamadas acordam este dispositivo mesmo com o aplicativo fechado.',
996
1024
  'settings.visibility.title': 'Visibilidade',
997
1025
  'settings.visibility.profileLabel': 'Visibilidade do perfil',
998
1026
  'settings.visibility.open': 'Aberto (predefinição)',
@@ -1243,6 +1271,13 @@ const ht = {
1243
1271
  'settings.blockedUsers.label': 'Itilizatè bloke',
1244
1272
  'settings.blockedUsers.description': 'Itilizatè ou bloke yo pa ka voye mesaj ba ou ni wè lè ou an liy.',
1245
1273
  'settings.blockedUsers.emptyState': 'Ou poko bloke pèsonn.',
1274
+ 'settings.appearance.title': 'Aparans',
1275
+ 'settings.appearance.light': 'Klè',
1276
+ 'settings.appearance.dark': 'Fonse',
1277
+ 'settings.appearance.system': 'Sistèm',
1278
+ 'settings.notifications.title': 'Notifikasyon',
1279
+ 'settings.notifications.push': 'Notifikasyon push',
1280
+ 'settings.notifications.pushHint': 'Nouvo mesaj ak apèl reveye aparèy sa a menm lè aplikasyon an fèmen.',
1246
1281
  'settings.visibility.title': 'Vizibilite',
1247
1282
  'settings.visibility.profileLabel': 'Vizibilite pwofil la',
1248
1283
  'settings.visibility.open': 'Louvri (default)',
@@ -1493,6 +1528,13 @@ const zh = {
1493
1528
  'settings.blockedUsers.label': '已屏蔽用户',
1494
1529
  'settings.blockedUsers.description': '被您屏蔽的用户无法向您发送消息,也无法看到您何时在线。',
1495
1530
  'settings.blockedUsers.emptyState': '您还没有屏蔽任何人。',
1531
+ 'settings.appearance.title': '外观',
1532
+ 'settings.appearance.light': '浅色',
1533
+ 'settings.appearance.dark': '深色',
1534
+ 'settings.appearance.system': '跟随系统',
1535
+ 'settings.notifications.title': '通知',
1536
+ 'settings.notifications.push': '推送通知',
1537
+ 'settings.notifications.pushHint': '即使应用已关闭,新消息和来电也会唤醒此设备。',
1496
1538
  'settings.visibility.title': '可见性',
1497
1539
  'settings.visibility.profileLabel': '资料可见性',
1498
1540
  'settings.visibility.open': '公开(默认)',