Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initialize screen modules lazily (#1763)

* Initialize screen modules lazily

* Use getComponent (thanks @ecreeth for the tip)

authored by

dan and committed by
GitHub
7ebf1ed3 53afafb0

+44 -41
+44 -41
src/Navigation.tsx
··· 92 92 <> 93 93 <Stack.Screen 94 94 name="NotFound" 95 - component={NotFoundScreen} 95 + getComponent={() => NotFoundScreen} 96 96 options={{title: title('Not Found')}} 97 97 /> 98 98 <Stack.Screen 99 99 name="Moderation" 100 - component={ModerationScreen} 100 + getComponent={() => ModerationScreen} 101 101 options={{title: title('Moderation')}} 102 102 /> 103 103 <Stack.Screen 104 104 name="ModerationMuteLists" 105 - component={ModerationMuteListsScreen} 105 + getComponent={() => ModerationMuteListsScreen} 106 106 options={{title: title('Mute Lists')}} 107 107 /> 108 108 <Stack.Screen 109 109 name="ModerationMutedAccounts" 110 - component={ModerationMutedAccounts} 110 + getComponent={() => ModerationMutedAccounts} 111 111 options={{title: title('Muted Accounts')}} 112 112 /> 113 113 <Stack.Screen 114 114 name="ModerationBlockedAccounts" 115 - component={ModerationBlockedAccounts} 115 + getComponent={() => ModerationBlockedAccounts} 116 116 options={{title: title('Blocked Accounts')}} 117 117 /> 118 118 <Stack.Screen 119 119 name="Settings" 120 - component={SettingsScreen} 120 + getComponent={() => SettingsScreen} 121 121 options={{title: title('Settings')}} 122 122 /> 123 123 <Stack.Screen 124 124 name="LanguageSettings" 125 - component={LanguageSettingsScreen} 125 + getComponent={() => LanguageSettingsScreen} 126 126 options={{title: title('Language Settings')}} 127 127 /> 128 128 <Stack.Screen 129 129 name="Profile" 130 - component={ProfileScreen} 130 + getComponent={() => ProfileScreen} 131 131 options={({route}) => ({ 132 132 title: title(`@${route.params.name}`), 133 133 animation: 'none', ··· 135 135 /> 136 136 <Stack.Screen 137 137 name="ProfileFollowers" 138 - component={ProfileFollowersScreen} 138 + getComponent={() => ProfileFollowersScreen} 139 139 options={({route}) => ({ 140 140 title: title(`People following @${route.params.name}`), 141 141 })} 142 142 /> 143 143 <Stack.Screen 144 144 name="ProfileFollows" 145 - component={ProfileFollowsScreen} 145 + getComponent={() => ProfileFollowsScreen} 146 146 options={({route}) => ({ 147 147 title: title(`People followed by @${route.params.name}`), 148 148 })} 149 149 /> 150 150 <Stack.Screen 151 151 name="ProfileList" 152 - component={ProfileListScreen} 152 + getComponent={() => ProfileListScreen} 153 153 options={{title: title('Mute List')}} 154 154 /> 155 155 <Stack.Screen 156 156 name="PostThread" 157 - component={PostThreadScreen} 157 + getComponent={() => PostThreadScreen} 158 158 options={({route}) => ({title: title(`Post by @${route.params.name}`)})} 159 159 /> 160 160 <Stack.Screen 161 161 name="PostLikedBy" 162 - component={PostLikedByScreen} 162 + getComponent={() => PostLikedByScreen} 163 163 options={({route}) => ({title: title(`Post by @${route.params.name}`)})} 164 164 /> 165 165 <Stack.Screen 166 166 name="PostRepostedBy" 167 - component={PostRepostedByScreen} 167 + getComponent={() => PostRepostedByScreen} 168 168 options={({route}) => ({title: title(`Post by @${route.params.name}`)})} 169 169 /> 170 170 <Stack.Screen 171 171 name="CustomFeed" 172 - component={CustomFeedScreen} 172 + getComponent={() => CustomFeedScreen} 173 173 options={{title: title('Feed')}} 174 174 /> 175 175 <Stack.Screen 176 176 name="CustomFeedLikedBy" 177 - component={CustomFeedLikedByScreen} 177 + getComponent={() => CustomFeedLikedByScreen} 178 178 options={{title: title('Liked by')}} 179 179 /> 180 180 <Stack.Screen 181 181 name="Debug" 182 - component={DebugScreen} 182 + getComponent={() => DebugScreen} 183 183 options={{title: title('Debug')}} 184 184 /> 185 185 <Stack.Screen 186 186 name="Log" 187 - component={LogScreen} 187 + getComponent={() => LogScreen} 188 188 options={{title: title('Log')}} 189 189 /> 190 190 <Stack.Screen 191 191 name="Support" 192 - component={SupportScreen} 192 + getComponent={() => SupportScreen} 193 193 options={{title: title('Support')}} 194 194 /> 195 195 <Stack.Screen 196 196 name="PrivacyPolicy" 197 - component={PrivacyPolicyScreen} 197 + getComponent={() => PrivacyPolicyScreen} 198 198 options={{title: title('Privacy Policy')}} 199 199 /> 200 200 <Stack.Screen 201 201 name="TermsOfService" 202 - component={TermsOfServiceScreen} 202 + getComponent={() => TermsOfServiceScreen} 203 203 options={{title: title('Terms of Service')}} 204 204 /> 205 205 <Stack.Screen 206 206 name="CommunityGuidelines" 207 - component={CommunityGuidelinesScreen} 207 + getComponent={() => CommunityGuidelinesScreen} 208 208 options={{title: title('Community Guidelines')}} 209 209 /> 210 210 <Stack.Screen 211 211 name="CopyrightPolicy" 212 - component={CopyrightPolicyScreen} 212 + getComponent={() => CopyrightPolicyScreen} 213 213 options={{title: title('Copyright Policy')}} 214 214 /> 215 215 <Stack.Screen 216 216 name="AppPasswords" 217 - component={AppPasswords} 217 + getComponent={() => AppPasswords} 218 218 options={{title: title('App Passwords')}} 219 219 /> 220 220 <Stack.Screen 221 221 name="SavedFeeds" 222 - component={SavedFeeds} 222 + getComponent={() => SavedFeeds} 223 223 options={{title: title('Edit My Feeds')}} 224 224 /> 225 225 <Stack.Screen 226 226 name="PreferencesHomeFeed" 227 - component={PreferencesHomeFeed} 227 + getComponent={() => PreferencesHomeFeed} 228 228 options={{title: title('Home Feed Preferences')}} 229 229 /> 230 230 <Stack.Screen 231 231 name="PreferencesThreads" 232 - component={PreferencesThreads} 232 + getComponent={() => PreferencesThreads} 233 233 options={{title: title('Threads Preferences')}} 234 234 /> 235 235 </> ··· 254 254 backBehavior="initialRoute" 255 255 screenOptions={{headerShown: false, lazy: true}} 256 256 tabBar={tabBar}> 257 - <Tab.Screen name="HomeTab" component={HomeTabNavigator} /> 258 - <Tab.Screen name="SearchTab" component={SearchTabNavigator} /> 259 - <Tab.Screen name="FeedsTab" component={FeedsTabNavigator} /> 257 + <Tab.Screen name="HomeTab" getComponent={() => HomeTabNavigator} /> 258 + <Tab.Screen name="SearchTab" getComponent={() => SearchTabNavigator} /> 259 + <Tab.Screen name="FeedsTab" getComponent={() => FeedsTabNavigator} /> 260 260 <Tab.Screen 261 261 name="NotificationsTab" 262 - component={NotificationsTabNavigator} 262 + getComponent={() => NotificationsTabNavigator} 263 263 /> 264 - <Tab.Screen name="MyProfileTab" component={MyProfileTabNavigator} /> 264 + <Tab.Screen 265 + name="MyProfileTab" 266 + getComponent={() => MyProfileTabNavigator} 267 + /> 265 268 </Tab.Navigator> 266 269 ) 267 270 } ··· 278 281 animationDuration: 250, 279 282 contentStyle, 280 283 }}> 281 - <HomeTab.Screen name="Home" component={HomeScreen} /> 284 + <HomeTab.Screen name="Home" getComponent={() => HomeScreen} /> 282 285 {commonScreens(HomeTab)} 283 286 </HomeTab.Navigator> 284 287 ) ··· 295 298 animationDuration: 250, 296 299 contentStyle, 297 300 }}> 298 - <SearchTab.Screen name="Search" component={SearchScreen} /> 301 + <SearchTab.Screen name="Search" getComponent={() => SearchScreen} /> 299 302 {commonScreens(SearchTab as typeof HomeTab)} 300 303 </SearchTab.Navigator> 301 304 ) ··· 312 315 animationDuration: 250, 313 316 contentStyle, 314 317 }}> 315 - <FeedsTab.Screen name="Feeds" component={FeedsScreen} /> 318 + <FeedsTab.Screen name="Feeds" getComponent={() => FeedsScreen} /> 316 319 {commonScreens(FeedsTab as typeof HomeTab)} 317 320 </FeedsTab.Navigator> 318 321 ) ··· 331 334 }}> 332 335 <NotificationsTab.Screen 333 336 name="Notifications" 334 - component={NotificationsScreen} 337 + getComponent={() => NotificationsScreen} 335 338 /> 336 339 {commonScreens(NotificationsTab as typeof HomeTab)} 337 340 </NotificationsTab.Navigator> ··· 353 356 <MyProfileTab.Screen 354 357 name="MyProfile" 355 358 // @ts-ignore // TODO: fix this broken type in ProfileScreen 356 - component={ProfileScreen} 359 + getComponent={() => ProfileScreen} 357 360 initialParams={{ 358 361 name: store.me.did, 359 362 }} ··· 384 387 }}> 385 388 <Flat.Screen 386 389 name="Home" 387 - component={HomeScreen} 390 + getComponent={() => HomeScreen} 388 391 options={{title: title('Home')}} 389 392 /> 390 393 <Flat.Screen 391 394 name="Search" 392 - component={SearchScreen} 395 + getComponent={() => SearchScreen} 393 396 options={{title: title('Search')}} 394 397 /> 395 398 <Flat.Screen 396 399 name="Feeds" 397 - component={FeedsScreen} 400 + getComponent={() => FeedsScreen} 398 401 options={{title: title('Feeds')}} 399 402 /> 400 403 <Flat.Screen 401 404 name="Notifications" 402 - component={NotificationsScreen} 405 + getComponent={() => NotificationsScreen} 403 406 options={{title: title('Notifications')}} 404 407 /> 405 408 {commonScreens(Flat as typeof HomeTab, unreadCountLabel)}