package Ġcom . work fort . pst ui an . app . ui . teacher profile Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . work . Work Info Ċ import Ġco il . load Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . google . android . material . tabs . Tab Layout Mediator Ċ import Ġcom . work fort . pst ui an . R Ċ import Ġcom . work fort . pst ui an . app . data . local . constant . Const Ċ import Ġcom . work fort . pst ui an . app . data . local . teacher . Teacher Entity Ċ import Ġcom . work fort . pst ui an . app . data . local . teacher . Teacher Profile Ċ import Ġcom . work fort . pst ui an . app . ui . base . activity . Base Activity Ċ import Ġcom . work fort . pst ui an . app . ui . common . adapter . Profile Info Action Ċ import Ġcom . work fort . pst ui an . app . ui . common . adapter . Profile Info Click Event Ċ import Ġcom . work fort . pst ui an . app . ui . common . adapter . Profile Info Item Ċ import Ġcom . work fort . pst ui an . app . ui . common . dev ic elist . Device List Dialog Fragment Ċ import Ġcom . work fort . pst ui an . app . ui . common . fragment . Profile Pager Item Fragment Ċ import Ġcom . work fort . pst ui an . app . ui . common . intent . Auth Intent Ċ import Ġcom . work fort . pst ui an . app . ui . common . view model . Auth ViewModel Ċ import Ġcom . work fort . pst ui an . app . ui . common . view model . File Handler ViewModel Ċ import Ġcom . work fort . pst ui an . app . ui . edit profile . Edit Teacher Profile Activity Ċ import Ġcom . work fort . pst ui an . app . ui . fac ulty . adapter . Pager Adapter Ċ import Ġcom . work fort . pst ui an . app . ui . image preview . Image Preview Activity Ċ import Ġcom . work fort . pst ui an . app . ui . signup . view state . Sign Out State Ċ import Ġcom . work fort . pst ui an . app . ui . student profile . view state . Change Profile Info State Ċ import Ġcom . work fort . pst ui an . app . ui . student profile . view state . Get Profile State Ċ import Ġcom . work fort . pst ui an . app . ui . teacher profile . view model . Teacher Profile ViewModel Ċ import Ġcom . work fort . pst ui an . app . ui . webview . WebView Activity Ċ import Ġcom . work fort . pst ui an . databinding . Activity Teacher Profile Binding Ċ import Ġcom . work fort . pst ui an . util . extension . launch Activity Ċ import Ġcom . work fort . pst ui an . util . helper . Link Util Ċ import Ġcom . work fort . pst ui an . util . helper . Permission Util Ċ import Ġcom . work fort . pst ui an . util . helper . To aster Ċ import Ġcom . work fort . pst ui an . util . view . dialog . Common Dialog Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġjava . io . File Ċ Ċ class ĠTe acher Profile Activity Ġ: ĠBase Activity < Activity Teacher Profile Binding >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġbinding Inflater : Ġ( LayoutInflater ) Ġ-> ĠActivity Teacher Profile Binding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠActivity Teacher Profile Binding :: inflate ĊĊĠĠĠ Ġoverride Ġfun Ġget Toolbar Id (): ĠInt Ġ= ĠR . id . toolbar ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Broadcast () Ġ= ĠConst . Intent Action . NOTIFICATION ĊĠĠĠ Ġoverride Ġfun Ġon Broadcast Received ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Notification Intent ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm ViewModel Ġby ĠviewModel < Teacher Profile ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġm Auth ViewModel Ġ: ĠAuth ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġm File Handler VM Ġ: ĠFile Handler ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprofile : ĠTe acher Profile ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpager Adapter : ĠP ager Adapter ĊĊĠĠĠ Ġprivate Ġval Ġm Link Util Ġby Ġlazy Ġ{ ĠLink Util ( this ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter On Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Home Enabled () ĊĊĠĠĠĠĠĠĠ Ġval Ġteacher Id Ġ= Ġintent . getInt Extra ( Const . Key . TE AC HER _ ID , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġif ( teacher Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm ViewModel . get Profile ( teacher Id ) ĊĊĠĠĠĠĠĠĠ Ġobserve Profile () ĊĠĠĠĠĠĠĠ Ġobserve Profile Image Change () ĊĠĠĠĠĠĠĠ Ġobserve Name Change () ĊĠĠĠĠĠĠĠ Ġobserve Bio Change () ĊĠĠĠĠĠĠĠ Ġobserve Sign Out () ĊĠĠĠĠĠĠĠ Ġobserve Password Change () ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth ViewModel . intent . send ( Auth Intent . Get SignIn User ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġuser Ġprofile Ġis Ġloaded Ġsuccessfully , Ġset Ġui Ġdata ĊĠĠĠĠ Ġ* ĠElse Ġshow Ġblocking Ġerror Ġdialog ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġobserve Profile () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . get Profile State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Profile State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Profile State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader Overlay . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Profile State . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader Overlay . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= Ġit . data Ġas ĠTe acher Profile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Tabs () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGet Profile State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader Overlay . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . loader . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: Ġ" Failed Ġto Ġload Ġdata " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Teacher Profile Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmsg , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Ui Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġteacher Ġ= Ġprofile . teacher ĊĠĠĠĠĠĠĠ Ġset SignIn Ui State ( is Signed In Ġ= Ġprofile . is Signed In ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġteacher . name ĊĠĠĠĠĠĠĠ Ġwith ( binding . header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Call . setOnClickListener Ġ{ Ġprompt Call ( teacher . phone ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Email . setOnClickListener Ġ{ Ġprompt Email ( teacher . email ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Sign Out . setOnClickListener Ġ{ Ġprompt Sign Out () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( binding . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( teacher . imageUrl . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Avatar . setImage Resource ( R . drawable . img _ placeholder _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Avatar . load ( teacher . imageUrl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder ( R . drawable . img _ placeholder _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( R . drawable . img _ placeholder _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Avatar . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Teacher Profile Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Preview Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . Key . URL , Ġteacher . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . Key . EXTRA _ IMAGE _ TRANS ITION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Avatar . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Bio . text Ġ= Ġif ( teacher . bio . isNull OrEmpty ()) ĠgetString ( R . string . hint _ add _ bio ) Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteacher . bio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Bio . visibility Ġ= Ġif ( teacher . bio . isNull OrEmpty ()) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( profile . is Signed In ) Ġtv Bio . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Camera . setOnClickListener Ġ{ Ġchoose Image () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Edit Bio . setOnClickListener Ġ{ Ġprompt Change Bio ( teacher ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġif ( tabs . selected Tab Position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConst . Key . EDIT _ AC ADE MIC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠConst . Key . EDIT _ CONNECT ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgot To Edit Profile ( teacher , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Tabs () Ġ{ ĊĠĠĠĠĠĠĠ Ġpager Adapter Ġ= ĠP ager Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġpager Adapter . addItem ( create A cademic Fragment ()) ĊĠĠĠĠĠĠĠ Ġpager Adapter . addItem ( create Connect Fragment ()) ĊĠĠĠĠĠĠĠ Ġif ( profile . is Signed In ) Ġpager Adapter . addItem ( create Option Fragment ()) ĊĠĠĠĠĠĠĠ Ġbinding . content . view Pager . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠ Ġbinding . content . view Pager . off screen Page Limit Ġ= Ġpager Adapter . item Count ĊĊĠĠĠĠĠĠĠ ĠTab Layout Mediator ( binding . content . tabs , Ġbinding . content . view Pager ) Ġ{ Ġtab , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . string . txt _ academic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠR . string . txt _ connect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠR . string . txt _ option ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . txt _ unknown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. attach () ĊĠĠĠĠĠĠĠ Ġbinding . content . tabs . add On Tab Selected Listener ( object : ĠTab Layout . On Tab Selected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! profile . is Signed In ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . btn Edit . visibility Ġ= Ġif ( tab . position Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( binding . content . btn Edit . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . btn Edit . setText ( when Ġ( tab . position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . string . txt _ edit _ academic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠR . string . txt _ edit _ connect ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . txt _ unknown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! binding . content . btn Edit . is Extended ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . btn Edit . extend () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . btn Edit . shrink () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠTab Layout . Tab ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate A cademic Fragment () Ġ= ĠProfile Pager Item Fragment . instance ( get A cademic InfoList (), ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠProfile Info Click Event () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action ( item : ĠProfile Info Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Edit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( item . action Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . teacher . name Ġ-> Ġ{ Ġprompt Change Name ( profile . teacher ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Connect Fragment () Ġ= ĠProfile Pager Item Fragment . instance ( get Connect InfoList (), ĊĠĠĠĠĠĠĠ Ġobject : ĠProfile Info Click Event () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action ( item : ĠProfile Info Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( item . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Call Ġ-> Ġ{ Ġprompt Call ( item . action Data ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Mail Ġ-> Ġ{ Ġprompt Email ( item . action Data ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Link Ġ-> Ġopen Link ( item . action Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Option Fragment () Ġ= ĠProfile Pager Item Fragment . instance ( getOption List (), ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠProfile Info Click Event () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action ( item : ĠProfile Info Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Password Ġ-> Ġ{ Ġprompt Change Password () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Action . Signed In Devices Ġ-> Ġ{ Ġprompt Signed In Devices () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġget A cademic InfoList (): ĠList < Profile Info Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġteacher Ġ= Ġprofile . teacher ĊĠĠĠĠĠĠĠ Ġval Ġfac ulty Ġ= Ġprofile . fac ulty ĊĠĠĠĠĠĠĠ Ġval Ġname Entity Ġ= ĠProfile Info Item ( getString ( R . string . txt _ name ), Ġteacher . name ) ĊĠĠĠĠĠĠĠ Ġif ( profile . is Signed In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Entity . action Icon Ġ= ĠR . drawable . ic _ pencil _ circular _ outline ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Entity . action Ġ= ĠProfile Info Action . Edit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Entity . action Data Ġ= Ġteacher . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Entity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ designation ), Ġteacher . designation ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ department ), Ġteacher . department ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ fac ulty ), Ġfac ulty . title ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ blood _ group ), Ġteacher . blood ?: Ġ"~ "), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Connect InfoList (): ĠList < Profile Info Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġteacher Ġ= Ġprofile . teacher ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ address ), Ġteacher . address ?: Ġ"~ "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ phone ), Ġteacher . phone ?: Ġ"~ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ call , ĠProfile Info Action . Call , Ġteacher . phone ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ email ), Ġteacher . email ?: Ġ"~ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ email , ĠProfile Info Action . Mail , Ġteacher . email ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ linked _ in ), Ġteacher . linked In ?: Ġ"~ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ web , ĠProfile Info Action . Link , Ġteacher . linked In ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( getString ( R . string . txt _ facebook ), Ġteacher . fb Link ?: Ġ"~ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ web , ĠProfile Info Action . Link , Ġteacher . fb Link ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Option List (): ĠList < Profile Info Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . txt _ password ), ĠgetString ( R . string . txt _ change _ password ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ pencil _ circular _ outline , ĠProfile Info Action . Password , Ġ"~ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . txt _ devices ), ĠgetString ( R . string . txt _ signed _ in _ devices ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ pencil _ circular _ outline , ĠProfile Info Action . Signed In Devices , Ġ"~ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġchoose Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! Permission Util . is Allowed ( this , ĠManifest . permission . READ _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Result Launcher . launch ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpick Intent Ġ= ĠIntent ( Intent . ACTION _ P ICK , ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" image / jpeg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( pick Intent , ĠConst . Request Code . P ICK _ IMAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpermission Result Launcher Ġ= Ġregister For Activity Result ( Activity Result Contracts . Request Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Granted Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( is Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Image () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . show (" Storage Ġpermission Ġis Ġnecessary ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif ( request Code Ġ== ĠConst . Request Code . P ICK _ IMAGE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. data ?. let Ġ{ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpro Pic Change Dialog . let Ġ{ Ġ Ġdialog Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( dialog Ġ!= Ġnull Ġ&& Ġdialog . is Showing ) Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Change Pro Pic Dialog ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġpro Pic Change Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġfun Ġshow Change Pro Pic Dialog ( img Uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpro Pic Change Dialog Ġ= ĠCommon Dialog . change Pro Pic ( this , Ġimg Uri , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Image () ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . img Avatar . load ( img Uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpro Pic Change Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompress Profile Image ( img Uri ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthe Ġcompressed Ġfile Ġshould Ġbe Ġstored Ġin Ġthe Ġcache Ġfolder ĊĠĠĠ Ġprivate Ġfun Ġcompress Profile Image ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ"${ profile . teacher . id }. jpeg " ĊĠĠĠĠĠĠĠ Ġm File Handler VM . compress Image ( this , Ġuri , ĠfileName ). observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . EN QUE U ED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . RUNNING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( cacheDir , ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Profile Image ( fileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this , Ġmessage Ġ= Ġ" Failed Ġto Ġresize Ġthe Ġimage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this , Ġ" Failed Ġto Ġresize Ġthe Ġimage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġfile Ġshould Ġbe Ġexist Ġin Ġthe Ġcache Ġdirectory ĊĠĠĠ Ġprivate Ġfun Ġupload Profile Image ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm File Handler VM . upload Image ( this , ĠConst . Params . User Type . TE AC HER , ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . EN QUE U ED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . RUNNING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġit . progress . getInt ( Const . Key . PROGRESS , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġtrue , Ġis Loader In determinate Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . loader L arger . progress Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . output Data . getString ( Const . Key . URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this , Ġmessage Ġ= Ġ" Failed Ġto Ġupload Ġthe Ġimage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Profile Image ( profile . teacher , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . output Data . getString ( Const . Key . MESSAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġif ( data . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . default _ error _ dialog _ message ) Ġelse Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this , Ġ" Upload ĠFailed ", Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Profile Image Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Profile Image State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Loading Ġ-> Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . success ( this @ Teacher Profile Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: ĠgetString ( R . string . default _ error _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this @ Teacher Profile Activity , Ġmessage Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġchange Name Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġfun Ġprompt Change Name ( teacher : ĠTe acher Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Name Dialog Ġ= ĠCommon Dialog . change Name ( this , Ġteacher . name , Ġ{ ĠnewName Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Name Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Name ( teacher , ĠnewName ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Name Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Name State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Activity Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . teacher . name Ġ= Ġit . data Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġit . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// notify Ġname Ġchange Ġin Ġa cademic Ġtab ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Tabs () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: ĠgetString ( R . string . default _ error _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this @ Teacher Profile Activity , Ġmessage Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġchange Bio Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġfun Ġprompt Change Bio ( teacher : ĠTe acher Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Bio Dialog Ġ= ĠCommon Dialog . change Bio ( this , Ġteacher . bio ?: Ġ"", Ġ{ Ġnew Bio Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Bio Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Bio ( teacher , Ġnew Bio ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Bio Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . change Bio State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Activity Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . teacher . bio Ġ= Ġit . data Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . content . tv Bio . text Ġ= Ġit . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: ĠgetString ( R . string . default _ error _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this @ Teacher Profile Activity , Ġmessage Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Action Ui State ( is Action Running : ĠBoolean , Ġis Loader In determinate : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloader L arger . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Action Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader L arger . isIn determinate Ġ= Ġis Loader In determinate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloader L arger . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Sign Out () Ġ{ ĊĠĠĠĠĠĠĠ ĠCommon Dialog . confirmation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . txt _ sign _ out ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . msg _ sign _ out ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . txt _ sign _ out ), ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Out ( from All Devices : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth ViewModel . intent . send ( Auth Intent . Sign Out ( from All Devices )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Sign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth ViewModel . sign Out State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSign Out State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSign Out State . Loading Ġ-> Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSign Out State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile . is Signed In Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset SignIn Ui State ( is Signed In Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Tabs () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . show ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSign Out State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: ĠgetString ( R . string . default _ error _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this @ Teacher Profile Activity , Ġmessage Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Call ( phoneNumber : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( phoneNumber . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . show ( R . string . txt _ error _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ"${ getString ( R . string . txt _ msg _ call )} Ġ$ phoneNumber " ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . txt _ title _ call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . txt _ call ) Ġ{ Ġ_, _ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Link Util . call To ( phoneNumber ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . txt _ dismiss ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Email ( email : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( email . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . show ( R . string . txt _ error _ email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ"${ getString ( R . string . txt _ msg _ email )} Ġ$ email " ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . txt _ title _ email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . txt _ send ) Ġ{ Ġ_, _ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Link Util . send Email ( email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . txt _ dismiss ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Link ( link : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( link . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTo aster . show (" Invalid ĠLink ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( link . contains (" linkedin . com ") Ġ|| Ġlink . contains (" facebook . com ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Link Util . open Browser ( link ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Activity < WebView Activity >( Pair ( Const . Key . URL , Ġlink )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Change Password () Ġ{ ĊĠĠĠĠĠĠĠ ĠCommon Dialog . change Password ( this , Ġ{ Ġold Password , Ġnew Password Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth ViewModel . intent . send ( Auth Intent . Change Password ( old Password , Ġnew Password )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Password Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth ViewModel . change Password State . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Idle Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Loading Ġ-> Ġset Action Ui State ( is Action Running Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . success ( this @ Teacher Profile Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġit . data Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange Profile Info State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Action Ui State ( is Action Running Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . error ?: ĠgetString ( R . string . default _ error _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Dialog . error ( this @ Teacher Profile Activity , Ġmessage Ġ= Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Signed In Devices () Ġ{ ĊĠĠĠĠĠĠĠ ĠDevice List Dialog Fragment . show ( support FragmentManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset SignIn Ui State ( is Signed In : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsign In Visibility Ġ= Ġif ( is Signed In ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġval Ġsign Out Visibility Ġ= Ġif ( is Signed In ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġwith ( binding . header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Sign Out . visibility Ġ= Ġsign In Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Call . visibility Ġ= Ġsign Out Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Email . visibility Ġ= Ġsign Out Visibility ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( binding . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Camera . visibility Ġ= Ġsign In Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Edit Bio . visibility Ġ= Ġsign In Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Edit . visibility Ġ= Ġsign In Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Signed In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Edit . shrink () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgot To Edit Profile ( teacher : ĠTe acher Entity , Ġaction : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠEdit Teacher Profile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Const . Key . TE AC HER , Ġteacher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Const . Key . EDIT _ ACTION , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity For Result . launch ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠstartActivity For Result Ġ= Ġregister For Activity Result ( ĊĠĠĠĠĠĠĠ ĠActivity Result Contracts . Start Activity For Result () ĊĠĠĠ Ġ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( result . result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ?. data ?. get Parcelable Extra < Teacher Entity >( Const . Key . TE AC HER )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . get Profile ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Activity Result () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Activity Result ( data Changed : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . Key . TE AC HER , Ġprofile . teacher ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . Key . UPDATED , Ġdata Changed ) ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠ Ġ} Ċ } Ċ