This commit is contained in:
Zhiyuan Zheng 2020-12-21 23:30:26 +01:00
parent e77de4e9c0
commit a1a959995e
No known key found for this signature in database
GPG Key ID: 078A93AB607D85E0
6 changed files with 44 additions and 66 deletions

45
App.tsx
View File

@ -1,6 +1,5 @@
import * as SplashScreen from 'expo-splash-screen'
import React, { useEffect, useState } from 'react'
import { AppearanceProvider } from 'react-native-appearance'
import { QueryClient, QueryClientProvider } from 'react-query'
import { Provider } from 'react-redux'
import { PersistGate } from 'redux-persist/integration/react'
@ -46,29 +45,27 @@ const App: React.FC = () => {
}, [appLoaded])
return (
<AppearanceProvider>
<QueryClientProvider client={queryClient}>
<Provider store={store}>
<PersistGate
persistor={persistor}
onBeforeLift={() => setAppLoaded(true)}
>
{bootstrapped => {
if (bootstrapped) {
require('@root/i18n/i18n')
return (
<ThemeManager>
<Index />
</ThemeManager>
)
} else {
return null
}
}}
</PersistGate>
</Provider>
</QueryClientProvider>
</AppearanceProvider>
<QueryClientProvider client={queryClient}>
<Provider store={store}>
<PersistGate
persistor={persistor}
onBeforeLift={() => setAppLoaded(true)}
>
{bootstrapped => {
if (bootstrapped) {
require('@root/i18n/i18n')
return (
<ThemeManager>
<Index />
</ThemeManager>
)
} else {
return null
}
}}
</PersistGate>
</Provider>
</QueryClientProvider>
)
}

View File

@ -36,7 +36,6 @@
"react-dom": "16.13.1",
"react-i18next": "^11.8.4",
"react-native": "https://github.com/expo/react-native/archive/sdk-40.0.0.tar.gz",
"react-native-appearance": "~0.3.3",
"react-native-collapsible": "^1.5.3",
"react-native-gesture-handler": "~1.8.0",
"react-native-htmlview": "^0.16.0",
@ -72,4 +71,4 @@
"typescript": "~4.0.0"
},
"private": true
}
}

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useState } from 'react'
import React, { useCallback, useState } from 'react'
import { Dimensions, StyleSheet, View } from 'react-native'
import SegmentedControl from '@react-native-community/segmented-control'
import { createNativeStackNavigator } from 'react-native-screens/native-stack'
@ -26,12 +26,6 @@ const Timelines: React.FC<Props> = ({ name, content }) => {
const localRegistered = useSelector(getLocalUrl)
const publicDomain = useSelector(getRemoteUrl)
const [segment, setSegment] = useState(0)
const [renderHeader, setRenderHeader] = useState(false)
useEffect(() => {
const nbr = setTimeout(() => setRenderHeader(true), 50)
return
}, [])
const onPressSearch = useCallback(() => {
navigation.navigate(getCurrentTab(navigation), {
@ -40,9 +34,7 @@ const Timelines: React.FC<Props> = ({ name, content }) => {
}, [])
const routes = content
.filter(p =>
localRegistered ? p : p.page === 'RemotePublic' ? p : undefined
)
.filter(p => (localRegistered ? true : p.page === 'RemotePublic'))
.map(p => ({ key: p.page }))
const renderScene = ({
@ -71,7 +63,7 @@ const Timelines: React.FC<Props> = ({ name, content }) => {
initialLayout={{ width: Dimensions.get('window').width }}
/>
),
[segment]
[segment, localRegistered]
)
return (
@ -80,24 +72,23 @@ const Timelines: React.FC<Props> = ({ name, content }) => {
name={name}
options={{
headerTitle: name === 'Screen-Public-Root' ? publicDomain : '',
...(renderHeader &&
localRegistered && {
headerCenter: () => (
<View style={styles.segmentsContainer}>
<SegmentedControl
appearance={mode}
values={[content[0].title, content[1].title]}
selectedIndex={segment}
onChange={({ nativeEvent }) =>
setSegment(nativeEvent.selectedSegmentIndex)
}
/>
</View>
),
headerRight: () => (
<HeaderRight icon='search' onPress={onPressSearch} />
)
})
...(localRegistered && {
headerCenter: () => (
<View style={styles.segmentsContainer}>
<SegmentedControl
appearance={mode}
values={[content[0].title, content[1].title]}
selectedIndex={segment}
onChange={({ nativeEvent }) =>
setSegment(nativeEvent.selectedSegmentIndex)
}
/>
</View>
),
headerRight: () => (
<HeaderRight icon='search' onPress={onPressSearch} />
)
})
}}
>
{screenComponent}

View File

@ -107,7 +107,7 @@ const Login: React.FC = () => {
const onChangeText = useCallback(
debounce(
text => {
setInstanceDomain(text)
setInstanceDomain(text.replace(/^http(s)?\:\/\//i, ''))
setApplicationData(undefined)
},
1000,

View File

@ -1,5 +1,5 @@
import React, { createContext, useContext, useEffect, useState } from 'react'
import { useColorScheme } from 'react-native-appearance'
import { useColorScheme } from 'react-native'
import { useSelector } from 'react-redux'
import { ColorDefinitions, getTheme } from '@utils/styles/themes'
import { getSettingsTheme } from '@utils/slices/settingsSlice'

View File

@ -5225,15 +5225,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
react-native-appearance@~0.3.3:
version "0.3.4"
resolved "https://registry.yarnpkg.com/react-native-appearance/-/react-native-appearance-0.3.4.tgz#2cbcbc5142cdc1898c116684f519b16c879cbec2"
integrity sha512-Vz3zdJbAEiMDwuw6wH98TT1WVfBvWjvANutYtkIbl16KGRCigtSgt6IIiLsF3/TSS3y3FtHhWDelFeGw/rtuig==
dependencies:
fbemitter "^2.1.1"
invariant "^2.2.4"
use-subscription "^1.0.0"
react-native-collapsible@^1.5.3:
version "1.5.3"
resolved "https://registry.yarnpkg.com/react-native-collapsible/-/react-native-collapsible-1.5.3.tgz#d6bc7274ae8f40f7688cca23ededa263e6c81c63"