Bluesky app fork with some witchin' additions 💫

Merge https://github.com/bluesky-social/social-app

+62 -51
+5
app.config.js
··· 327 327 android: './assets/app-icons/android_icon_default_dark.png', 328 328 prerendered: true, 329 329 }, 330 + next: { 331 + ios: './assets/app-icons/icon_default_next.png', 332 + android: './assets/app-icons/icon_default_next.png', 333 + prerendered: true, 334 + }, 330 335 331 336 /** 332 337 * Bluesky+ core set
assets/app-icons/icon_default_next.png

This is a binary file and will not be displayed.

+1 -1
package.json
··· 92 92 "@lingui/react": "^4.14.1", 93 93 "@mattermost/react-native-paste-input": "mattermost/react-native-paste-input", 94 94 "@miblanchard/react-native-slider": "^2.6.0", 95 - "@mozzius/expo-dynamic-app-icon": "1.5.0", 95 + "@mozzius/expo-dynamic-app-icon": "^1.7.1", 96 96 "@react-native-async-storage/async-storage": "2.1.2", 97 97 "@react-native-menu/menu": "^1.2.3", 98 98 "@react-native-picker/picker": "2.11.0",
+29 -24
src/locale/locales/en/messages.po
··· 1114 1114 msgstr "" 1115 1115 1116 1116 #: src/Navigation.tsx:390 1117 - #: src/screens/Settings/AppearanceSettings.tsx:88 1117 + #: src/screens/Settings/AppearanceSettings.tsx:86 1118 1118 #: src/screens/Settings/Settings.tsx:212 1119 1119 #: src/screens/Settings/Settings.tsx:215 1120 1120 msgid "Appearance" ··· 1204 1204 msgid "Assign topic for algo" 1205 1205 msgstr "" 1206 1206 1207 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:48 1207 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:58 1208 1208 msgctxt "Name of app icon variant" 1209 1209 msgid "Aurora" 1210 1210 msgstr "" ··· 1395 1395 msgid "Bluesky cannot confirm the authenticity of the claimed date." 1396 1396 msgstr "" 1397 1397 1398 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:165 1398 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:175 1399 1399 msgctxt "Name of app icon variant" 1400 1400 msgid "Bluesky Classic™" 1401 1401 msgstr "" ··· 1954 1954 msgstr "" 1955 1955 1956 1956 #: src/components/dialogs/Embed.tsx:154 1957 - #: src/screens/Settings/AppearanceSettings.tsx:96 1957 + #: src/screens/Settings/AppearanceSettings.tsx:94 1958 1958 msgid "Color mode" 1959 1959 msgstr "" 1960 1960 ··· 2414 2414 2415 2415 #: src/components/dialogs/Embed.tsx:167 2416 2416 #: src/components/dialogs/Embed.tsx:169 2417 - #: src/screens/Settings/AppearanceSettings.tsx:108 2418 - #: src/screens/Settings/AppearanceSettings.tsx:129 2417 + #: src/screens/Settings/AppearanceSettings.tsx:106 2418 + #: src/screens/Settings/AppearanceSettings.tsx:127 2419 2419 msgid "Dark" 2420 2420 msgstr "" 2421 2421 ··· 2428 2428 msgid "Dark mode" 2429 2429 msgstr "" 2430 2430 2431 - #: src/screens/Settings/AppearanceSettings.tsx:121 2431 + #: src/screens/Settings/AppearanceSettings.tsx:119 2432 2432 msgid "Dark theme" 2433 2433 msgstr "" 2434 2434 ··· 2450 2450 msgid "Debug panel" 2451 2451 msgstr "" 2452 2452 2453 - #: src/screens/Settings/AppearanceSettings.tsx:171 2453 + #: src/screens/Settings/AppearanceSettings.tsx:169 2454 2454 msgid "Default" 2455 2455 msgstr "" 2456 2456 ··· 2608 2608 msgid "Dialog: adjust who can interact with this post" 2609 2609 msgstr "" 2610 2610 2611 - #: src/screens/Settings/AppearanceSettings.tsx:125 2611 + #: src/screens/Settings/AppearanceSettings.tsx:123 2612 2612 msgid "Dim" 2613 2613 msgstr "" 2614 2614 ··· 3616 3616 msgid "Fitness" 3617 3617 msgstr "" 3618 3618 3619 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:149 3619 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:159 3620 3620 msgctxt "Name of app icon variant" 3621 3621 msgid "Flat Black" 3622 3622 msgstr "" 3623 3623 3624 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:117 3624 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:127 3625 3625 msgctxt "Name of app icon variant" 3626 3626 msgid "Flat Blue" 3627 3627 msgstr "" 3628 3628 3629 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:133 3629 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:143 3630 3630 msgctxt "Name of app icon variant" 3631 3631 msgid "Flat White" 3632 3632 msgstr "" ··· 3758 3758 msgid "Follows You" 3759 3759 msgstr "" 3760 3760 3761 - #: src/screens/Settings/AppearanceSettings.tsx:143 3761 + #: src/screens/Settings/AppearanceSettings.tsx:141 3762 3762 msgid "Font" 3763 3763 msgstr "" 3764 3764 3765 - #: src/screens/Settings/AppearanceSettings.tsx:163 3765 + #: src/screens/Settings/AppearanceSettings.tsx:161 3766 3766 msgid "Font size" 3767 3767 msgstr "" 3768 3768 ··· 3783 3783 msgid "For security reasons, you won't be able to view this again. If you lose this app password, you'll need to generate a new one." 3784 3784 msgstr "" 3785 3785 3786 - #: src/screens/Settings/AppearanceSettings.tsx:145 3786 + #: src/screens/Settings/AppearanceSettings.tsx:143 3787 3787 msgid "For the best experience, we recommend using the theme font." 3788 3788 msgstr "" 3789 3789 ··· 4549 4549 msgid "Languages" 4550 4550 msgstr "" 4551 4551 4552 - #: src/screens/Settings/AppearanceSettings.tsx:175 4552 + #: src/screens/Settings/AppearanceSettings.tsx:173 4553 4553 msgid "Larger" 4554 4554 msgstr "" 4555 4555 ··· 4680 4680 4681 4681 #: src/components/dialogs/Embed.tsx:162 4682 4682 #: src/components/dialogs/Embed.tsx:164 4683 - #: src/screens/Settings/AppearanceSettings.tsx:104 4683 + #: src/screens/Settings/AppearanceSettings.tsx:102 4684 4684 msgid "Light" 4685 4685 msgstr "" 4686 4686 ··· 5038 5038 msgid "Messages" 5039 5039 msgstr "" 5040 5040 5041 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:101 5041 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:111 5042 5042 msgctxt "Name of app icon variant" 5043 5043 msgid "Midnight" 5044 5044 msgstr "" ··· 5439 5439 #: src/screens/Onboarding/state.ts:111 5440 5440 #: src/screens/Search/modules/ExploreTrendingTopics.tsx:238 5441 5441 msgid "News" 5442 + msgstr "" 5443 + 5444 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:42 5445 + msgctxt "Name of app icon variant" 5446 + msgid "Next" 5442 5447 msgstr "" 5443 5448 5444 5449 #: src/screens/Login/ForgotPasswordForm.tsx:137 ··· 8052 8057 msgid "Skip this flow" 8053 8058 msgstr "" 8054 8059 8055 - #: src/screens/Settings/AppearanceSettings.tsx:167 8060 + #: src/screens/Settings/AppearanceSettings.tsx:165 8056 8061 msgid "Smaller" 8057 8062 msgstr "" 8058 8063 ··· 8310 8315 msgid "Suggestive" 8311 8316 msgstr "" 8312 8317 8313 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:72 8318 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:82 8314 8319 msgctxt "Name of app icon variant" 8315 8320 msgid "Sunrise" 8316 8321 msgstr "" 8317 8322 8318 - #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:86 8323 + #: src/screens/Settings/AppIconSettings/useAppIconSets.ts:96 8319 8324 msgctxt "Name of app icon variant" 8320 8325 msgid "Sunset" 8321 8326 msgstr "" ··· 8348 8353 8349 8354 #: src/components/dialogs/Embed.tsx:157 8350 8355 #: src/components/dialogs/Embed.tsx:159 8351 - #: src/screens/Settings/AppearanceSettings.tsx:100 8352 - #: src/screens/Settings/AppearanceSettings.tsx:150 8356 + #: src/screens/Settings/AppearanceSettings.tsx:98 8357 + #: src/screens/Settings/AppearanceSettings.tsx:148 8353 8358 msgid "System" 8354 8359 msgstr "" 8355 8360 ··· 8593 8598 msgid "The verification code you have provided is invalid. Please make sure that you have used the correct verification link or request a new one." 8594 8599 msgstr "" 8595 8600 8596 - #: src/screens/Settings/AppearanceSettings.tsx:154 8601 + #: src/screens/Settings/AppearanceSettings.tsx:152 8597 8602 msgid "Theme" 8598 8603 msgstr "" 8599 8604
+8 -8
src/screens/Settings/AppIconSettings/index.tsx
··· 28 28 getAppIconName(DynamicAppIcon.getAppIcon()), 29 29 ) 30 30 31 - const onSetAppIcon = (icon: string) => { 31 + const onSetAppIcon = (icon: DynamicAppIcon.IconName) => { 32 32 if (isAndroid) { 33 33 const next = 34 34 sets.defaults.find(i => i.id === icon) ?? ··· 37 37 next 38 38 ? _(msg`Change app icon to "${next.name}"`) 39 39 : _(msg`Change app icon`), 40 - // to determine - can we stop this happening? -sfn 40 + // unfortunately necessary -sfn 41 41 _(msg`The app will be restarted`), 42 42 [ 43 43 { ··· 119 119 ) 120 120 } 121 121 122 - function setAppIcon(icon: string) { 122 + function setAppIcon(icon: DynamicAppIcon.IconName) { 123 123 if (icon === 'default_light') { 124 124 return getAppIconName(DynamicAppIcon.setAppIcon(null)) 125 125 } else { ··· 127 127 } 128 128 } 129 129 130 - function getAppIconName(icon: string | false) { 130 + function getAppIconName(icon: string | false): DynamicAppIcon.IconName { 131 131 if (!icon || icon === 'DEFAULT') { 132 132 return 'default_light' 133 133 } else { 134 - return icon 134 + return icon as DynamicAppIcon.IconName 135 135 } 136 136 } 137 137 ··· 143 143 }: { 144 144 children: React.ReactNode 145 145 label: string 146 - value: string 147 - onChange: (value: string) => void 146 + value: DynamicAppIcon.IconName 147 + onChange: (value: DynamicAppIcon.IconName) => void 148 148 }) { 149 149 return ( 150 150 <Toggle.Group ··· 153 153 values={[value]} 154 154 maxSelections={1} 155 155 onChange={vals => { 156 - if (vals[0]) onChange(vals[0]) 156 + if (vals[0]) onChange(vals[0] as DynamicAppIcon.IconName) 157 157 }}> 158 158 <View style={[a.flex_1, a.rounded_md, a.overflow_hidden]}> 159 159 {children}
+3 -2
src/screens/Settings/AppIconSettings/types.ts
··· 1 - import {ImageSourcePropType} from 'react-native' 1 + import {type ImageSourcePropType} from 'react-native' 2 + import type * as DynamicAppIcon from '@mozzius/expo-dynamic-app-icon' 2 3 3 4 export type AppIconSet = { 4 - id: string 5 + id: DynamicAppIcon.IconName 5 6 name: string 6 7 iosImage: () => ImageSourcePropType 7 8 androidImage: () => ImageSourcePropType
+10
src/screens/Settings/AppIconSettings/useAppIconSets.ts
··· 37 37 ) 38 38 }, 39 39 }, 40 + { 41 + id: 'next', 42 + name: _(msg({context: 'Name of app icon variant', message: 'Next'})), 43 + iosImage: () => { 44 + return require(`../../../../assets/app-icons/icon_default_next.png`) 45 + }, 46 + androidImage: () => { 47 + return require(`../../../../assets/app-icons/icon_default_next.png`) 48 + }, 49 + }, 40 50 ] satisfies AppIconSet[] 41 51 42 52 /**
+1 -3
src/screens/Settings/AppearanceSettings.tsx
··· 12 12 type CommonNavigatorParams, 13 13 type NativeStackScreenProps, 14 14 } from '#/lib/routes/types' 15 - import {useGate} from '#/lib/statsig/statsig' 16 15 import {isNative} from '#/platform/detection' 17 16 import {useSetThemePrefs, useThemePrefs} from '#/state/shell' 18 17 import {SettingsListItem as AppIconSettingsListItem} from '#/screens/Settings/AppIconSettings/SettingsListItem' ··· 32 31 export function AppearanceSettingsScreen({}: Props) { 33 32 const {_} = useLingui() 34 33 const {fonts} = useAlf() 35 - const gate = useGate() 36 34 37 35 const {colorMode, darkTheme} = useThemePrefs() 38 36 const {setColorMode, setDarkTheme} = useSetThemePrefs() ··· 180 178 onChange={onChangeFontScale} 181 179 /> 182 180 183 - {isNative && IS_INTERNAL && gate('debug_subscriptions') && ( 181 + {isNative && IS_INTERNAL && ( 184 182 <> 185 183 <SettingsList.Divider /> 186 184 <AppIconSettingsListItem />
+1 -1
src/state/geolocation.tsx
··· 6 6 import {type Device, device} from '#/storage' 7 7 8 8 const IPCC_URL = `https://bsky.app/ipcc` 9 - const BAPP_CONFIG_URL = `https://bapp-config.bsky.workers.dev/config` 9 + const BAPP_CONFIG_URL = `https://ip.bsky.app/config` 10 10 11 11 const events = new EventEmitter() 12 12 const EVENT = 'geolocation-updated'
+4 -12
yarn.lock
··· 5134 5134 resolved "https://registry.yarnpkg.com/@miblanchard/react-native-slider/-/react-native-slider-2.6.0.tgz#9f78c805d637ffaff0e3e7429932d2995a67edc9" 5135 5135 integrity sha512-o7hk/f/8vkqh6QNR5L52m+ws846fQeD/qNCC9CCSRdBqjq66KiCgbxzlhRzKM/gbtxcvMYMIEEJ1yes5cr6I3A== 5136 5136 5137 - "@mozzius/expo-dynamic-app-icon@1.5.0": 5138 - version "1.5.0" 5139 - resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.5.0.tgz#c5f88c309965b6d6b89cfd5e2c00faa7bda736af" 5140 - integrity sha512-yE2yEPO+HQmOqsX7cECh7/vu/LXnqhHGsVm3UiVi/3gaK8u5hAkPTNzZ0Qu6vnMwjPnY+uFbN6X+6Aj9c9yjMQ== 5137 + "@mozzius/expo-dynamic-app-icon@^1.7.1": 5138 + version "1.7.1" 5139 + resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.7.1.tgz#20a6475af256ab93112bbaac1c2f3dd052562d16" 5140 + integrity sha512-zDcY11B3tsQ9WsPTcszUCa6SpygfYz1e4p8PGn/4XhwYbOHJ53sEnGVQ1YlwzQ87SeWPlqrfzY6SUr9GpNq2Kg== 5141 5141 dependencies: 5142 5142 "@expo/image-utils" "^0.6.3" 5143 - expo-modules-core "^2.1.1" 5144 5143 xcode "^3.0.1" 5145 5144 5146 5145 "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": ··· 11377 11376 version "2.4.0" 11378 11377 resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.4.0.tgz#3081d62fadff913090cc5abfe46d9ec6b0e75789" 11379 11378 integrity sha512-Ko5eHBdvuMykjw9P9C9PF54/wBSsGOxaOjx92I5BwgKvEmUwN3UrXFV4CXzlLVbLfSYUQaLcB220xmPfgvT7Fg== 11380 - dependencies: 11381 - invariant "^2.2.4" 11382 - 11383 - expo-modules-core@^2.1.1: 11384 - version "2.1.1" 11385 - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.1.1.tgz#970af4cfd70c8aa6fc0096dd0a6578aa003a479f" 11386 - integrity sha512-yQzYCLR2mre4BNMXuqkeJ0oSNgmGEMI6BcmIzeNZbC2NFEjiaDpKvlV9bclYCtyVhUEVNbJcEPYMr6c1Y4eR4w== 11387 11379 dependencies: 11388 11380 invariant "^2.2.4" 11389 11381