/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 0 ĠSand ip ĠV ag hel a Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . after root . all usive 2 . ui Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . after root . all usive 2 . Build Config Ċ import Ġcom . after root . all usive 2 . Constants . RC _ PERMISSION Ċ import Ġcom . after root . all usive 2 . R Ċ import Ġcom . after root . all usive 2 . Settings Ċ import Ġcom . after root . all usive 2 . database . Database Fields Ċ import Ġcom . after root . all usive 2 . model . User Ċ import Ġcom . after root . all usive 2 . utils . Firebase Utils Ċ import Ġcom . after root . all usive 2 . utils . Permission Checker Ċ import Ġcom . after root . core . extensions . animate Property Ċ import Ġcom . after root . core . extensions . visible Ċ import Ġcom . google . android . gms . ads . Mobile Ads Ċ import Ġcom . google . android . gms . tasks . On Complete Listener Ċ import Ġcom . google . firebase . analytics . Firebase Analytics Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġkotlinx . android . synt hetic . main . activity _ dashboard .* Ċ import Ġorg . jetbrains . ank o . design . in defin ite Snackbar Ċ import Ġorg . jetbrains . ank o . design . sn ackbar Ċ import Ġorg . k oin . android . ext . android . get Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġjava . io . File Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠSettings Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġ_ tag Ġ= Ġthis . java Class . simple Name ĊĠĠĠ Ġprivate Ġval Ġmanifest Permissions Ġ= ĊĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE , ĠManifest . permission . WRITE _ SETTINGS ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ dashboard ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). currentUser Ġ== Ġnull ) Ġ{ Ġ// If Ġnot Ġlogged Ġin , Ġgo Ġto Ġlogin . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSpl ash Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġinitialize () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . is First Installed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" Device _ Name ", ĠBuild . DEVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" Device _ Model ", ĠBuild . MODEL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" Manufacturer ", ĠBuild . MAN U FACT UR ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" Android Version ", ĠBuild . VERSION . RELEASE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" App Version ", ĠBuild Config . VERSION _ CODE . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" Package ", ĠBuild Config . APPLICATION _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Analytics . getInstance ( this @ MainActivity ). log Event (" DeviceInfo 2 ", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . is First Installed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Initialize ĠAd Mob ĠSDK ĊĠĠĠĠĠĠĠ ĠMobile Ads . initialize ( this ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Greater Ġthan ĠL ol lip op ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Permissions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Pointer Folder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Pointer Folder () Ġ// Less Ġthan ĠL ol lip op , Ġdirect Ġload Ġfragments ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Add Ġuser Ġin Ġdb Ġif Ġnot Ġavailable ĊĠĠĠĠĠĠĠ Ġadd UserInfo In DB () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Pointer Folder () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Path Ġ= Ġ"${ Environment . get External Storage Directory ()} ${ getString ( R . string . pointer _ folder _ path )}" ĊĠĠĠĠĠĠĠ Ġval Ġpointers Folder Ġ= ĠFile ( target Path ) ĊĠĠĠĠĠĠĠ Ġval Ġdot No Media Ġ= ĠFile ("${ target Path }/. nome dia ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! pointers Folder . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpointers Folder . mkdir s () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! dot No Media . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdot No Media . createNew File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġload Fragments () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd UserInfo In DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcur User Ġ= ĠFirebase Utils . auth !!. currentUser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ref Ġ= Ġget < Firebase Fire store >(). collection ( Database Fields . COLLECTION _ USERS ). document ( cur User !!. uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase InstanceId . getInstance (). instanceId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( On Complete Listener Ġ{ Ġtoken Task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! token Task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Complete Listener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ref . get (). add On Complete Listener Ġ{ ĠgetUser Task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getUser Task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! getUser Task . result !!. exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . sn ackbar (" User Ġnot Ġavailable . ĠCreating ĠUser .. "). anchor View Ġ= Ġnavigation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser ( cur User . displayName , Ġcur User . email , Ġcur User . uid , Ġtoken Task . result ?. token !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ref . set ( user ). add On Complete Listener Ġ{ ĠsetUser Task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! setUser Task . is Successful ) ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ tag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Can 't Ġcreate Ġfirebase User ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUser Task . exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( getUser Task . result ! ![ Database Fields . FIELD _ F CM _ ID ] Ġ!= Ġtoken Task . result ?. token !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ref . update ( Database Fields . FIELD _ F CM _ ID , Ġtoken Task . result ?. token !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠLog . e (_ tag , Ġ" Unknown ĠError ", ĠgetUser Task . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (_ tag , Ġ" add UserInfo In DB : Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermission Checker Ġ= ĠPermission Checker ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( permission Checker . l acks Permissions ( manifest Permissions )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , Ġmanifest Permissions , ĠRC _ PERMISSION ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Pointer Folder () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC _ PERMISSION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Permission Granted Ġ= Ġgrant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Permission Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . in defin ite Snackbar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . msg _ grant _ app _ permissions ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . text _ action _ grant ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Permissions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. anchor View Ġ= Ġnavigation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Fragments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( navigation . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Property (" translation Y ", Ġ 0 f , Ġnavigation . height . toFloat (), Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! navigation . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Property (" translation Y ", Ġnavigation . height . toFloat (), Ġ 0 f , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Fragments () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhost : ĠNav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( R . id . fragment _ repo _ nav ) Ġas ĠNav Host Fragment ? Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġhost . nav Controller ĊĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! fab _ apply . is Extended ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . extend () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( destination . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Shown ) Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . text _ action _ apply ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . repo Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Shown ) Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . text _ action _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . settings Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . edit Profile Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Shown ) Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . text _ action _ save ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . new Post Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Shown ) Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . text _ action _ upload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . customize Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab _ apply . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Shown ) Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . text _ action _ apply ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( set Of ( R . id . main Fragment , ĠR . id . repo Fragment , ĠR . id . settings Fragment )) ĊĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġnavigation . setup With Nav Controller ( nav Controller ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfind Nav Controller ( R . id . fragment _ repo _ nav ). navigate Up ( app Bar Configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġ} Ċ } Ċ