@@ -4,13 +4,19 @@ import firebase from 'react-native-firebase'
44import { getFileName } from '../utils/utils'
55
66class User {
7+ constructor ( ) {
8+ this . database = firebase . database ( )
9+ }
10+
711 @observable
812 key = ''
913 @observable
1014 name = ''
1115 @observable
1216 avatarSource = ''
1317 @observable
18+ avatarRef = ''
19+ @observable
1420 fileName = ''
1521
1622 phoneNumber = ''
@@ -42,76 +48,89 @@ class User {
4248 }
4349
4450 @action
45- async checkForExisting ( callback ) {
51+ async getCurrentUser ( ) {
4652 let key = undefined
47- const database = firebase . database ( )
48- const user = {
49- phoneNumber : '' ,
50- name : '' ,
51- avatar : '' ,
52- avatarRef : ''
53- }
54- user . phoneNumber = this . phoneNumber
55- user . name = this . name
56- let snapshot
57-
58- if ( ! this . key ) {
59- snapshot = await database
53+ if ( this . key ) {
54+ key = this . key
55+ } else {
56+ const snapshot = await firebase
57+ . database ( )
6058 . ref ( 'PhoneNumber' )
6159 . once ( 'value' , this . phoneNumber )
6260 if ( snapshot . val ( ) != null ) {
6361 key = snapshot . val ( ) [ this . phoneNumber ]
6462 if ( key === undefined ) return
6563 }
66- } else {
67- key = this . key
6864 }
69- const userSnapshot = await database
65+ const userSnapshot = await this . database
7066 . ref ( 'Users' )
7167 . child ( key )
7268 . once ( 'value' )
7369 const _user = userSnapshot . val ( )
74- callback ( _user )
70+ if ( _user ) {
71+ this . name = _user . name
72+ this . avatarSource = _user . avatarSource
73+ this . avatarRef = _user . avatarRef
74+ this . phoneNumber = _user . phoneNumber
75+ this . key = key
76+ }
77+ }
78+
79+ @action
80+ async save ( ) {
81+ const imgData = await this . imageUpload ( )
82+ const user = {
83+ name : this . name ,
84+ phoneNumber : this . phoneNumber ,
85+ avatarSource : imgData . avatarSource ,
86+ avatarRef : imgData . avatarRef
87+ }
88+
89+ const key = await this . database . ref ( 'Users' ) . push ( user ) . key
90+ await this . database
91+ . ref ( 'PhoneNumber' )
92+ . child ( this . phoneNumber )
93+ . set ( key )
94+ return key
7595 }
7696
7797 @action
78- async signUpUser ( isUpdateName , isUpdateImage ) {
79- try {
80- this . checkForExisting ( _user => {
81- if ( isUpdateImage ) {
82- await firebase
83- . storage ( )
84- . ref ( _user . avatarRef )
85- . delete ( )
86- const rImage = await firebase
87- . storage ( )
88- . ref ( '/profilePics/' + getFileName ( this . fileName ) )
89- . putFile ( imageUri )
90- user . avatar = rImage . downloadURL
91- user . avatarRef = rImage . ref
92- }
93- } )
98+ async update ( ) {
99+ const imgData = await this . imageUpload ( )
100+ const user = {
101+ name : this . name ,
102+ phoneNumber : this . phoneNumber ,
103+ avatarSource : imgData . avatarSource ,
104+ avatarRef : imgData . avatarRef
105+ }
106+ await this . database
107+ . ref ( 'Users' )
108+ . child ( this . key )
109+ . set ( user )
110+ }
94111
95- if ( key !== undefined ) {
96- await database
97- . ref ( 'Users' )
98- . child ( key )
99- . set ( user )
100- } else {
101- key = await database . ref ( 'Users' ) . push ( user ) . key
112+ async imageUpload ( ) {
113+ let data = {
114+ avatarSource : this . avatarSource ,
115+ avatarRef : this . avatarRef
116+ }
117+ if ( this . fileName !== '' ) {
118+ if ( this . avatarRef !== '' ) {
102119 await firebase
103- . database ( )
104- . ref ( 'PhoneNumber' )
105- . child ( this . phoneNumber )
106- . set ( key )
120+ . storage ( )
121+ . ref ( this . avatarRef )
122+ . delete ( )
123+ }
124+ const rImage = await firebase
125+ . storage ( )
126+ . ref ( '/profilePics/' + getFileName ( this . fileName ) )
127+ . putFile ( this . avatarSource )
128+ data = {
129+ avatarSource : rImage . downloadURL ,
130+ avatarRef : rImage . ref
107131 }
108-
109- // dispatch({ type: SIGNUP_SUCCESS, key })
110- return Promise . resolve ( key )
111- } catch ( error ) {
112- // dispatch({ type: ERROR, message: error })
113- return Promise . reject ( )
114132 }
133+ return data
115134 }
116135}
117136
0 commit comments