11import Line , { AccessToken , UserProfile } from '@xmartlabs/react-native-line'
22import { useRouter } from 'expo-router'
3- import { useEffect , useState } from 'react'
4- import {
5- ActivityIndicator ,
6- Alert ,
7- Dimensions ,
8- Image ,
9- StyleSheet ,
10- } from 'react-native'
3+ import { Fragment , useEffect , useState } from 'react'
4+ import { Alert , Dimensions , Image , StyleSheet } from 'react-native'
115
126import {
137 removeLocalStorageItem ,
148 setLocalStorageItem ,
159} from '@/common/localStorage'
10+ import { ActivityBanner } from '@/components/ActivityBanner'
1611import { Bullet } from '@/components/Bullet'
1712import { Button } from '@/components/Button'
1813import { ThemedView } from '@/components/ThemedView'
@@ -39,56 +34,60 @@ export default function () {
3934 } , [ ] )
4035
4136 function logOut ( ) {
42- return Line . logout ( ) . then ( ( ) => {
43- removeLocalStorageItem ( 'accessToken' )
44- router . replace ( '/login' )
45- } )
37+ setLoading ( true )
38+ return Line . logout ( )
39+ . then ( ( ) => {
40+ removeLocalStorageItem ( 'accessToken' )
41+ router . replace ( '/login' )
42+ } )
43+ . finally ( ( ) => setLoading ( false ) )
4644 }
4745
4846 function getFriendshipStatus ( ) {
47+ setLoading ( true )
4948 return Line . getFriendshipStatus ( )
5049 . then ( result => Alert . alert ( strings . isFriend , String ( result . friendFlag ) ) )
5150 . catch ( handleError )
51+ . finally ( ( ) => setLoading ( false ) )
5252 }
5353
5454 function refreshAccessToken ( ) {
55+ setLoading ( true )
5556 return Line . refreshAccessToken ( )
5657 . then ( accessToken => {
5758 setLocalStorageItem ( 'accessToken' , accessToken . accessToken )
5859 setToken ( accessToken )
5960 } )
6061 . catch ( handleError )
62+ . finally ( ( ) => setLoading ( false ) )
6163 }
6264
6365 function verifyAccessToken ( ) {
66+ setLoading ( true )
6467 return Line . verifyAccessToken ( )
6568 . then ( result => Alert . alert ( result . clientId , result . expiresIn . toString ( ) ) )
6669 . catch ( handleError )
67- }
68-
69- if ( loading ) {
70- return (
71- < ThemedView style = { styles . container } >
72- < ActivityIndicator size = "large" />
73- </ ThemedView >
74- )
70+ . finally ( ( ) => setLoading ( false ) )
7571 }
7672
7773 return (
78- < ThemedView style = { styles . container } >
79- < ThemedView style = { styles . contentContainer } >
80- < Image source = { { uri : user ?. pictureUrl } } style = { styles . image } />
81- < Bullet header = { strings . name } text = { user ?. displayName } />
82- < Bullet header = { strings . userId } text = { user ?. userId } />
83- < Bullet header = { strings . accessToken } text = { token ?. accessToken } />
84- </ ThemedView >
85- < Button onPress = { getFriendshipStatus } text = { strings . isFriend } />
86- < ThemedView style = { styles . row } >
87- < Button onPress = { verifyAccessToken } text = { strings . verifyToken } />
88- < Button onPress = { refreshAccessToken } text = { strings . refreshToken } />
74+ < Fragment >
75+ < ThemedView style = { styles . container } >
76+ < ThemedView style = { styles . contentContainer } >
77+ < Image source = { { uri : user ?. pictureUrl } } style = { styles . image } />
78+ < Bullet header = { strings . name } text = { user ?. displayName } />
79+ < Bullet header = { strings . userId } text = { user ?. userId } />
80+ < Bullet header = { strings . accessToken } text = { token ?. accessToken } />
81+ </ ThemedView >
82+ < Button onPress = { getFriendshipStatus } text = { strings . isFriend } />
83+ < ThemedView style = { styles . row } >
84+ < Button onPress = { verifyAccessToken } text = { strings . verifyToken } />
85+ < Button onPress = { refreshAccessToken } text = { strings . refreshToken } />
86+ </ ThemedView >
87+ < Button onPress = { logOut } text = { strings . logOut } />
8988 </ ThemedView >
90- < Button onPress = { logOut } text = { strings . logOut } />
91- </ ThemedView >
89+ { loading && < ActivityBanner /> }
90+ </ Fragment >
9291 )
9392}
9493
0 commit comments