Bluesky app fork with some witchin' additions 馃挮
witchsky.app
bluesky
fork
client
1import {type NavigationState, type PartialState} from '@react-navigation/native'
2import {type NativeStackNavigationProp} from '@react-navigation/native-stack'
3
4import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
5
6export type {NativeStackScreenProps} from '@react-navigation/native-stack'
7
8export type CommonNavigatorParams = {
9 NotFound: undefined
10 AuthCallback: undefined
11 Lists: undefined
12 Moderation: undefined
13 ModerationModlists: undefined
14 ModerationMutedAccounts: undefined
15 ModerationBlockedAccounts: undefined
16 ModerationInteractionSettings: undefined
17 ModerationVerificationSettings: undefined
18 Settings: undefined
19 Profile: {name: string; hideBackButton?: boolean}
20 ProfileFollowers: {name: string}
21 ProfileFollows: {name: string}
22 ProfileKnownFollowers: {name: string}
23 ProfileSearch: {name: string; q?: string}
24 ProfileList: {name: string; rkey: string}
25 PostThread: {name: string; rkey: string}
26 PostLikedBy: {name: string; rkey: string}
27 PostRepostedBy: {name: string; rkey: string}
28 PostQuotes: {name: string; rkey: string}
29 ProfileFeed: {
30 name: string
31 rkey: string
32 feedCacheKey?: 'discover' | 'explore' | undefined
33 }
34 ProfileFeedLikedBy: {name: string; rkey: string}
35 ProfileLabelerLikedBy: {name: string}
36 Debug: undefined
37 DebugMod: undefined
38 SharedPreferencesTester: undefined
39 Log: undefined
40 Support: undefined
41 PrivacyPolicy: undefined
42 TermsOfService: undefined
43 CommunityGuidelines: undefined
44 CopyrightPolicy: undefined
45 LanguageSettings: undefined
46 AppPasswords: undefined
47 SavedFeeds: undefined
48 PreferencesFollowingFeed: undefined
49 PreferencesThreads: undefined
50 PreferencesExternalEmbeds: undefined
51 AccessibilitySettings: undefined
52 AppearanceSettings: undefined
53 RunesSettings: undefined
54 AccountSettings: undefined
55 AutomationLabelSettings: undefined
56 PetLabelSettings: undefined
57 PrivacyAndSecuritySettings: undefined
58 ActivityPrivacySettings: undefined
59 ContentAndMediaSettings: undefined
60 NotificationSettings: undefined
61 ReplyNotificationSettings: undefined
62 MentionNotificationSettings: undefined
63 QuoteNotificationSettings: undefined
64 LikeNotificationSettings: undefined
65 RepostNotificationSettings: undefined
66 NewFollowerNotificationSettings: undefined
67 LikesOnRepostsNotificationSettings: undefined
68 RepostsOnRepostsNotificationSettings: undefined
69 ActivityNotificationSettings: undefined
70 MiscellaneousNotificationSettings: undefined
71 InterestsSettings: undefined
72 AboutSettings: undefined
73 AppIconSettings: undefined
74 FindContactsSettings: undefined
75 Search: {q?: string; tab?: 'user' | 'profile' | 'feed'}
76 Hashtag: {tag: string; author?: string}
77 Topic: {topic: string}
78 MessagesConversation: {conversation: string; embed?: string; accept?: true}
79 MessagesConversationSettings: {conversation: string}
80 MessagesSettings: undefined
81 MessagesInbox: undefined
82 NotificationsActivityList: {posts: string}
83 LegacyNotificationSettings: undefined
84 Feeds: undefined
85 Start: {name: string; rkey: string}
86 StarterPack: {name: string; rkey: string; new?: boolean}
87 StarterPackShort: {code: string}
88 StarterPackWizard: {
89 fromDialog?: boolean
90 targetDid?: string
91 onSuccess?: () => void
92 }
93 StarterPackEdit: {rkey?: string}
94 VideoFeed: VideoFeedSourceContext
95 Bookmarks: undefined
96 FindContactsFlow: undefined
97}
98
99export type BottomTabNavigatorParams = CommonNavigatorParams & {
100 HomeTab: undefined
101 SearchTab: undefined
102 NotificationsTab: undefined
103 MyProfileTab: undefined
104 MessagesTab: undefined
105}
106
107export type HomeTabNavigatorParams = CommonNavigatorParams & {
108 Home: undefined
109}
110
111export type SearchTabNavigatorParams = CommonNavigatorParams & {
112 Search: {q?: string; tab?: 'user' | 'profile' | 'feed'}
113}
114
115export type NotificationsTabNavigatorParams = CommonNavigatorParams & {
116 Notifications: undefined
117}
118
119export type MyProfileTabNavigatorParams = CommonNavigatorParams & {
120 MyProfile: {name: 'me'; hideBackButton: true}
121}
122
123export type MessagesTabNavigatorParams = CommonNavigatorParams & {
124 Messages: {pushToConversation?: string; animation?: 'push' | 'pop'}
125}
126
127export type FlatNavigatorParams = CommonNavigatorParams & {
128 Home: undefined
129 Search: {q?: string; tab?: 'user' | 'profile' | 'feed'}
130 Feeds: undefined
131 Notifications: undefined
132 Messages: {pushToConversation?: string; animation?: 'push' | 'pop'}
133}
134
135export type AllNavigatorParams = CommonNavigatorParams & {
136 HomeTab: undefined
137 Home: undefined
138 SearchTab: undefined
139 Search: {q?: string; tab?: 'user' | 'profile' | 'feed'}
140 Feeds: undefined
141 NotificationsTab: undefined
142 Notifications: undefined
143 MyProfileTab: undefined
144 MessagesTab: undefined
145 Messages: {animation?: 'push' | 'pop'}
146}
147
148// NOTE
149// this isn't strictly correct but it should be close enough
150// a TS wizard might be able to get this 100%
151// -prf
152export type NavigationProp = NativeStackNavigationProp<AllNavigatorParams>
153
154export type State =
155 | NavigationState
156 | Omit<PartialState<NavigationState>, 'stale'>
157
158export type RouteParams = Record<string, string>
159export type MatchResult = {params: RouteParams}
160export type Route = {
161 match: (path: string) => MatchResult | undefined
162 build: (params?: Record<string, any>) => string
163}