diff options
-rw-r--r-- | app.config.js | 5 | ||||
-rw-r--r-- | assets/app-icons/icon_default_next.png | bin | 0 -> 497706 bytes | |||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/screens/Settings/AppIconSettings/index.tsx | 16 | ||||
-rw-r--r-- | src/screens/Settings/AppIconSettings/types.ts | 5 | ||||
-rw-r--r-- | src/screens/Settings/AppIconSettings/useAppIconSets.ts | 10 | ||||
-rw-r--r-- | src/screens/Settings/AppearanceSettings.tsx | 4 | ||||
-rw-r--r-- | yarn.lock | 16 |
8 files changed, 32 insertions, 26 deletions
diff --git a/app.config.js b/app.config.js index b30cdf0fe..8a0e6e48c 100644 --- a/app.config.js +++ b/app.config.js @@ -303,6 +303,11 @@ module.exports = function (_config) { android: './assets/app-icons/android_icon_default_dark.png', prerendered: true, }, + next: { + ios: './assets/app-icons/icon_default_next.png', + android: './assets/app-icons/icon_default_next.png', + prerendered: true, + }, /** * Bluesky+ core set diff --git a/assets/app-icons/icon_default_next.png b/assets/app-icons/icon_default_next.png new file mode 100644 index 000000000..8c17c0ea6 --- /dev/null +++ b/assets/app-icons/icon_default_next.png Binary files differdiff --git a/package.json b/package.json index 0f3f68571..c067485d2 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@lingui/react": "^4.14.1", "@mattermost/react-native-paste-input": "mattermost/react-native-paste-input", "@miblanchard/react-native-slider": "^2.6.0", - "@mozzius/expo-dynamic-app-icon": "1.5.0", + "@mozzius/expo-dynamic-app-icon": "^1.7.1", "@react-native-async-storage/async-storage": "2.1.2", "@react-native-menu/menu": "^1.2.3", "@react-native-picker/picker": "2.11.0", diff --git a/src/screens/Settings/AppIconSettings/index.tsx b/src/screens/Settings/AppIconSettings/index.tsx index 799873c2d..953ae2e60 100644 --- a/src/screens/Settings/AppIconSettings/index.tsx +++ b/src/screens/Settings/AppIconSettings/index.tsx @@ -28,7 +28,7 @@ export function AppIconSettingsScreen({}: Props) { getAppIconName(DynamicAppIcon.getAppIcon()), ) - const onSetAppIcon = (icon: string) => { + const onSetAppIcon = (icon: DynamicAppIcon.IconName) => { if (isAndroid) { const next = sets.defaults.find(i => i.id === icon) ?? @@ -37,7 +37,7 @@ export function AppIconSettingsScreen({}: Props) { next ? _(msg`Change app icon to "${next.name}"`) : _(msg`Change app icon`), - // to determine - can we stop this happening? -sfn + // unfortunately necessary -sfn _(msg`The app will be restarted`), [ { @@ -119,7 +119,7 @@ export function AppIconSettingsScreen({}: Props) { ) } -function setAppIcon(icon: string) { +function setAppIcon(icon: DynamicAppIcon.IconName) { if (icon === 'default_light') { return getAppIconName(DynamicAppIcon.setAppIcon(null)) } else { @@ -127,11 +127,11 @@ function setAppIcon(icon: string) { } } -function getAppIconName(icon: string | false) { +function getAppIconName(icon: string | false): DynamicAppIcon.IconName { if (!icon || icon === 'DEFAULT') { return 'default_light' } else { - return icon + return icon as DynamicAppIcon.IconName } } @@ -143,8 +143,8 @@ function Group({ }: { children: React.ReactNode label: string - value: string - onChange: (value: string) => void + value: DynamicAppIcon.IconName + onChange: (value: DynamicAppIcon.IconName) => void }) { return ( <Toggle.Group @@ -153,7 +153,7 @@ function Group({ values={[value]} maxSelections={1} onChange={vals => { - if (vals[0]) onChange(vals[0]) + if (vals[0]) onChange(vals[0] as DynamicAppIcon.IconName) }}> <View style={[a.flex_1, a.rounded_md, a.overflow_hidden]}> {children} diff --git a/src/screens/Settings/AppIconSettings/types.ts b/src/screens/Settings/AppIconSettings/types.ts index 5010f6f02..02c2791dc 100644 --- a/src/screens/Settings/AppIconSettings/types.ts +++ b/src/screens/Settings/AppIconSettings/types.ts @@ -1,7 +1,8 @@ -import {ImageSourcePropType} from 'react-native' +import {type ImageSourcePropType} from 'react-native' +import type * as DynamicAppIcon from '@mozzius/expo-dynamic-app-icon' export type AppIconSet = { - id: string + id: DynamicAppIcon.IconName name: string iosImage: () => ImageSourcePropType androidImage: () => ImageSourcePropType diff --git a/src/screens/Settings/AppIconSettings/useAppIconSets.ts b/src/screens/Settings/AppIconSettings/useAppIconSets.ts index fd3caeb30..f7d191f77 100644 --- a/src/screens/Settings/AppIconSettings/useAppIconSets.ts +++ b/src/screens/Settings/AppIconSettings/useAppIconSets.ts @@ -37,6 +37,16 @@ export function useAppIconSets() { ) }, }, + { + id: 'next', + name: _(msg({context: 'Name of app icon variant', message: 'Next'})), + iosImage: () => { + return require(`../../../../assets/app-icons/icon_default_next.png`) + }, + androidImage: () => { + return require(`../../../../assets/app-icons/icon_default_next.png`) + }, + }, ] satisfies AppIconSet[] /** diff --git a/src/screens/Settings/AppearanceSettings.tsx b/src/screens/Settings/AppearanceSettings.tsx index 492d6d172..5d597ff8e 100644 --- a/src/screens/Settings/AppearanceSettings.tsx +++ b/src/screens/Settings/AppearanceSettings.tsx @@ -12,7 +12,6 @@ import { type CommonNavigatorParams, type NativeStackScreenProps, } from '#/lib/routes/types' -import {useGate} from '#/lib/statsig/statsig' import {isNative} from '#/platform/detection' import {useSetThemePrefs, useThemePrefs} from '#/state/shell' import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem' @@ -32,7 +31,6 @@ type Props = NativeStackScreenProps<CommonNavigatorParams, 'AppearanceSettings'> export function AppearanceSettingsScreen({}: Props) { const {_} = useLingui() const {fonts} = useAlf() - const gate = useGate() const {colorMode, darkTheme} = useThemePrefs() const {setColorMode, setDarkTheme} = useSetThemePrefs() @@ -180,7 +178,7 @@ export function AppearanceSettingsScreen({}: Props) { onChange={onChangeFontScale} /> - {isNative && IS_INTERNAL && gate('debug_subscriptions') && ( + {isNative && IS_INTERNAL && ( <> <SettingsList.Divider /> <AppIconSettingsListItem /> diff --git a/yarn.lock b/yarn.lock index 9145826a4..843561fa8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5134,13 +5134,12 @@ resolved "https://registry.yarnpkg.com/@miblanchard/react-native-slider/-/react-native-slider-2.6.0.tgz#9f78c805d637ffaff0e3e7429932d2995a67edc9" integrity sha512-o7hk/f/8vkqh6QNR5L52m+ws846fQeD/qNCC9CCSRdBqjq66KiCgbxzlhRzKM/gbtxcvMYMIEEJ1yes5cr6I3A== -"@mozzius/expo-dynamic-app-icon@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.5.0.tgz#c5f88c309965b6d6b89cfd5e2c00faa7bda736af" - integrity sha512-yE2yEPO+HQmOqsX7cECh7/vu/LXnqhHGsVm3UiVi/3gaK8u5hAkPTNzZ0Qu6vnMwjPnY+uFbN6X+6Aj9c9yjMQ== +"@mozzius/expo-dynamic-app-icon@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.7.1.tgz#20a6475af256ab93112bbaac1c2f3dd052562d16" + integrity sha512-zDcY11B3tsQ9WsPTcszUCa6SpygfYz1e4p8PGn/4XhwYbOHJ53sEnGVQ1YlwzQ87SeWPlqrfzY6SUr9GpNq2Kg== dependencies: "@expo/image-utils" "^0.6.3" - expo-modules-core "^2.1.1" xcode "^3.0.1" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": @@ -11380,13 +11379,6 @@ expo-modules-core@2.4.0: dependencies: invariant "^2.2.4" -expo-modules-core@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.1.1.tgz#970af4cfd70c8aa6fc0096dd0a6578aa003a479f" - integrity sha512-yQzYCLR2mre4BNMXuqkeJ0oSNgmGEMI6BcmIzeNZbC2NFEjiaDpKvlV9bclYCtyVhUEVNbJcEPYMr6c1Y4eR4w== - dependencies: - invariant "^2.2.4" - expo-notifications@~0.31.3: version "0.31.3" resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.31.3.tgz#eb82c9975e26dcc4fa694b79970792c897ad8d16" |