package Ġcom . ne u . neo chat . fragment . perfil Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . UserProfile Change Request Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . google . firebase . database . k tx . getValue Ċ import Ġcom . ne u . neo chat . model . Usuario Ċ Ċ class ĠPer fil Presenter Impl ( private Ġval Ġperfil View : ĠPer fil View ) Ġ: ĠPer fil Presenter , ĊĠĠĠ ĠValue EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠcurrentUser Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĊĠĠĠ Ġprivate Ġval Ġme y User Database Ġ= ĠFirebase Database . getInstance (). reference ĊĠĠĠĠĠĠĠ Ġ. child ( Usuario . CHILD ) ĊĠĠĠĠĠĠĠ Ġ. child ( currentUser !!. uid ) ĊĊĠĠĠ Ġprivate Ġvar Ġmy User Database Object : ĠUsuario ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġmy User Database Listen Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġstart Database Listen () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! my User Database Listen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme y User Database . add Value EventListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy User Database Listen Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġalter ar No Database ( name : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġli mp o Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġwhile Ġ( limp o . contains (". ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġli mp o Ġ= Ġli mp o . replace (".", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( limp o . trim (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy User Database Object ?. let Ġ{ Ġuser Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( limp o . trim (). length Ġ< Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . setError (" Nome Ġmu ito Ġpe qu eno ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . phone Ġ= ĠcurrentUser !!. phoneNumber Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠUser Profile Change Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . displayName Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . update Profile ( builder . build ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . uid Ġ= ĠcurrentUser . uid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . email Ġ= ĠcurrentUser . email Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme y User Database . setValue ( user ). add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . fe char Bottom Sheet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . setError (" Nome Ġinv Ã¡l ido ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig EditText ( edit Text Name : ĠText Input EditText ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text Name ?. add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy User Database Object ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . toString () Ġ== Ġit . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . set Alter ar Btn Visibility ( View . IN VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . set Alter ar Btn Visibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Database Listen () Ġ{ ĊĠĠĠĠĠĠĠ Ġme y User Database . removeEventListener ( this ) ĊĠĠĠĠĠĠĠ Ġmy User Database Listen Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// override ĠValue EventListener ĊĊĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmy User Database Object Ġ= Ġsnapshot . getValue < Usuario >() ĊĠĠĠĠĠĠĠ Ġmy User Database Object ?. let Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . car regar F oto Perfil ( Uri . parse ( user . photoUrl )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperfil View . set Nome Usuario ( user . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{} Ċ }