|
@@ -9,7 +9,7 @@ import './setting.scss'
|
|
|
import { getNotifySettings, postNotifySettings } from "@/services/notifications";
|
|
import { getNotifySettings, postNotifySettings } from "@/services/notifications";
|
|
|
import { ColorType } from "@/context/themes/color";
|
|
import { ColorType } from "@/context/themes/color";
|
|
|
import { getLocalPush } from "@/features/trackTimeDuration/actions/TrackTimeActions";
|
|
import { getLocalPush } from "@/features/trackTimeDuration/actions/TrackTimeActions";
|
|
|
-import { useSelector } from "react-redux";
|
|
|
|
|
|
|
+import { useDispatch, useSelector } from "react-redux";
|
|
|
import ProductList from "../store/product_list";
|
|
import ProductList from "../store/product_list";
|
|
|
import { jumpPage } from "@/features/trackTimeDuration/hooks/Common";
|
|
import { jumpPage } from "@/features/trackTimeDuration/hooks/Common";
|
|
|
import { getPerm, userAccess } from "@/services/user";
|
|
import { getPerm, userAccess } from "@/services/user";
|
|
@@ -19,9 +19,13 @@ import Layout from "@/components/layout/layout";
|
|
|
import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
|
|
import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
|
|
|
import TitleView from "@/features/trackTimeDuration/components/TitleView";
|
|
import TitleView from "@/features/trackTimeDuration/components/TitleView";
|
|
|
import showAlert from "@/components/basic/Alert";
|
|
import showAlert from "@/components/basic/Alert";
|
|
|
|
|
+import Tabbar from "@/components/navigation/TabBar";
|
|
|
|
|
+import FSwitch from "@/components/input/FSwitch";
|
|
|
|
|
+import { wxPubFollow } from "@/services/permission";
|
|
|
|
|
+import { setWXFollow } from "@/store/permission";
|
|
|
|
|
|
|
|
let useNavigation;
|
|
let useNavigation;
|
|
|
-let AppState, Switch;
|
|
|
|
|
|
|
+let AppState;
|
|
|
let OneSignal
|
|
let OneSignal
|
|
|
let NativeAppEventEmitter
|
|
let NativeAppEventEmitter
|
|
|
let Jto
|
|
let Jto
|
|
@@ -35,11 +39,11 @@ if (process.env.TARO_ENV == 'rn') {
|
|
|
checkNotification = require('@/utils/native_permission_check').checkNotification;
|
|
checkNotification = require('@/utils/native_permission_check').checkNotification;
|
|
|
|
|
|
|
|
AppState = require("react-native").AppState
|
|
AppState = require("react-native").AppState
|
|
|
- Switch = require("react-native").Switch
|
|
|
|
|
useNavigation = require("@react-navigation/native").useNavigation
|
|
useNavigation = require("@react-navigation/native").useNavigation
|
|
|
}
|
|
}
|
|
|
export default function Page() {
|
|
export default function Page() {
|
|
|
const { t } = useTranslation()
|
|
const { t } = useTranslation()
|
|
|
|
|
+ const dispatch = useDispatch();
|
|
|
const [segmentIndex, setSegmentIndex] = useState(0)
|
|
const [segmentIndex, setSegmentIndex] = useState(0)
|
|
|
const [notification, setNotification] = useState<any>(null)
|
|
const [notification, setNotification] = useState<any>(null)
|
|
|
const [isExtra, setIsExtra] = useState(false)
|
|
const [isExtra, setIsExtra] = useState(false)
|
|
@@ -55,6 +59,8 @@ export default function Page() {
|
|
|
const [showMemberAlert, setShowMemberAlert] = useState(false)
|
|
const [showMemberAlert, setShowMemberAlert] = useState(false)
|
|
|
const user = useSelector((state: any) => state.user);
|
|
const user = useSelector((state: any) => state.user);
|
|
|
const accessObj = useSelector((state: any) => state.access);
|
|
const accessObj = useSelector((state: any) => state.access);
|
|
|
|
|
+ const common = useSelector((state: any) => state.common);
|
|
|
|
|
+ const permission = useSelector((state: any) => state.permission);
|
|
|
|
|
|
|
|
let navigation;
|
|
let navigation;
|
|
|
if (useNavigation) {
|
|
if (useNavigation) {
|
|
@@ -95,6 +101,13 @@ export default function Page() {
|
|
|
}
|
|
}
|
|
|
}, [user.isLogin])
|
|
}, [user.isLogin])
|
|
|
|
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ setIsAuthorized(permission.wxPubFollow)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }, [permission.wxPubFollow])
|
|
|
|
|
+
|
|
|
const handleAppStateChange = (nextAppState) => {
|
|
const handleAppStateChange = (nextAppState) => {
|
|
|
console.log(nextAppState)
|
|
console.log(nextAppState)
|
|
|
if (nextAppState != 'active') {
|
|
if (nextAppState != 'active') {
|
|
@@ -190,8 +203,20 @@ export default function Page() {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function followWxPub() {
|
|
|
|
|
+ const resource = common.resources.filter((item: any) => {
|
|
|
|
|
+ return item.code == 'follow_wx_pub'
|
|
|
|
|
+ })
|
|
|
|
|
+ jumpPage('/pages/common/H5?title=fast16cc 关注服务号&url=' + resource[0].url)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function checkSetting() {
|
|
function checkSetting() {
|
|
|
- console.log('notification setting begin')
|
|
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ wxPubFollow({ force_refresh: true }).then(res => {
|
|
|
|
|
+ dispatch(setWXFollow((res as any).wx_pub_followed));
|
|
|
|
|
+ })
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
if (process.env.TARO_ENV == 'rn' && kIsAndroid) {
|
|
if (process.env.TARO_ENV == 'rn' && kIsAndroid) {
|
|
|
var Jto = require('react-native').NativeModules.NativeBridge;
|
|
var Jto = require('react-native').NativeModules.NativeBridge;
|
|
|
Jto.getChannelStatus().then(result => {
|
|
Jto.getChannelStatus().then(result => {
|
|
@@ -292,7 +317,7 @@ export default function Page() {
|
|
|
</View>
|
|
</View>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function notificationOpen(){
|
|
|
|
|
|
|
+ function notificationOpen() {
|
|
|
if (process.env.TARO_ENV === 'rn') {
|
|
if (process.env.TARO_ENV === 'rn') {
|
|
|
PushNotification.checkPermissions((res) => {
|
|
PushNotification.checkPermissions((res) => {
|
|
|
//允许授权
|
|
//允许授权
|
|
@@ -318,44 +343,47 @@ export default function Page() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function pro(isLogin: boolean) {
|
|
function pro(isLogin: boolean) {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') return proDetail(isLogin)
|
|
|
return <ScrollView style={{ flex: 1 }}>
|
|
return <ScrollView style={{ flex: 1 }}>
|
|
|
- {/* <ProductList /> */}
|
|
|
|
|
- {/* <Text style={{fontSize:30,color:'#fff'}} onClick={iap}>iap test</Text> */}
|
|
|
|
|
- <View className="setting_container">
|
|
|
|
|
- <View className="setting_section">
|
|
|
|
|
- <Text className="setting_section_title">Fast & Sleep</Text>
|
|
|
|
|
- </View>
|
|
|
|
|
- <Text className="setting_header">Reminders</Text>
|
|
|
|
|
- <View className="setting_cell">
|
|
|
|
|
- <Text className="setting_cell_title" style={{ flex: 1 }}>At schedule time</Text>
|
|
|
|
|
- {
|
|
|
|
|
- isLogin ? <Text className="setting_cell_value1">{systemFast ? 'Always' : 'Off'}</Text> :
|
|
|
|
|
- <Text className="setting_cell_value1">Off</Text>
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ proDetail(isLogin)
|
|
|
|
|
+ }
|
|
|
|
|
+ </ScrollView>
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- </View>
|
|
|
|
|
- <Text className="setting_footer">A timely reminder so you never miss your schedule time for fasting and/or sleep.</Text>
|
|
|
|
|
- <Text className="setting_header">Extra Reminders (Pro)</Text>
|
|
|
|
|
- <View className="setting_cell">
|
|
|
|
|
- <Text className="setting_cell_title" style={{ flex: 1 }}>Missed previous action</Text>
|
|
|
|
|
- <Switch className="myswitch" value={isLogin ? (isAuthorized ? isExtra : false) : false} color={ColorType.fast} trackColor={{ true: ColorType.fast }} onChange={(e) => {
|
|
|
|
|
|
|
+ function proDetail(isLogin: boolean) {
|
|
|
|
|
+ return <View className="setting_container">
|
|
|
|
|
+ <View className="setting_section">
|
|
|
|
|
+ <Text className="setting_section_title">Fast & Sleep</Text>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <Text className="setting_header">Reminders</Text>
|
|
|
|
|
+ <View className="setting_cell">
|
|
|
|
|
+ <Text className="setting_cell_title" style={{ flex: 1 }}>At schedule time</Text>
|
|
|
|
|
+ {
|
|
|
|
|
+ isLogin ? <Text className="setting_cell_value1">{systemFast ? 'Always' : 'Off'}</Text> :
|
|
|
|
|
+ <Text className="setting_cell_value1">Off</Text>
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <Text className="setting_footer">A timely reminder so you never miss your schedule time for fasting and/or sleep.</Text>
|
|
|
|
|
+ <Text className="setting_header">Extra Reminders (Pro)</Text>
|
|
|
|
|
+ <View className="setting_cell">
|
|
|
|
|
+ <Text className="setting_cell_title" style={{ flex: 1 }}>Missed previous action</Text>
|
|
|
|
|
+ <FSwitch color={ColorType.fast}
|
|
|
|
|
+ checked={isLogin ? (isAuthorized ? isExtra : false) : false}
|
|
|
|
|
+ onChange={(value) => {
|
|
|
if (!isLogin) {
|
|
if (!isLogin) {
|
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ debugger
|
|
|
|
|
|
|
|
if (!isAuthorized) {
|
|
if (!isAuthorized) {
|
|
|
notificationOpen()
|
|
notificationOpen()
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- const value = e.nativeEvent.value
|
|
|
|
|
- if (e.nativeEvent.value) {
|
|
|
|
|
|
|
+ if (value) {
|
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
|
- // setTimeout(() => {
|
|
|
|
|
- // setIsSunrise(false)
|
|
|
|
|
- // }, 1000)
|
|
|
|
|
-
|
|
|
|
|
- // jumpPage('', 'ProductList', navigation)
|
|
|
|
|
setShowMemberAlert(true)
|
|
setShowMemberAlert(true)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
@@ -373,18 +401,21 @@ export default function Page() {
|
|
|
setIsExtra(value)
|
|
setIsExtra(value)
|
|
|
getLocalPush()
|
|
getLocalPush()
|
|
|
})
|
|
})
|
|
|
- }} />
|
|
|
|
|
- </View>
|
|
|
|
|
- <Text className="setting_footer">In case you missed your previous action, receive another reminder to log it together with the current one. This gives you extra protection against any streak loss.</Text>
|
|
|
|
|
- <View className="setting_section">
|
|
|
|
|
- <Text className="setting_section_title">The Sun (Pro)</Text>
|
|
|
|
|
- </View>
|
|
|
|
|
- <Text className="setting_header">Reminders for Your Daily Local Solar Times</Text>
|
|
|
|
|
- <View className="setting_cell_group">
|
|
|
|
|
- <View className="setting_cell_group_item">
|
|
|
|
|
- <Text className="setting_cell_title" style={{ flex: 1 }}>Sunrise</Text>
|
|
|
|
|
- <Switch className="myswitch" value={isLogin ? (isAuthorized ? isSunrise : false) : false} color={ColorType.fast} trackColor={{ true: ColorType.fast }} onChange={(e) => {
|
|
|
|
|
- // setIsMulti(e.nativeEvent.value)
|
|
|
|
|
|
|
+ }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <Text className="setting_footer">In case you missed your previous action, receive another reminder to log it together with the current one. This gives you extra protection against any streak loss.</Text>
|
|
|
|
|
+ <View className="setting_section">
|
|
|
|
|
+ <Text className="setting_section_title">The Sun (Pro)</Text>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <Text className="setting_header">Reminders for Your Daily Local Solar Times</Text>
|
|
|
|
|
+ <View className="setting_cell_group">
|
|
|
|
|
+ <View className="setting_cell_group_item">
|
|
|
|
|
+ <Text className="setting_cell_title" style={{ flex: 1 }}>Sunrise</Text>
|
|
|
|
|
+ <FSwitch
|
|
|
|
|
+ color={ColorType.fast}
|
|
|
|
|
+ checked={isLogin ? (isAuthorized ? isSunrise : false) : false}
|
|
|
|
|
+ onChange={(value) => {
|
|
|
if (!isLogin) {
|
|
if (!isLogin) {
|
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
return
|
|
return
|
|
@@ -393,14 +424,8 @@ export default function Page() {
|
|
|
notificationOpen()
|
|
notificationOpen()
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- const value = e.nativeEvent.value
|
|
|
|
|
- if (e.nativeEvent.value) {
|
|
|
|
|
|
|
+ if (value) {
|
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
|
- // setTimeout(() => {
|
|
|
|
|
- // setIsSunrise(false)
|
|
|
|
|
- // }, 1000)
|
|
|
|
|
-
|
|
|
|
|
- // jumpPage('', 'ProductList', navigation)
|
|
|
|
|
setShowMemberAlert(true)
|
|
setShowMemberAlert(true)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
@@ -416,16 +441,19 @@ export default function Page() {
|
|
|
}
|
|
}
|
|
|
}).then(res => {
|
|
}).then(res => {
|
|
|
setIsSunrise(value)
|
|
setIsSunrise(value)
|
|
|
- // setIsSunrise(e.nativeEvent.value)
|
|
|
|
|
|
|
+
|
|
|
global.swiperDayNightRefresh()
|
|
global.swiperDayNightRefresh()
|
|
|
})
|
|
})
|
|
|
- }} />
|
|
|
|
|
- </View>
|
|
|
|
|
- <View className="new_item_cell_line" />
|
|
|
|
|
- <View className="setting_cell_group_item">
|
|
|
|
|
- <Text className="setting_cell_title" style={{ flex: 1 }}>Sunset</Text>
|
|
|
|
|
- <Switch className="myswitch" value={isLogin ? (isAuthorized ? isSunset : false) : false} trackColor={{ true: ColorType.fast }} color={ColorType.fast} onChange={(e) => {
|
|
|
|
|
- // setIsMulti(e.nativeEvent.value)
|
|
|
|
|
|
|
+ }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <View className="new_item_cell_line" />
|
|
|
|
|
+ <View className="setting_cell_group_item">
|
|
|
|
|
+ <Text className="setting_cell_title" style={{ flex: 1 }}>Sunset</Text>
|
|
|
|
|
+ <FSwitch
|
|
|
|
|
+ color={ColorType.fast}
|
|
|
|
|
+ checked={isLogin ? (isAuthorized ? isSunset : false) : false}
|
|
|
|
|
+ onChange={(value) => {
|
|
|
if (!isLogin) {
|
|
if (!isLogin) {
|
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
return
|
|
return
|
|
@@ -434,8 +462,7 @@ export default function Page() {
|
|
|
notificationOpen()
|
|
notificationOpen()
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- const value = e.nativeEvent.value
|
|
|
|
|
- if (e.nativeEvent.value) {
|
|
|
|
|
|
|
+ if (value) {
|
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
|
// setTimeout(() => {
|
|
// setTimeout(() => {
|
|
|
// setIsSunset(false)
|
|
// setIsSunset(false)
|
|
@@ -459,13 +486,16 @@ export default function Page() {
|
|
|
setIsSunset(value)
|
|
setIsSunset(value)
|
|
|
global.swiperDayNightRefresh()
|
|
global.swiperDayNightRefresh()
|
|
|
})
|
|
})
|
|
|
- }} />
|
|
|
|
|
- </View>
|
|
|
|
|
- <View className="new_item_cell_line" />
|
|
|
|
|
- <View className="setting_cell_group_item">
|
|
|
|
|
- <Text className="setting_cell_title" style={{ flex: 1 }}>Solar noon</Text>
|
|
|
|
|
- <Switch className="myswitch" value={isLogin ? (isAuthorized ? isSolarNoon : false) : false} trackColor={{ true: ColorType.fast }} color={ColorType.fast} onChange={(e) => {
|
|
|
|
|
- // setIsMulti(e.nativeEvent.value)
|
|
|
|
|
|
|
+ }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <View className="new_item_cell_line" />
|
|
|
|
|
+ <View className="setting_cell_group_item">
|
|
|
|
|
+ <Text className="setting_cell_title" style={{ flex: 1 }}>Solar noon</Text>
|
|
|
|
|
+ <FSwitch
|
|
|
|
|
+ color={ColorType.fast}
|
|
|
|
|
+ checked={isLogin ? (isAuthorized ? isSolarNoon : false) : false}
|
|
|
|
|
+ onChange={(value) => {
|
|
|
if (!isLogin) {
|
|
if (!isLogin) {
|
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
return
|
|
return
|
|
@@ -474,8 +504,7 @@ export default function Page() {
|
|
|
notificationOpen()
|
|
notificationOpen()
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- const value = e.nativeEvent.value
|
|
|
|
|
- if (e.nativeEvent.value) {
|
|
|
|
|
|
|
+ if (value) {
|
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
if (accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER') {
|
|
|
// setTimeout(() => {
|
|
// setTimeout(() => {
|
|
|
// setIsSolarNoon(false)
|
|
// setIsSolarNoon(false)
|
|
@@ -500,12 +529,12 @@ export default function Page() {
|
|
|
setIsSolarNoon(value)
|
|
setIsSolarNoon(value)
|
|
|
global.swiperDayNightRefresh()
|
|
global.swiperDayNightRefresh()
|
|
|
})
|
|
})
|
|
|
- }} />
|
|
|
|
|
- </View>
|
|
|
|
|
|
|
+ }}
|
|
|
|
|
+ />
|
|
|
</View>
|
|
</View>
|
|
|
- <Text className="setting_footer">Note for polar region, during Polar Day (Midnight Sun) when the Sun is up all day or Polar Night when the Sun is down all day, the only reminder available is the daily Solar Noon.</Text>
|
|
|
|
|
</View>
|
|
</View>
|
|
|
- </ScrollView>
|
|
|
|
|
|
|
+ <Text className="setting_footer">Note for polar region, during Polar Day (Midnight Sun) when the Sun is up all day or Polar Night when the Sun is down all day, the only reminder available is the daily Solar Noon.</Text>
|
|
|
|
|
+ </View>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function checkSystemChannel() {
|
|
function checkSystemChannel() {
|
|
@@ -550,24 +579,27 @@ export default function Page() {
|
|
|
// triggered={triggered}
|
|
// triggered={triggered}
|
|
|
// refresh={refresh}
|
|
// refresh={refresh}
|
|
|
>
|
|
>
|
|
|
- {
|
|
|
|
|
- loaded && pro(true)
|
|
|
|
|
- }
|
|
|
|
|
- {
|
|
|
|
|
- process.env.TARO_ENV == 'rn' && kIsAndroid && checkSystemChannel() && <View className="setting_tip" onClick={goSetting}>
|
|
|
|
|
- <Text className="setting_tip_text">Jump to App's Notifications settings{'>>'}</Text>
|
|
|
|
|
- </View>
|
|
|
|
|
- }
|
|
|
|
|
- {
|
|
|
|
|
- showMemberAlert && process.env.TARO_ENV == 'weapp' && alertPop()
|
|
|
|
|
- }
|
|
|
|
|
- {
|
|
|
|
|
- showMemberAlert && process.env.TARO_ENV == 'rn' && <Modal dismiss={() => { setShowMemberAlert(false) }}>
|
|
|
|
|
- <View style={{ backgroundColor: 'rgba(0,0,0,0.95)', width: '100%', height: '100%', alignItems: 'center', justifyContent: 'center' }}>
|
|
|
|
|
- {alertPop()}
|
|
|
|
|
|
|
+ <View>
|
|
|
|
|
+ {
|
|
|
|
|
+ loaded && pro(true)
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ process.env.TARO_ENV == 'rn' && kIsAndroid && checkSystemChannel() && <View className="setting_tip" onClick={goSetting}>
|
|
|
|
|
+ <Text className="setting_tip_text">Jump to App's Notifications settings{'>>'}</Text>
|
|
|
</View>
|
|
</View>
|
|
|
- </Modal>
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ showMemberAlert && process.env.TARO_ENV == 'weapp' && alertPop()
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ showMemberAlert && process.env.TARO_ENV == 'rn' && <Modal dismiss={() => { setShowMemberAlert(false) }}>
|
|
|
|
|
+ <View style={{ backgroundColor: 'rgba(0,0,0,0.95)', width: '100%', height: '100%', alignItems: 'center', justifyContent: 'center' }}>
|
|
|
|
|
+ {alertPop()}
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ }
|
|
|
|
|
+ </View>
|
|
|
</Layout>
|
|
</Layout>
|
|
|
|
|
+ <Tabbar index={2} />
|
|
|
</View>
|
|
</View>
|
|
|
}
|
|
}
|