From 29d8d00db3705690395ed5f6011142b7739aa49d Mon Sep 17 00:00:00 2001 From: syui Date: Sun, 7 Dec 2025 19:18:38 +0900 Subject: [PATCH] fix --- ios/patching/009-social-app-ios-license.patch | 872 +++++++++++++++++- 1 file changed, 851 insertions(+), 21 deletions(-) diff --git a/ios/patching/009-social-app-ios-license.patch b/ios/patching/009-social-app-ios-license.patch index bac8a82..48c73e1 100644 --- a/ios/patching/009-social-app-ios-license.patch +++ b/ios/patching/009-social-app-ios-license.patch @@ -1,31 +1,763 @@ diff --git a/src/Navigation.tsx b/src/Navigation.tsx -index fa33a9d56..13af087c2 100644 +index fa33a9d56..c48d078d4 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx -@@ -62,6 +62,7 @@ import {NotFoundScreen} from '#/view/screens/NotFound' - import {NotificationsScreen} from '#/view/screens/Notifications' - import {PostThreadScreen} from '#/view/screens/PostThread' - import {PrivacyPolicyScreen} from '#/view/screens/PrivacyPolicy' -+import {LicenseScreen} from '#/view/screens/License' - import {ProfileScreen} from '#/view/screens/Profile' - import {ProfileFeedLikedByScreen} from '#/view/screens/ProfileFeedLikedBy' - import {Storybook} from '#/view/screens/Storybook' -@@ -335,6 +336,11 @@ function commonScreens(Stack: typeof Flat, unreadCountLabel?: string) { - getComponent={() => TermsOfServiceScreen} - options={{title: title(msg`Terms of Service`)}} +@@ -1,8 +1,8 @@ +-import {type JSX, useCallback, useRef} from 'react' +-import {Linking} from 'react-native' ++import { type JSX, useCallback, useRef } from 'react' ++import { Linking } from 'react-native' + import * as Notifications from 'expo-notifications' +-import {i18n, type MessageDescriptor} from '@lingui/core' +-import {msg} from '@lingui/macro' ++import { i18n, type MessageDescriptor } from '@lingui/core' ++import { msg } from '@lingui/macro' + import { + type BottomTabBarProps, + createBottomTabNavigator, +@@ -17,17 +17,17 @@ import { + StackActions, + } from '@react-navigation/native' + +-import {timeout} from '#/lib/async/timeout' +-import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle' ++import { timeout } from '#/lib/async/timeout' ++import { useColorSchemeStyle } from '#/lib/hooks/useColorSchemeStyle' + import { + getNotificationPayload, + type NotificationPayload, + notificationToURL, + storePayloadForAccountSwitch, + } from '#/lib/hooks/useNotificationHandler' +-import {useWebScrollRestoration} from '#/lib/hooks/useWebScrollRestoration' +-import {logger as notyLogger} from '#/lib/notifications/util' +-import {buildStateObject} from '#/lib/routes/helpers' ++import { useWebScrollRestoration } from '#/lib/hooks/useWebScrollRestoration' ++import { logger as notyLogger } from '#/lib/notifications/util' ++import { buildStateObject } from '#/lib/routes/helpers' + import { + type AllNavigatorParams, + type BottomTabNavigatorParams, +@@ -38,106 +38,107 @@ import { + type NotificationsTabNavigatorParams, + type SearchTabNavigatorParams, + } from '#/lib/routes/types' +-import {type RouteParams, type State} from '#/lib/routes/types' +-import {attachRouteToLogEvents, logEvent} from '#/lib/statsig/statsig' +-import {bskyTitle} from '#/lib/strings/headings' +-import {logger} from '#/logger' +-import {isNative, isWeb} from '#/platform/detection' +-import {useUnreadNotifications} from '#/state/queries/notifications/unread' +-import {useSession} from '#/state/session' ++import { type RouteParams, type State } from '#/lib/routes/types' ++import { attachRouteToLogEvents, logEvent } from '#/lib/statsig/statsig' ++import { bskyTitle } from '#/lib/strings/headings' ++import { logger } from '#/logger' ++import { isNative, isWeb } from '#/platform/detection' ++import { useUnreadNotifications } from '#/state/queries/notifications/unread' ++import { useSession } from '#/state/session' + import { + shouldRequestEmailConfirmation, + snoozeEmailConfirmationPrompt, + } from '#/state/shell/reminders' +-import {CommunityGuidelinesScreen} from '#/view/screens/CommunityGuidelines' +-import {CopyrightPolicyScreen} from '#/view/screens/CopyrightPolicy' +-import {DebugModScreen} from '#/view/screens/DebugMod' +-import {FeedsScreen} from '#/view/screens/Feeds' +-import {HomeScreen} from '#/view/screens/Home' +-import {ListsScreen} from '#/view/screens/Lists' +-import {ModerationBlockedAccounts} from '#/view/screens/ModerationBlockedAccounts' +-import {ModerationModlistsScreen} from '#/view/screens/ModerationModlists' +-import {ModerationMutedAccounts} from '#/view/screens/ModerationMutedAccounts' +-import {NotFoundScreen} from '#/view/screens/NotFound' +-import {NotificationsScreen} from '#/view/screens/Notifications' +-import {PostThreadScreen} from '#/view/screens/PostThread' +-import {PrivacyPolicyScreen} from '#/view/screens/PrivacyPolicy' +-import {ProfileScreen} from '#/view/screens/Profile' +-import {ProfileFeedLikedByScreen} from '#/view/screens/ProfileFeedLikedBy' +-import {Storybook} from '#/view/screens/Storybook' +-import {SupportScreen} from '#/view/screens/Support' +-import {TermsOfServiceScreen} from '#/view/screens/TermsOfService' +-import {BottomBar} from '#/view/shell/bottom-bar/BottomBar' +-import {createNativeStackNavigatorWithAuth} from '#/view/shell/createNativeStackNavigatorWithAuth' +-import {BookmarksScreen} from '#/screens/Bookmarks' +-import {SharedPreferencesTesterScreen} from '#/screens/E2E/SharedPreferencesTesterScreen' ++import { LicenseScreen } from '#/view/screens/License' ++import { CommunityGuidelinesScreen } from '#/view/screens/CommunityGuidelines' ++import { CopyrightPolicyScreen } from '#/view/screens/CopyrightPolicy' ++import { DebugModScreen } from '#/view/screens/DebugMod' ++import { FeedsScreen } from '#/view/screens/Feeds' ++import { HomeScreen } from '#/view/screens/Home' ++import { ListsScreen } from '#/view/screens/Lists' ++import { ModerationBlockedAccounts } from '#/view/screens/ModerationBlockedAccounts' ++import { ModerationModlistsScreen } from '#/view/screens/ModerationModlists' ++import { ModerationMutedAccounts } from '#/view/screens/ModerationMutedAccounts' ++import { NotFoundScreen } from '#/view/screens/NotFound' ++import { NotificationsScreen } from '#/view/screens/Notifications' ++import { PostThreadScreen } from '#/view/screens/PostThread' ++import { PrivacyPolicyScreen } from '#/view/screens/PrivacyPolicy' ++import { ProfileScreen } from '#/view/screens/Profile' ++import { ProfileFeedLikedByScreen } from '#/view/screens/ProfileFeedLikedBy' ++import { Storybook } from '#/view/screens/Storybook' ++import { SupportScreen } from '#/view/screens/Support' ++import { TermsOfServiceScreen } from '#/view/screens/TermsOfService' ++import { BottomBar } from '#/view/shell/bottom-bar/BottomBar' ++import { createNativeStackNavigatorWithAuth } from '#/view/shell/createNativeStackNavigatorWithAuth' ++import { BookmarksScreen } from '#/screens/Bookmarks' ++import { SharedPreferencesTesterScreen } from '#/screens/E2E/SharedPreferencesTesterScreen' + import HashtagScreen from '#/screens/Hashtag' +-import {LogScreen} from '#/screens/Log' +-import {MessagesScreen} from '#/screens/Messages/ChatList' +-import {MessagesConversationScreen} from '#/screens/Messages/Conversation' +-import {MessagesInboxScreen} from '#/screens/Messages/Inbox' +-import {MessagesSettingsScreen} from '#/screens/Messages/Settings' +-import {ModerationScreen} from '#/screens/Moderation' +-import {Screen as ModerationVerificationSettings} from '#/screens/Moderation/VerificationSettings' +-import {Screen as ModerationInteractionSettings} from '#/screens/ModerationInteractionSettings' +-import {NotificationsActivityListScreen} from '#/screens/Notifications/ActivityList' +-import {PostLikedByScreen} from '#/screens/Post/PostLikedBy' +-import {PostQuotesScreen} from '#/screens/Post/PostQuotes' +-import {PostRepostedByScreen} from '#/screens/Post/PostRepostedBy' +-import {ProfileKnownFollowersScreen} from '#/screens/Profile/KnownFollowers' +-import {ProfileFeedScreen} from '#/screens/Profile/ProfileFeed' +-import {ProfileFollowersScreen} from '#/screens/Profile/ProfileFollowers' +-import {ProfileFollowsScreen} from '#/screens/Profile/ProfileFollows' +-import {ProfileLabelerLikedByScreen} from '#/screens/Profile/ProfileLabelerLikedBy' +-import {ProfileSearchScreen} from '#/screens/Profile/ProfileSearch' +-import {ProfileListScreen} from '#/screens/ProfileList' +-import {SavedFeeds} from '#/screens/SavedFeeds' +-import {SearchScreen} from '#/screens/Search' +-import {AboutSettingsScreen} from '#/screens/Settings/AboutSettings' +-import {AccessibilitySettingsScreen} from '#/screens/Settings/AccessibilitySettings' +-import {AccountSettingsScreen} from '#/screens/Settings/AccountSettings' +-import {ActivityPrivacySettingsScreen} from '#/screens/Settings/ActivityPrivacySettings' +-import {AppearanceSettingsScreen} from '#/screens/Settings/AppearanceSettings' +-import {AppIconSettingsScreen} from '#/screens/Settings/AppIconSettings' +-import {AppPasswordsScreen} from '#/screens/Settings/AppPasswords' +-import {ContentAndMediaSettingsScreen} from '#/screens/Settings/ContentAndMediaSettings' +-import {ExternalMediaPreferencesScreen} from '#/screens/Settings/ExternalMediaPreferences' +-import {FollowingFeedPreferencesScreen} from '#/screens/Settings/FollowingFeedPreferences' +-import {InterestsSettingsScreen} from '#/screens/Settings/InterestsSettings' +-import {LanguageSettingsScreen} from '#/screens/Settings/LanguageSettings' +-import {LegacyNotificationSettingsScreen} from '#/screens/Settings/LegacyNotificationSettings' +-import {NotificationSettingsScreen} from '#/screens/Settings/NotificationSettings' +-import {ActivityNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/ActivityNotificationSettings' +-import {LikeNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/LikeNotificationSettings' +-import {LikesOnRepostsNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings' +-import {MentionNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/MentionNotificationSettings' +-import {MiscellaneousNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings' +-import {NewFollowerNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/NewFollowerNotificationSettings' +-import {QuoteNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/QuoteNotificationSettings' +-import {ReplyNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/ReplyNotificationSettings' +-import {RepostNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/RepostNotificationSettings' +-import {RepostsOnRepostsNotificationSettingsScreen} from '#/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings' +-import {PrivacyAndSecuritySettingsScreen} from '#/screens/Settings/PrivacyAndSecuritySettings' +-import {SettingsScreen} from '#/screens/Settings/Settings' +-import {ThreadPreferencesScreen} from '#/screens/Settings/ThreadPreferences' ++import { LogScreen } from '#/screens/Log' ++import { MessagesScreen } from '#/screens/Messages/ChatList' ++import { MessagesConversationScreen } from '#/screens/Messages/Conversation' ++import { MessagesInboxScreen } from '#/screens/Messages/Inbox' ++import { MessagesSettingsScreen } from '#/screens/Messages/Settings' ++import { ModerationScreen } from '#/screens/Moderation' ++import { Screen as ModerationVerificationSettings } from '#/screens/Moderation/VerificationSettings' ++import { Screen as ModerationInteractionSettings } from '#/screens/ModerationInteractionSettings' ++import { NotificationsActivityListScreen } from '#/screens/Notifications/ActivityList' ++import { PostLikedByScreen } from '#/screens/Post/PostLikedBy' ++import { PostQuotesScreen } from '#/screens/Post/PostQuotes' ++import { PostRepostedByScreen } from '#/screens/Post/PostRepostedBy' ++import { ProfileKnownFollowersScreen } from '#/screens/Profile/KnownFollowers' ++import { ProfileFeedScreen } from '#/screens/Profile/ProfileFeed' ++import { ProfileFollowersScreen } from '#/screens/Profile/ProfileFollowers' ++import { ProfileFollowsScreen } from '#/screens/Profile/ProfileFollows' ++import { ProfileLabelerLikedByScreen } from '#/screens/Profile/ProfileLabelerLikedBy' ++import { ProfileSearchScreen } from '#/screens/Profile/ProfileSearch' ++import { ProfileListScreen } from '#/screens/ProfileList' ++import { SavedFeeds } from '#/screens/SavedFeeds' ++import { SearchScreen } from '#/screens/Search' ++import { AboutSettingsScreen } from '#/screens/Settings/AboutSettings' ++import { AccessibilitySettingsScreen } from '#/screens/Settings/AccessibilitySettings' ++import { AccountSettingsScreen } from '#/screens/Settings/AccountSettings' ++import { ActivityPrivacySettingsScreen } from '#/screens/Settings/ActivityPrivacySettings' ++import { AppearanceSettingsScreen } from '#/screens/Settings/AppearanceSettings' ++import { AppIconSettingsScreen } from '#/screens/Settings/AppIconSettings' ++import { AppPasswordsScreen } from '#/screens/Settings/AppPasswords' ++import { ContentAndMediaSettingsScreen } from '#/screens/Settings/ContentAndMediaSettings' ++import { ExternalMediaPreferencesScreen } from '#/screens/Settings/ExternalMediaPreferences' ++import { FollowingFeedPreferencesScreen } from '#/screens/Settings/FollowingFeedPreferences' ++import { InterestsSettingsScreen } from '#/screens/Settings/InterestsSettings' ++import { LanguageSettingsScreen } from '#/screens/Settings/LanguageSettings' ++import { LegacyNotificationSettingsScreen } from '#/screens/Settings/LegacyNotificationSettings' ++import { NotificationSettingsScreen } from '#/screens/Settings/NotificationSettings' ++import { ActivityNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/ActivityNotificationSettings' ++import { LikeNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/LikeNotificationSettings' ++import { LikesOnRepostsNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings' ++import { MentionNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/MentionNotificationSettings' ++import { MiscellaneousNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings' ++import { NewFollowerNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/NewFollowerNotificationSettings' ++import { QuoteNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/QuoteNotificationSettings' ++import { ReplyNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/ReplyNotificationSettings' ++import { RepostNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/RepostNotificationSettings' ++import { RepostsOnRepostsNotificationSettingsScreen } from '#/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings' ++import { PrivacyAndSecuritySettingsScreen } from '#/screens/Settings/PrivacyAndSecuritySettings' ++import { SettingsScreen } from '#/screens/Settings/Settings' ++import { ThreadPreferencesScreen } from '#/screens/Settings/ThreadPreferences' + import { + StarterPackScreen, + StarterPackScreenShort, + } from '#/screens/StarterPack/StarterPackScreen' +-import {Wizard} from '#/screens/StarterPack/Wizard' ++import { Wizard } from '#/screens/StarterPack/Wizard' + import TopicScreen from '#/screens/Topic' +-import {VideoFeed} from '#/screens/VideoFeed' +-import {type Theme, useTheme} from '#/alf' ++import { VideoFeed } from '#/screens/VideoFeed' ++import { type Theme, useTheme } from '#/alf' + import { + EmailDialogScreenID, + useEmailDialogControl, + } from '#/components/dialogs/EmailDialog' +-import {router} from '#/routes' +-import {Referrer} from '../modules/expo-bluesky-swiss-army' +-import {useAccountSwitcher} from './lib/hooks/useAccountSwitcher' +-import {useNonReactiveCallback} from './lib/hooks/useNonReactiveCallback' +-import {useLoggedOutViewControls} from './state/shell/logged-out' +-import {useCloseAllActiveElements} from './state/util' ++import { router } from '#/routes' ++import { Referrer } from '../modules/expo-bluesky-swiss-army' ++import { useAccountSwitcher } from './lib/hooks/useAccountSwitcher' ++import { useNonReactiveCallback } from './lib/hooks/useNonReactiveCallback' ++import { useLoggedOutViewControls } from './state/shell/logged-out' ++import { useCloseAllActiveElements } from './state/util' + + const navigationRef = createNavigationContainerRef() + +@@ -164,32 +165,32 @@ function commonScreens(Stack: typeof Flat, unreadCountLabel?: string) { + NotFoundScreen} +- options={{title: title(msg`Not Found`)}} ++ options={{ title: title(msg`Not Found`) }} + /> + + ModerationScreen} +- options={{title: title(msg`Moderation`), requireAuth: true}} ++ options={{ title: title(msg`Moderation`), requireAuth: true }} + /> + ModerationModlistsScreen} +- options={{title: title(msg`Moderation Lists`), requireAuth: true}} ++ options={{ title: title(msg`Moderation Lists`), requireAuth: true }} + /> + ModerationMutedAccounts} +- options={{title: title(msg`Muted Accounts`), requireAuth: true}} ++ options={{ title: title(msg`Muted Accounts`), requireAuth: true }} + /> + ModerationBlockedAccounts} +- options={{title: title(msg`Blocked Accounts`), requireAuth: true}} ++ options={{ title: title(msg`Blocked Accounts`), requireAuth: true }} + /> + SettingsScreen} +- options={{title: title(msg`Settings`), requireAuth: true}} ++ options={{ title: title(msg`Settings`), requireAuth: true }} + /> + LanguageSettingsScreen} +- options={{title: title(msg`Language Settings`), requireAuth: true}} ++ options={{ title: title(msg`Language Settings`), requireAuth: true }} + /> + ProfileScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: bskyTitle(`@${route.params.name}`, unreadCountLabel), + })} + /> + ProfileFollowersScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`People following @${route.params.name}`), + })} + /> + ProfileFollowsScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`People followed by @${route.params.name}`), + })} + /> + ProfileKnownFollowersScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Followers of @${route.params.name} that you know`), + })} + /> + ProfileListScreen} +- options={{title: title(msg`List`), requireAuth: true}} ++ options={{ title: title(msg`List`), requireAuth: true }} + /> + ProfileSearchScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Search @${route.params.name}'s posts`), + })} + /> + PostThreadScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Post by @${route.params.name}`), + })} + /> + PostLikedByScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Post by @${route.params.name}`), + })} + /> + PostRepostedByScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Post by @${route.params.name}`), + })} + /> + PostQuotesScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + title: title(msg`Post by @${route.params.name}`), + })} + /> + ProfileFeedScreen} +- options={{title: title(msg`Feed`)}} ++ options={{ title: title(msg`Feed`) }} + /> + ProfileFeedLikedByScreen} +- options={{title: title(msg`Liked by`)}} ++ options={{ title: title(msg`Liked by`) }} + /> + ProfileLabelerLikedByScreen} +- options={{title: title(msg`Liked by`)}} ++ options={{ title: title(msg`Liked by`) }} + /> + Storybook} +- options={{title: title(msg`Storybook`), requireAuth: true}} ++ options={{ title: title(msg`Storybook`), requireAuth: true }} + /> + DebugModScreen} +- options={{title: title(msg`Moderation states`), requireAuth: true}} ++ options={{ title: title(msg`Moderation states`), requireAuth: true }} + /> + SharedPreferencesTesterScreen} +- options={{title: title(msg`Shared Preferences Tester`)}} ++ options={{ title: title(msg`Shared Preferences Tester`) }} + /> + LogScreen} +- options={{title: title(msg`Log`), requireAuth: true}} ++ options={{ title: title(msg`Log`), requireAuth: true }} + /> + SupportScreen} +- options={{title: title(msg`Support`)}} ++ options={{ title: title(msg`Support`) }} + /> + PrivacyPolicyScreen} +- options={{title: title(msg`Privacy Policy`)}} ++ options={{ title: title(msg`Privacy Policy`) }} + /> + TermsOfServiceScreen} +- options={{title: title(msg`Terms of Service`)}} ++ options={{ title: title(msg`Terms of Service`) }} /> -+ LicenseScreen} -+ options={{title: title(msg`License`)}} -+ /> CommunityGuidelinesScreen} +- options={{title: title(msg`Community Guidelines`)}} ++ options={{ title: title(msg`Community Guidelines`) }} + /> + CopyrightPolicyScreen} +- options={{title: title(msg`Copyright Policy`)}} ++ options={{ title: title(msg`Copyright Policy`) }} + /> + AppPasswordsScreen} +- options={{title: title(msg`App Passwords`), requireAuth: true}} ++ options={{ title: title(msg`App Passwords`), requireAuth: true }} + /> + SavedFeeds} +- options={{title: title(msg`Edit My Feeds`), requireAuth: true}} ++ options={{ title: title(msg`Edit My Feeds`), requireAuth: true }} + /> + ThreadPreferencesScreen} +- options={{title: title(msg`Threads Preferences`), requireAuth: true}} ++ options={{ title: title(msg`Threads Preferences`), requireAuth: true }} + /> + NotificationSettingsScreen} +- options={{title: title(msg`Notification settings`), requireAuth: true}} ++ options={{ title: title(msg`Notification settings`), requireAuth: true }} + /> + HashtagScreen} +- options={{title: title(msg`Hashtag`)}} ++ options={{ title: title(msg`Hashtag`) }} + /> + TopicScreen} +- options={{title: title(msg`Topic`)}} ++ options={{ title: title(msg`Topic`) }} + /> + MessagesConversationScreen} +- options={{title: title(msg`Chat`), requireAuth: true}} ++ options={{ title: title(msg`Chat`), requireAuth: true }} + /> + MessagesSettingsScreen} +- options={{title: title(msg`Chat settings`), requireAuth: true}} ++ options={{ title: title(msg`Chat settings`), requireAuth: true }} + /> + MessagesInboxScreen} +- options={{title: title(msg`Chat request inbox`), requireAuth: true}} ++ options={{ title: title(msg`Chat request inbox`), requireAuth: true }} + /> + NotificationsActivityListScreen} +- options={{title: title(msg`Notifications`), requireAuth: true}} ++ options={{ title: title(msg`Notifications`), requireAuth: true }} + /> + LegacyNotificationSettingsScreen} +- options={{title: title(msg`Notification settings`), requireAuth: true}} ++ options={{ title: title(msg`Notification settings`), requireAuth: true }} + /> + FeedsScreen} +- options={{title: title(msg`Feeds`)}} ++ options={{ title: title(msg`Feeds`) }} + /> + StarterPackScreen} +- options={{title: title(msg`Starter Pack`)}} ++ options={{ title: title(msg`Starter Pack`) }} + /> + StarterPackScreenShort} +- options={{title: title(msg`Starter Pack`)}} ++ options={{ title: title(msg`Starter Pack`) }} + /> + Wizard} +- options={{title: title(msg`Create a starter pack`), requireAuth: true}} ++ options={{ title: title(msg`Create a starter pack`), requireAuth: true }} + /> + Wizard} +- options={{title: title(msg`Edit your starter pack`), requireAuth: true}} ++ options={{ title: title(msg`Edit your starter pack`), requireAuth: true }} + /> + + HomeTabNavigator} /> + SearchTabNavigator} /> +@@ -663,6 +664,8 @@ function HomeTabNavigator() { + return ( + + HomeScreen} /> ++ ++ + HomeScreen} /> + {commonScreens(HomeTab as typeof Flat)} + +@@ -690,7 +693,7 @@ function NotificationsTabNavigator() { + NotificationsScreen} +- options={{requireAuth: true}} ++ options={{ requireAuth: true }} + /> + {commonScreens(NotificationsTab as typeof Flat)} + +@@ -708,7 +711,7 @@ function MyProfileTabNavigator() { + // gives us typechecking for initialParams -sfn + name={'MyProfile' as 'Profile'} + getComponent={() => ProfileScreen} +- initialParams={{name: 'me', hideBackButton: true}} ++ initialParams={{ name: 'me', hideBackButton: true }} + /> + {commonScreens(MyProfileTab as unknown as typeof Flat)} + +@@ -724,7 +727,7 @@ function MessagesTabNavigator() { + MessagesScreen} +- options={({route}) => ({ ++ options={({ route }) => ({ + requireAuth: true, + animationTypeForReplace: route.params?.animation ?? 'push', + })} +@@ -751,27 +754,27 @@ const FlatNavigator = () => { + HomeScreen} +- options={{title: title(msg`Home`)}} ++ options={{ title: title(msg`Home`) }} + /> + SearchScreen} +- options={{title: title(msg`Explore`)}} ++ options={{ title: title(msg`Explore`) }} + /> + NotificationsScreen} +- options={{title: title(msg`Notifications`), requireAuth: true}} ++ options={{ title: title(msg`Notifications`), requireAuth: true }} + /> + MessagesScreen} +- options={{title: title(msg`Messages`), requireAuth: true}} ++ options={{ title: title(msg`Messages`), requireAuth: true }} + /> + HomeScreen} +- options={{title: title(msg`Home`)}} ++ options={{ title: title(msg`Home`) }} + /> + {commonScreens(Flat, numUnread)} + +@@ -849,11 +852,11 @@ const LINKING = { + */ + let lastHandledNotificationDateDedupe: number | undefined + +-function RoutesContainer({children}: React.PropsWithChildren<{}>) { ++function RoutesContainer({ children }: React.PropsWithChildren<{}>) { + const theme = useColorSchemeStyle(DefaultTheme, DarkTheme) +- const {currentAccount, accounts} = useSession() +- const {onPressSwitchAccount} = useAccountSwitcher() +- const {setShowLoggedOut} = useLoggedOutViewControls() ++ const { currentAccount, accounts } = useSession() ++ const { onPressSwitchAccount } = useAccountSwitcher() ++ const { setShowLoggedOut } = useLoggedOutViewControls() + const prevLoggedRouteName = useRef(undefined) + const emailDialogControl = useEmailDialogControl() + const closeAllActiveElements = useCloseAllActiveElements() +@@ -865,8 +868,8 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + * after an async call - sfn + */ + const handleChatMessage = useNonReactiveCallback( +- (payload: Extract) => { +- notyLogger.debug(`handleChatMessage`, {payload}) ++ (payload: Extract) => { ++ notyLogger.debug(`handleChatMessage`, { payload }) + + if (payload.recipientDid !== currentAccount?.did) { + // handled in useNotificationHandler after account switch finishes +@@ -907,7 +910,7 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + const response = await Notifications.getLastNotificationResponseAsync() + + if (response) { +- notyLogger.debug(`handlePushNotificationEntry: response`, {response}) ++ notyLogger.debug(`handlePushNotificationEntry: response`, { response }) + + if (response.notification.date === lastHandledNotificationDateDedupe) + return +@@ -918,8 +921,8 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + if (payload) { + notyLogger.metric( + 'notifications:openApp', +- {reason: payload.reason, causedBoot: true}, +- {statsig: false}, ++ { reason: payload.reason, causedBoot: true }, ++ { statsig: false }, + ) + + if (payload.reason === 'chat-message') { +@@ -933,7 +936,7 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + } else if (path) { + const [screen, params] = router.matchPath(path) + // @ts-expect-error nested navigators aren't typed -sfn +- navigate('HomeTab', {screen, params}) ++ navigate('HomeTab', { screen, params }) + notyLogger.debug(`handlePushNotificationEntry: navigate`, { + screen, + params, +@@ -963,8 +966,8 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + onStateChange={() => { + logger.metric( + 'router:navigate', +- {from: prevLoggedRouteName.current}, +- {statsig: false}, ++ { from: prevLoggedRouteName.current }, ++ { statsig: false }, + ) + prevLoggedRouteName.current = getCurrentRouteName() + }} +@@ -972,7 +975,7 @@ function RoutesContainer({children}: React.PropsWithChildren<{}>) { + attachRouteToLogEvents(getCurrentRouteName) + logModuleInitTime() + onReady() +- logger.metric('router:navigate', {}, {statsig: false}) ++ logger.metric('router:navigate', {}, { statsig: false }) + handlePushNotificationEntry() + }} + // WARNING: Implicit navigation to nested navigators is depreciated in React Navigation 7.x +@@ -1040,7 +1043,7 @@ function reset(): Promise { + navigationRef.dispatch( + CommonActions.reset({ + index: 0, +- routes: [{name: isNative ? 'HomeTab' : 'Home'}], ++ routes: [{ name: isNative ? 'HomeTab' : 'Home' }], + }), + ) + return Promise.race([ diff --git a/src/lib/routes/types.ts b/src/lib/routes/types.ts -index c315a8341..9b2f50a83 100644 +index c315a8341..dc84545f7 100644 --- a/src/lib/routes/types.ts +++ b/src/lib/routes/types.ts +@@ -1,9 +1,9 @@ +-import {type NavigationState, type PartialState} from '@react-navigation/native' +-import {type NativeStackNavigationProp} from '@react-navigation/native-stack' ++import { type NavigationState, type PartialState } from '@react-navigation/native' ++import { type NativeStackNavigationProp } from '@react-navigation/native-stack' + +-import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types' ++import { type VideoFeedSourceContext } from '#/screens/VideoFeed/types' + +-export type {NativeStackScreenProps} from '@react-navigation/native-stack' ++export type { NativeStackScreenProps } from '@react-navigation/native-stack' + + export type CommonNavigatorParams = { + NotFound: undefined +@@ -15,23 +15,23 @@ export type CommonNavigatorParams = { + ModerationInteractionSettings: undefined + ModerationVerificationSettings: undefined + Settings: undefined +- Profile: {name: string; hideBackButton?: boolean} +- ProfileFollowers: {name: string} +- ProfileFollows: {name: string} +- ProfileKnownFollowers: {name: string} +- ProfileSearch: {name: string; q?: string} +- ProfileList: {name: string; rkey: string} +- PostThread: {name: string; rkey: string} +- PostLikedBy: {name: string; rkey: string} +- PostRepostedBy: {name: string; rkey: string} +- PostQuotes: {name: string; rkey: string} ++ Profile: { name: string; hideBackButton?: boolean } ++ ProfileFollowers: { name: string } ++ ProfileFollows: { name: string } ++ ProfileKnownFollowers: { name: string } ++ ProfileSearch: { name: string; q?: string } ++ ProfileList: { name: string; rkey: string } ++ PostThread: { name: string; rkey: string } ++ PostLikedBy: { name: string; rkey: string } ++ PostRepostedBy: { name: string; rkey: string } ++ PostQuotes: { name: string; rkey: string } + ProfileFeed: { + name: string + rkey: string + feedCacheKey?: 'discover' | 'explore' | undefined + } +- ProfileFeedLikedBy: {name: string; rkey: string} +- ProfileLabelerLikedBy: {name: string} ++ ProfileFeedLikedBy: { name: string; rkey: string } ++ ProfileLabelerLikedBy: { name: string } + Debug: undefined + DebugMod: undefined + SharedPreferencesTester: undefined @@ -39,6 +39,7 @@ export type CommonNavigatorParams = { Support: undefined PrivacyPolicy: undefined @@ -34,18 +766,116 @@ index c315a8341..9b2f50a83 100644 CommunityGuidelines: undefined CopyrightPolicy: undefined LanguageSettings: undefined +@@ -67,24 +68,24 @@ export type CommonNavigatorParams = { + InterestsSettings: undefined + AboutSettings: undefined + AppIconSettings: undefined +- Search: {q?: string; tab?: 'user' | 'profile' | 'feed'} +- Hashtag: {tag: string; author?: string} +- Topic: {topic: string} +- MessagesConversation: {conversation: string; embed?: string; accept?: true} ++ Search: { q?: string; tab?: 'user' | 'profile' | 'feed' } ++ Hashtag: { tag: string; author?: string } ++ Topic: { topic: string } ++ MessagesConversation: { conversation: string; embed?: string; accept?: true } + MessagesSettings: undefined + MessagesInbox: undefined +- NotificationsActivityList: {posts: string} ++ NotificationsActivityList: { posts: string } + LegacyNotificationSettings: undefined + Feeds: undefined +- Start: {name: string; rkey: string} +- StarterPack: {name: string; rkey: string; new?: boolean} +- StarterPackShort: {code: string} ++ Start: { name: string; rkey: string } ++ StarterPack: { name: string; rkey: string; new?: boolean } ++ StarterPackShort: { code: string } + StarterPackWizard: { + fromDialog?: boolean + targetDid?: string + onSuccess?: () => void + } +- StarterPackEdit: {rkey?: string} ++ StarterPackEdit: { rkey?: string } + VideoFeed: VideoFeedSourceContext + Bookmarks: undefined + } +@@ -102,7 +103,7 @@ export type HomeTabNavigatorParams = CommonNavigatorParams & { + } + + export type SearchTabNavigatorParams = CommonNavigatorParams & { +- Search: {q?: string; tab?: 'user' | 'profile' | 'feed'} ++ Search: { q?: string; tab?: 'user' | 'profile' | 'feed' } + } + + export type NotificationsTabNavigatorParams = CommonNavigatorParams & { +@@ -110,32 +111,32 @@ export type NotificationsTabNavigatorParams = CommonNavigatorParams & { + } + + export type MyProfileTabNavigatorParams = CommonNavigatorParams & { +- MyProfile: {name: 'me'; hideBackButton: true} ++ MyProfile: { name: 'me'; hideBackButton: true } + } + + export type MessagesTabNavigatorParams = CommonNavigatorParams & { +- Messages: {pushToConversation?: string; animation?: 'push' | 'pop'} ++ Messages: { pushToConversation?: string; animation?: 'push' | 'pop' } + } + + export type FlatNavigatorParams = CommonNavigatorParams & { + Home: undefined +- Search: {q?: string; tab?: 'user' | 'profile' | 'feed'} ++ Search: { q?: string; tab?: 'user' | 'profile' | 'feed' } + Feeds: undefined + Notifications: undefined +- Messages: {pushToConversation?: string; animation?: 'push' | 'pop'} ++ Messages: { pushToConversation?: string; animation?: 'push' | 'pop' } + } + + export type AllNavigatorParams = CommonNavigatorParams & { + HomeTab: undefined + Home: undefined + SearchTab: undefined +- Search: {q?: string; tab?: 'user' | 'profile' | 'feed'} ++ Search: { q?: string; tab?: 'user' | 'profile' | 'feed' } + Feeds: undefined + NotificationsTab: undefined + Notifications: undefined + MyProfileTab: undefined + MessagesTab: undefined +- Messages: {animation?: 'push' | 'pop'} ++ Messages: { animation?: 'push' | 'pop' } + } + + // NOTE +@@ -149,7 +150,7 @@ export type State = + | Omit, 'stale'> + + export type RouteParams = Record +-export type MatchResult = {params: RouteParams} ++export type MatchResult = { params: RouteParams } + export type Route = { + match: (path: string) => MatchResult | undefined + build: (params?: Record) => string diff --git a/src/routes.ts b/src/routes.ts -index 1ed913bb2..aa6fccc4e 100644 +index 1ed913bb2..3fe7041da 100644 --- a/src/routes.ts +++ b/src/routes.ts +@@ -1,5 +1,5 @@ +-import {Router} from '#/lib/routes/router' +-import {type FlatNavigatorParams} from './lib/routes/types' ++import { Router } from '#/lib/routes/router' ++import { type FlatNavigatorParams } from './lib/routes/types' + + type AllNavigatableRoutes = Omit< + FlatNavigatorParams, @@ -71,8 +71,9 @@ export const router = new Router({ MiscellaneousNotificationSettings: '/settings/notifications/miscellaneous', // support Support: '/support', - PrivacyPolicy: '/support/privacy', -- TermsOfService: '/support/tos', + PrivacyPolicy: 'https://syu.is/about/support/privacy-policy', -+ TermsOfService: 'https://syu.is/about/support/tos', + TermsOfService: '/support/tos', + License: '/support/license', CommunityGuidelines: '/support/community-guidelines', CopyrightPolicy: '/support/copyright',