-
Notifications
You must be signed in to change notification settings - Fork 0
/
Root.js
63 lines (53 loc) · 1.88 KB
/
Root.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import React, { useState, useEffect, useContext } from 'react'
import { StatusBar } from 'react-native'
import Main from './src/Screen/Main'
import Login from './src/Screen/Login'
import axios from 'axios'
import DeviceInfo from 'react-native-device-info'
import TestContext from './src/Utils/TestContextProvider'
const Root = () => {
const [uniqueId, setUniqueId] = useState()
const {setUserData, setStatusText, isLogin, setIsLogin} = useContext(TestContext)
// 기기 고유 값을 서버에 보내서 DB 와 비교 후 로그인 가능 여부
const autoLogin = async () => {
// 기기 정보를 보냈을 때 정보가 일치하면 그 아이디로 로그인
await axios.post(`http://13.209.70.126/app/fast_login_check_app.php`, {
"userDevice":uniqueId
})
.then((res) => {
if(res.data.flag_mobile){
// 자동 로그인 시
setUserData(res.data)
// 하교 한 이후
res.data.out_time != null
? setStatusText('x')
// 등교인지 하교인지
: res.data.in_time == null
? setStatusText('등교')
: setStatusText('하교')
setIsLogin(true)
}
})
}
// 디바이스 값을 서버에 보내서 디비에 존재하면 그 아이디로 로그인
// 존재하지 않으면 디바이스 값이랑 아이디랑 매칭 후 디비에 저장 후 로그인
useEffect(() => {
setUniqueId(DeviceInfo.getUniqueId())
return () => {}
}, [])
useEffect(() => {
autoLogin()
// return () => {}
}, [uniqueId])
return (
<>
<StatusBar barStyle="dark-content" />
{
isLogin
? <Main uid={uniqueId}/>
: <Login uniqueId={uniqueId}/>
}
</>
)
}
export default Root