From 441dd29685e2a52e97624fe3f56b3171858c0883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreiro?= Date: Mon, 12 Dec 2022 18:07:30 +0000 Subject: [PATCH] using register --- .../xcshareddata/xcschemes/app.xcscheme | 2 +- src/view/screens/{ => Contacts}/Contacts.tsx | 14 ++++---- src/view/screens/Contacts/index.tsx | 16 +++++++++ src/view/screens/{ => Home}/Home.tsx | 14 ++++---- src/view/screens/Home/index.tsx | 16 +++++++++ .../screens/{Login.tsx => Login/index.tsx} | 25 +++++++++----- src/view/screens/{ => NotFound}/NotFound.tsx | 6 ++-- src/view/screens/NotFound/index.tsx | 16 +++++++++ .../{ => Notifications}/Notifications.tsx | 12 +++---- src/view/screens/Notifications/index.tsx | 16 +++++++++ src/view/screens/{ => Onboard}/Onboard.tsx | 10 +++--- src/view/screens/Onboard/index.tsx | 16 +++++++++ .../{ => PostDownvotedBy}/PostDownvotedBy.tsx | 12 +++---- src/view/screens/PostDownvotedBy/index.tsx | 16 +++++++++ .../{ => PostRepostedBy}/PostRepostedBy.tsx | 12 +++---- src/view/screens/PostRepostedBy/index.tsx | 16 +++++++++ .../screens/{ => PostThread}/PostThread.tsx | 14 ++++---- src/view/screens/PostThread/index.tsx | 16 +++++++++ .../{ => PostUpvotedBy}/PostUpvotedBy.tsx | 12 +++---- src/view/screens/PostUpvotedBy/index.tsx | 16 +++++++++ src/view/screens/{ => Profile}/Profile.tsx | 34 +++++++++---------- src/view/screens/Profile/index.tsx | 16 +++++++++ .../ProfileFollowers.tsx | 10 +++--- src/view/screens/ProfileFollowers/index.tsx | 16 +++++++++ .../{ => ProfileFollows}/ProfileFollows.tsx | 10 +++--- src/view/screens/ProfileFollows/index.tsx | 16 +++++++++ .../{ => ProfileMembers}/ProfileMembers.tsx | 10 +++--- src/view/screens/ProfileMembers/index.tsx | 16 +++++++++ src/view/screens/{ => Search}/Search.tsx | 18 +++++----- src/view/screens/Search/index.tsx | 16 +++++++++ src/view/screens/{ => Settings}/Settings.tsx | 17 ++++------ src/view/screens/Settings/index.tsx | 16 +++++++++ 32 files changed, 358 insertions(+), 114 deletions(-) rename src/view/screens/{ => Contacts}/Contacts.tsx (82%) create mode 100644 src/view/screens/Contacts/index.tsx rename src/view/screens/{ => Home}/Home.tsx (90%) create mode 100644 src/view/screens/Home/index.tsx rename src/view/screens/{Login.tsx => Login/index.tsx} (97%) rename src/view/screens/{ => NotFound}/NotFound.tsx (80%) create mode 100644 src/view/screens/NotFound/index.tsx rename src/view/screens/{ => Notifications}/Notifications.tsx (72%) create mode 100644 src/view/screens/Notifications/index.tsx rename src/view/screens/{ => Onboard}/Onboard.tsx (71%) create mode 100644 src/view/screens/Onboard/index.tsx rename src/view/screens/{ => PostDownvotedBy}/PostDownvotedBy.tsx (57%) create mode 100644 src/view/screens/PostDownvotedBy/index.tsx rename src/view/screens/{ => PostRepostedBy}/PostRepostedBy.tsx (55%) create mode 100644 src/view/screens/PostRepostedBy/index.tsx rename src/view/screens/{ => PostThread}/PostThread.tsx (76%) create mode 100644 src/view/screens/PostThread/index.tsx rename src/view/screens/{ => PostUpvotedBy}/PostUpvotedBy.tsx (57%) create mode 100644 src/view/screens/PostUpvotedBy/index.tsx rename src/view/screens/{ => Profile}/Profile.tsx (88%) create mode 100644 src/view/screens/Profile/index.tsx rename src/view/screens/{ => ProfileFollowers}/ProfileFollowers.tsx (66%) create mode 100644 src/view/screens/ProfileFollowers/index.tsx rename src/view/screens/{ => ProfileFollows}/ProfileFollows.tsx (58%) create mode 100644 src/view/screens/ProfileFollows/index.tsx rename src/view/screens/{ => ProfileMembers}/ProfileMembers.tsx (58%) create mode 100644 src/view/screens/ProfileMembers/index.tsx rename src/view/screens/{ => Search}/Search.tsx (86%) create mode 100644 src/view/screens/Search/index.tsx rename src/view/screens/{ => Settings}/Settings.tsx (83%) create mode 100644 src/view/screens/Settings/index.tsx diff --git a/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme b/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme index 326123a327..29d71457bd 100644 --- a/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme +++ b/ios/app.xcodeproj/xcshareddata/xcschemes/app.xcscheme @@ -41,7 +41,7 @@ { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const selectorInterp = useAnimatedValue(0) diff --git a/src/view/screens/Contacts/index.tsx b/src/view/screens/Contacts/index.tsx new file mode 100644 index 0000000000..917908e176 --- /dev/null +++ b/src/view/screens/Contacts/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Contacts = register({ + loader: () => import('./Contacts'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home/Home.tsx similarity index 90% rename from src/view/screens/Home.tsx rename to src/view/screens/Home/Home.tsx index a1d2027385..3f66db4296 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home/Home.tsx @@ -3,16 +3,16 @@ import {StyleSheet, Text, TouchableOpacity, View} from 'react-native' import {observer} from 'mobx-react-lite' import useAppState from 'react-native-appstate-hook' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {ViewHeader} from '../com/util/ViewHeader' -import {Feed} from '../com/posts/Feed' -import {useStores} from '../../state' -import {FeedModel} from '../../state/models/feed-view' -import {ScreenParams} from '../routes' -import {s, colors} from '../lib/styles' +import {ViewHeader} from '../../com/util/ViewHeader' +import {Feed} from '../../com/posts/Feed' +import {useStores} from '../../../state' +import {FeedModel} from '../../../state/models/feed-view' +import {ScreenParams} from '../../routes' +import {s, colors} from '../../lib/styles' const HITSLOP = {left: 20, top: 20, right: 20, bottom: 20} -export const Home = observer(function Home({ +export default observer(function Home({ navIdx, visible, scrollElRef, diff --git a/src/view/screens/Home/index.tsx b/src/view/screens/Home/index.tsx new file mode 100644 index 0000000000..e7f35911bd --- /dev/null +++ b/src/view/screens/Home/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Home = register({ + loader: () => import('./Home'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Login.tsx b/src/view/screens/Login/index.tsx similarity index 97% rename from src/view/screens/Login.tsx rename to src/view/screens/Login/index.tsx index 38c2c1c79d..445f96b6c3 100644 --- a/src/view/screens/Login.tsx +++ b/src/view/screens/Login/index.tsx @@ -14,19 +14,20 @@ import Svg, {Circle, Line, Text as SvgText} from 'react-native-svg' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import * as EmailValidator from 'email-validator' import {observer} from 'mobx-react-lite' -import {Picker} from '../com/util/Picker' -import {TextLink} from '../com/util/Link' -import {s, colors} from '../lib/styles' +import {Picker} from '../../com/util/Picker' +import {TextLink} from '../../com/util/Link' +import {s, colors} from '../../lib/styles' import { makeValidHandle, createFullHandle, toNiceDomain, -} from '../../lib/strings' -import {useStores, DEFAULT_SERVICE} from '../../state' -import {ServiceDescription} from '../../state/models/session' -import {ServerInputModel} from '../../state/models/shell-ui' -import {ComAtprotoAccountCreate} from '../../third-party/api/index' -import {isNetworkError} from '../../lib/errors' +} from '../../../lib/strings' +import {useStores, DEFAULT_SERVICE} from '../../../state' +import {ServiceDescription} from '../../../state/models/session' +import {ServerInputModel} from '../../../state/models/shell-ui' +import {ComAtprotoAccountCreate} from '../../../third-party/api/index' +import {isNetworkError} from '../../../lib/errors' +import {investigate} from 'react-native-bundle-splitter/dist/utils' enum ScreenState { SigninOrCreateAccount, @@ -589,6 +590,12 @@ export const Login = observer( ScreenState.SigninOrCreateAccount, ) + console.log( + `Bundle:\nloaded:${investigate().loaded.length}\nwaiting:${ + investigate().waiting.length + }`, + ) + return ( {screenState === ScreenState.SigninOrCreateAccount ? ( diff --git a/src/view/screens/NotFound.tsx b/src/view/screens/NotFound/NotFound.tsx similarity index 80% rename from src/view/screens/NotFound.tsx rename to src/view/screens/NotFound/NotFound.tsx index 6b196500d5..d8db9d8a2b 100644 --- a/src/view/screens/NotFound.tsx +++ b/src/view/screens/NotFound/NotFound.tsx @@ -1,9 +1,9 @@ import React from 'react' import {Text, Button, View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {useStores} from '../../state' +import {ViewHeader} from '../../com/util/ViewHeader' +import {useStores} from '../../../state' -export const NotFound = () => { +export default () => { const stores = useStores() return ( diff --git a/src/view/screens/NotFound/index.tsx b/src/view/screens/NotFound/index.tsx new file mode 100644 index 0000000000..a67f84ab97 --- /dev/null +++ b/src/view/screens/NotFound/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const NotFound = register({ + loader: () => import('./NotFound'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications/Notifications.tsx similarity index 72% rename from src/view/screens/Notifications.tsx rename to src/view/screens/Notifications/Notifications.tsx index b168ffaff4..6f0dc4fa72 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications/Notifications.tsx @@ -1,12 +1,12 @@ import React, {useState, useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {Feed} from '../com/notifications/Feed' -import {useStores} from '../../state' -import {NotificationsViewModel} from '../../state/models/notifications-view' -import {ScreenParams} from '../routes' +import {ViewHeader} from '../../com/util/ViewHeader' +import {Feed} from '../../com/notifications/Feed' +import {useStores} from '../../../state' +import {NotificationsViewModel} from '../../../state/models/notifications-view' +import {ScreenParams} from '../../routes' -export const Notifications = ({navIdx, visible}: ScreenParams) => { +export default ({navIdx, visible}: ScreenParams) => { const store = useStores() useEffect(() => { diff --git a/src/view/screens/Notifications/index.tsx b/src/view/screens/Notifications/index.tsx new file mode 100644 index 0000000000..31aac33721 --- /dev/null +++ b/src/view/screens/Notifications/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Notifications = register({ + loader: () => import('./Notifications'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Onboard.tsx b/src/view/screens/Onboard/Onboard.tsx similarity index 71% rename from src/view/screens/Onboard.tsx rename to src/view/screens/Onboard/Onboard.tsx index 4aa0e6cac1..d0352e656b 100644 --- a/src/view/screens/Onboard.tsx +++ b/src/view/screens/Onboard/Onboard.tsx @@ -1,12 +1,12 @@ import React, {useEffect} from 'react' import {View} from 'react-native' import {observer} from 'mobx-react-lite' -import {FeatureExplainer} from '../com/onboard/FeatureExplainer' -import {Follows} from '../com/onboard/Follows' -import {OnboardStage, OnboardStageOrder} from '../../state/models/onboard' -import {useStores} from '../../state' +import {FeatureExplainer} from '../../com/onboard/FeatureExplainer' +import {Follows} from '../../com/onboard/Follows' +import {OnboardStage, OnboardStageOrder} from '../../../state/models/onboard' +import {useStores} from '../../../state' -export const Onboard = observer(() => { +export default observer(() => { const store = useStores() useEffect(() => { diff --git a/src/view/screens/Onboard/index.tsx b/src/view/screens/Onboard/index.tsx new file mode 100644 index 0000000000..63c2283b54 --- /dev/null +++ b/src/view/screens/Onboard/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Onboard = register({ + loader: () => import('./Onboard'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/PostDownvotedBy.tsx b/src/view/screens/PostDownvotedBy/PostDownvotedBy.tsx similarity index 57% rename from src/view/screens/PostDownvotedBy.tsx rename to src/view/screens/PostDownvotedBy/PostDownvotedBy.tsx index b16ec5c0a8..da1775b94b 100644 --- a/src/view/screens/PostDownvotedBy.tsx +++ b/src/view/screens/PostDownvotedBy/PostDownvotedBy.tsx @@ -1,12 +1,12 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {PostVotedBy as PostLikedByComponent} from '../com/post-thread/PostVotedBy' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' -import {makeRecordUri} from '../../lib/strings' +import {ViewHeader} from '../../com/util/ViewHeader' +import {PostVotedBy as PostLikedByComponent} from '../../com/post-thread/PostVotedBy' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' +import {makeRecordUri} from '../../../lib/strings' -export const PostDownvotedBy = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name, rkey} = params const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey) diff --git a/src/view/screens/PostDownvotedBy/index.tsx b/src/view/screens/PostDownvotedBy/index.tsx new file mode 100644 index 0000000000..bda53c5230 --- /dev/null +++ b/src/view/screens/PostDownvotedBy/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const PostDownvotedBy = register({ + loader: () => import('./PostDownvotedBy'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/PostRepostedBy.tsx b/src/view/screens/PostRepostedBy/PostRepostedBy.tsx similarity index 55% rename from src/view/screens/PostRepostedBy.tsx rename to src/view/screens/PostRepostedBy/PostRepostedBy.tsx index d8e4b910ec..923ad19de4 100644 --- a/src/view/screens/PostRepostedBy.tsx +++ b/src/view/screens/PostRepostedBy/PostRepostedBy.tsx @@ -1,12 +1,12 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {PostRepostedBy as PostRepostedByComponent} from '../com/post-thread/PostRepostedBy' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' -import {makeRecordUri} from '../../lib/strings' +import {ViewHeader} from '../../com/util/ViewHeader' +import {PostRepostedBy as PostRepostedByComponent} from '../../com/post-thread/PostRepostedBy' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' +import {makeRecordUri} from '../../../lib/strings' -export const PostRepostedBy = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name, rkey} = params const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey) diff --git a/src/view/screens/PostRepostedBy/index.tsx b/src/view/screens/PostRepostedBy/index.tsx new file mode 100644 index 0000000000..fccf006890 --- /dev/null +++ b/src/view/screens/PostRepostedBy/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const PostRepostedBy = register({ + loader: () => import('./PostRepostedBy'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/PostThread.tsx b/src/view/screens/PostThread/PostThread.tsx similarity index 76% rename from src/view/screens/PostThread.tsx rename to src/view/screens/PostThread/PostThread.tsx index 1e63ac390d..e08274e167 100644 --- a/src/view/screens/PostThread.tsx +++ b/src/view/screens/PostThread/PostThread.tsx @@ -1,13 +1,13 @@ import React, {useEffect, useMemo, useState} from 'react' import {View} from 'react-native' -import {makeRecordUri} from '../../lib/strings' -import {ViewHeader} from '../com/util/ViewHeader' -import {PostThread as PostThreadComponent} from '../com/post-thread/PostThread' -import {PostThreadViewModel} from '../../state/models/post-thread-view' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' +import {makeRecordUri} from '../../../lib/strings' +import {ViewHeader} from '../../com/util/ViewHeader' +import {PostThread as PostThreadComponent} from '../../com/post-thread/PostThread' +import {PostThreadViewModel} from '../../../state/models/post-thread-view' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' -export const PostThread = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name, rkey} = params const [viewSubtitle, setViewSubtitle] = useState(`by ${name}`) diff --git a/src/view/screens/PostThread/index.tsx b/src/view/screens/PostThread/index.tsx new file mode 100644 index 0000000000..3281188ddd --- /dev/null +++ b/src/view/screens/PostThread/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const PostThread = register({ + loader: () => import('./PostThread'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/PostUpvotedBy.tsx b/src/view/screens/PostUpvotedBy/PostUpvotedBy.tsx similarity index 57% rename from src/view/screens/PostUpvotedBy.tsx rename to src/view/screens/PostUpvotedBy/PostUpvotedBy.tsx index 2794d529a3..4cf10bef8e 100644 --- a/src/view/screens/PostUpvotedBy.tsx +++ b/src/view/screens/PostUpvotedBy/PostUpvotedBy.tsx @@ -1,12 +1,12 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {PostVotedBy as PostLikedByComponent} from '../com/post-thread/PostVotedBy' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' -import {makeRecordUri} from '../../lib/strings' +import {ViewHeader} from '../../com/util/ViewHeader' +import {PostVotedBy as PostLikedByComponent} from '../../com/post-thread/PostVotedBy' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' +import {makeRecordUri} from '../../../lib/strings' -export const PostUpvotedBy = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name, rkey} = params const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey) diff --git a/src/view/screens/PostUpvotedBy/index.tsx b/src/view/screens/PostUpvotedBy/index.tsx new file mode 100644 index 0000000000..2f31fbafc2 --- /dev/null +++ b/src/view/screens/PostUpvotedBy/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const PostUpvotedBy = register({ + loader: () => import('./PostUpvotedBy'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile/Profile.tsx similarity index 88% rename from src/view/screens/Profile.tsx rename to src/view/screens/Profile/Profile.tsx index 2425579aa8..0c5cca7cc1 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile/Profile.tsx @@ -2,28 +2,28 @@ import React, {useEffect, useState, useMemo} from 'react' import {StyleSheet, Text, View} from 'react-native' import {observer} from 'mobx-react-lite' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {ViewSelector} from '../com/util/ViewSelector' -import {ScreenParams} from '../routes' -import {ProfileUiModel, Sections} from '../../state/models/profile-ui' -import {MembershipItem} from '../../state/models/memberships-view' -import {useStores} from '../../state' -import {ConfirmModel} from '../../state/models/shell-ui' -import {ProfileHeader} from '../com/profile/ProfileHeader' -import {FeedItem} from '../com/posts/FeedItem' -import {ProfileCard} from '../com/profile/ProfileCard' -import {PostFeedLoadingPlaceholder} from '../com/util/LoadingPlaceholder' -import {ErrorScreen} from '../com/util/ErrorScreen' -import {ErrorMessage} from '../com/util/ErrorMessage' -import {EmptyState} from '../com/util/EmptyState' -import {ViewHeader} from '../com/util/ViewHeader' -import * as Toast from '../com/util/Toast' -import {s, colors} from '../lib/styles' +import {ViewSelector} from '../../com/util/ViewSelector' +import {ScreenParams} from '../../routes' +import {ProfileUiModel, Sections} from '../../../state/models/profile-ui' +import {MembershipItem} from '../../../state/models/memberships-view' +import {useStores} from '../../../state' +import {ConfirmModel} from '../../../state/models/shell-ui' +import {ProfileHeader} from '../../com/profile/ProfileHeader' +import {FeedItem} from '../../com/posts/FeedItem' +import {ProfileCard} from '../../com/profile/ProfileCard' +import {PostFeedLoadingPlaceholder} from '../../com/util/LoadingPlaceholder' +import {ErrorScreen} from '../../com/util/ErrorScreen' +import {ErrorMessage} from '../../com/util/ErrorMessage' +import {EmptyState} from '../../com/util/EmptyState' +import {ViewHeader} from '../../com/util/ViewHeader' +import * as Toast from '../../com/util/Toast' +import {s, colors} from '../../lib/styles' const LOADING_ITEM = {_reactKey: '__loading__'} const END_ITEM = {_reactKey: '__end__'} const EMPTY_ITEM = {_reactKey: '__empty__'} -export const Profile = observer(({navIdx, visible, params}: ScreenParams) => { +export default observer(({navIdx, visible, params}: ScreenParams) => { const store = useStores() const [hasSetup, setHasSetup] = useState(false) const uiState = useMemo( diff --git a/src/view/screens/Profile/index.tsx b/src/view/screens/Profile/index.tsx new file mode 100644 index 0000000000..e9f99eac5c --- /dev/null +++ b/src/view/screens/Profile/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Profile = register({ + loader: () => import('./Profile'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/ProfileFollowers.tsx b/src/view/screens/ProfileFollowers/ProfileFollowers.tsx similarity index 66% rename from src/view/screens/ProfileFollowers.tsx rename to src/view/screens/ProfileFollowers/ProfileFollowers.tsx index b19a5bc37c..d299188f8a 100644 --- a/src/view/screens/ProfileFollowers.tsx +++ b/src/view/screens/ProfileFollowers/ProfileFollowers.tsx @@ -1,11 +1,11 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {ProfileFollowers as ProfileFollowersComponent} from '../com/profile/ProfileFollowers' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' +import {ViewHeader} from '../../com/util/ViewHeader' +import {ProfileFollowers as ProfileFollowersComponent} from '../../com/profile/ProfileFollowers' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' -export const ProfileFollowers = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name} = params diff --git a/src/view/screens/ProfileFollowers/index.tsx b/src/view/screens/ProfileFollowers/index.tsx new file mode 100644 index 0000000000..c205ad6251 --- /dev/null +++ b/src/view/screens/ProfileFollowers/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const ProfileFollowers = register({ + loader: () => import('./ProfileFollowers'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/ProfileFollows.tsx b/src/view/screens/ProfileFollows/ProfileFollows.tsx similarity index 58% rename from src/view/screens/ProfileFollows.tsx rename to src/view/screens/ProfileFollows/ProfileFollows.tsx index e54b562e7b..cc60616e7c 100644 --- a/src/view/screens/ProfileFollows.tsx +++ b/src/view/screens/ProfileFollows/ProfileFollows.tsx @@ -1,11 +1,11 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {ProfileFollows as ProfileFollowsComponent} from '../com/profile/ProfileFollows' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' +import {ViewHeader} from '../../com/util/ViewHeader' +import {ProfileFollows as ProfileFollowsComponent} from '../../com/profile/ProfileFollows' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' -export const ProfileFollows = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name} = params diff --git a/src/view/screens/ProfileFollows/index.tsx b/src/view/screens/ProfileFollows/index.tsx new file mode 100644 index 0000000000..c28197b167 --- /dev/null +++ b/src/view/screens/ProfileFollows/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const ProfileFollows = register({ + loader: () => import('./ProfileFollows'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/ProfileMembers.tsx b/src/view/screens/ProfileMembers/ProfileMembers.tsx similarity index 58% rename from src/view/screens/ProfileMembers.tsx rename to src/view/screens/ProfileMembers/ProfileMembers.tsx index b4b6c7e508..5c5a8e83c9 100644 --- a/src/view/screens/ProfileMembers.tsx +++ b/src/view/screens/ProfileMembers/ProfileMembers.tsx @@ -1,11 +1,11 @@ import React, {useEffect} from 'react' import {View} from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {ProfileMembers as ProfileMembersComponent} from '../com/profile/ProfileMembers' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' +import {ViewHeader} from '../../com/util/ViewHeader' +import {ProfileMembers as ProfileMembersComponent} from '../../com/profile/ProfileMembers' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' -export const ProfileMembers = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const {name} = params diff --git a/src/view/screens/ProfileMembers/index.tsx b/src/view/screens/ProfileMembers/index.tsx new file mode 100644 index 0000000000..710d005c92 --- /dev/null +++ b/src/view/screens/ProfileMembers/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const ProfileMembers = register({ + loader: () => import('./ProfileMembers'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Search.tsx b/src/view/screens/Search/Search.tsx similarity index 86% rename from src/view/screens/Search.tsx rename to src/view/screens/Search/Search.tsx index 1cc0a5fe9c..241755b6eb 100644 --- a/src/view/screens/Search.tsx +++ b/src/view/screens/Search/Search.tsx @@ -8,16 +8,16 @@ import { TouchableOpacity, View, } from 'react-native' -import {ViewHeader} from '../com/util/ViewHeader' -import {SuggestedFollows} from '../com/discover/SuggestedFollows' -import {UserAvatar} from '../com/util/UserAvatar' -import {ScreenParams} from '../routes' -import {useStores} from '../../state' -import {UserAutocompleteViewModel} from '../../state/models/user-autocomplete-view' -import {s, colors} from '../lib/styles' -import {MagnifyingGlassIcon} from '../lib/icons' +import {ViewHeader} from '../../com/util/ViewHeader' +import {SuggestedFollows} from '../../com/discover/SuggestedFollows' +import {UserAvatar} from '../../com/util/UserAvatar' +import {ScreenParams} from '../../routes' +import {useStores} from '../../../state' +import {UserAutocompleteViewModel} from '../../../state/models/user-autocomplete-view' +import {s, colors} from '../../lib/styles' +import {MagnifyingGlassIcon} from '../../lib/icons' -export const Search = ({navIdx, visible, params}: ScreenParams) => { +export default ({navIdx, visible, params}: ScreenParams) => { const store = useStores() const textInput = useRef(null) const [query, setQuery] = useState('') diff --git a/src/view/screens/Search/index.tsx b/src/view/screens/Search/index.tsx new file mode 100644 index 0000000000..4fe00409a8 --- /dev/null +++ b/src/view/screens/Search/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Search = register({ + loader: () => import('./Search'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +}) diff --git a/src/view/screens/Settings.tsx b/src/view/screens/Settings/Settings.tsx similarity index 83% rename from src/view/screens/Settings.tsx rename to src/view/screens/Settings/Settings.tsx index 599bb57931..121ef7e2c8 100644 --- a/src/view/screens/Settings.tsx +++ b/src/view/screens/Settings/Settings.tsx @@ -1,17 +1,14 @@ import React, {useEffect} from 'react' import {StyleSheet, Text, TouchableOpacity, View} from 'react-native' import {observer} from 'mobx-react-lite' -import {useStores} from '../../state' -import {ScreenParams} from '../routes' -import {s, colors} from '../lib/styles' -import {ViewHeader} from '../com/util/ViewHeader' -import {Link} from '../com/util/Link' -import {UserAvatar} from '../com/util/UserAvatar' +import {useStores} from '../../../state' +import {ScreenParams} from '../../routes' +import {s, colors} from '../../lib/styles' +import {ViewHeader} from '../../com/util/ViewHeader' +import {Link} from '../../com/util/Link' +import {UserAvatar} from '../../com/util/UserAvatar' -export const Settings = observer(function Settings({ - navIdx, - visible, -}: ScreenParams) { +export default observer(function Settings({navIdx, visible}: ScreenParams) { const store = useStores() useEffect(() => { diff --git a/src/view/screens/Settings/index.tsx b/src/view/screens/Settings/index.tsx new file mode 100644 index 0000000000..ae8eb8c246 --- /dev/null +++ b/src/view/screens/Settings/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import {View, ActivityIndicator, StyleSheet} from 'react-native' +import {register} from 'react-native-bundle-splitter' + +export const Settings = register({ + loader: () => import('./Settings'), + placeholder: () => ( + + + + ), +}) + +const styles = StyleSheet.create({ + loading: {flex: 1, justifyContent: 'center'}, +})