package Ġcom . words . storage app . ui . detail Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Rating Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view pager 2 . adapter . Fragment State Adapter Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database .* Ċ import Ġcom . google . firebase . database . k tx . database Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . words . storage app . Comment Fragment Ċ import Ġcom . words . storage app . R Ċ import Ġcom . words . storage app . database . App Database Ċ import Ġcom . words . storage app . database . model . Recent Skill Model Ċ import Ġcom . words . storage app . databinding . Fragment Detail 2 Binding Ċ import Ġcom . words . storage app . domain .* Ċ import Ġcom . words . storage app . ui . main . MainActivity Ċ import Ġcom . words . storage app . ui . search . Search Repository Ċ import Ġcom . words . storage app . util . Injector Util Ċ import Ġcom . words . storage app . util . USER ID Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSk illed Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġskill Id : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġarguments ?. get ( USER ID ) Ġas ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġsearch Repository : ĠSearch Repository ĊĊĠĠĠ Ġprivate Ġval Ġdetail ViewModel : ĠDetail ViewModel Ġby Ġview Models Ġ{ ĊĠĠĠĠĠĠĠ ĠInject or Util . provide Detail ViewModel Factory ( skill Id , Ġsearch Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmobile No : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrecent Skill Model : ĠRecent Skill Model ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfirebase Auth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase Reference : ĠDatabase Reference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomment Collection Ref : ĠDatabase Reference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontract Db Path : ĠDatabase Reference ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomments ViewPager : ĠView Pager 2 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfire Store : ĠFirebase Fire store ĊĠĠĠ Ġlateinit Ġvar Ġlocal Db : ĠApp Database ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġh ire Btn : ĠMaterial Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcall Btn : ĠMaterial Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrating Num : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrating Bar : ĠRating Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomments Card : ĠMaterial Card View ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Pager Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġfire Store Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠ Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġdatabase Reference Ġ= ĠFirebase . database . reference ĊĠĠĠĠĠĠĠ Ġcomment Collection Ref Ġ= Ġdatabase Reference . child (" skills ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. child ( skill Id . trim Indent ()). child (" comments ") ĊĠĠĠĠĠĠĠ Ġcontract Db Path Ġ= ĠFirebase . database . reference . child (" contracts ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). d agger App Level Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Detail 2 Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . detail Model Ġ= Ġdetail ViewModel ĊĠĠĠĠĠĠĠ Ġcomments Card Ġ= Ġbinding . comment Card ĊĊĠĠĠĠĠĠĠ Ġcall Btn Ġ= Ġbinding . call Btn ĊĠĠĠĠĠĠĠ Ġh ire Btn Ġ= Ġbinding . h ire Btn ĊĠĠĠĠĠĠĠ Ġcomments ViewPager Ġ= Ġbinding . comment Pager ĊĠĠĠĠĠĠĠ Ġrating Num Ġ= Ġbinding . rating Num ĊĠĠĠĠĠĠĠ Ġrating Bar Ġ= Ġbinding . rating Star ĊĠĠĠĠĠĠĠ Ġlocal Db Ġ= Ġ( activity Ġas ĠMainActivity ). db Ġ// local ĊĊĠĠĠĠĠĠĠ Ġbinding . back Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdetail ViewModel . skill Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġskill Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomments Ġ= Ġskill . comments . to Domain Comment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Comment Card () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn ackBar Ġ{ Ġ" No ĠComments " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" result : Ġ$ comments ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Adapter Ġ= ĠComment Pager ( this , Ġcomments . distinct By Ġ{ Ġit . author Id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomments ViewPager . adapter Ġ= Ġcomment Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandle Ġ= ĠHandler () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Pager Ġ== Ġcomments . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Pager Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments ViewPager . setCurrent Item ( current Pager ++, Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . post ( update ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 0 , Ġ 5 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdetail ViewModel . detail Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġdetail Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( detail Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmobile No Ġ= Ġdetail Data . mobile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Skill Model Ġ= Ġdetail Data . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecent Skill Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Url Ġ= ĠimageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= ĠfirstName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= ĠlastName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskill Ġ= Ġskill ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcall Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmobile No ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Dialog ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// detail ViewModel . insert In Recent Table ( recent Skill Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġh ire Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfirebase Auth . currentUser ?. uid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ire Dialog ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot Registered () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcomment Collection Ref . addListener For Single Value Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshot . children . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getValue ( Firebase Comment :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġcomment List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" labor ers : Ġ$ comment List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Db . comment Dao (). insert All ( comment List . to Comments Db ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ire L abor er ( uid : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdetail ViewModel . detail Data . observe ( view Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ Ġdetail Data Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ref Ġ= Ġcontract Db Path . push () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontract Ġ= ĠFirebase Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Name Ġ= Ġdetail Data . account Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Number Ġ= Ġdetail Data . account Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclientId Ġ= Ġuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Id Ġ= Ġdocument Ref . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabor er Id Ġ= Ġskill Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabor er Url Ġ= Ġdetail Data . imageUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskill Ġ= Ġdetail Data . skill , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabor er F Name Ġ= Ġdetail Data . firstName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabor er L Name Ġ= Ġdetail Data . lastName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Ref . setValue ( contract ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠR . id . action _ sk illed Fragment 2 _ to _ client Profile Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// unable Ġto Ġh ire ĠLabor er ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġinternet ĠAccess ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdial PhoneNumber ( phoneNumber : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ DI AL ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse (" tel :$ phoneNumber ") Ġ// or Ġuse ĠUri . from Parts () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . resolve Activity ( require Activity (). package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove To Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠR . id . action _ sk illed Fragment 2 _ to _ login Fragment ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Sn ackBar ( call : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). findViewById < Constraint Layout >( R . id . detal Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġcall . invoke (), ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ire Dialog ( user : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" You 're ĠAbout Ġto ĠH ire ĠLabor er .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Ok ay ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ire L abor er ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button (" Cancel ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnot Registered () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" Login Ġto ĠH ire L abor er .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Message (" You Ġcan Ġonly Ġh ire Ġlabor er Ġwhen Ġyou Ġare Ġlogged Ġin .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Login ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To Login () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button (" Cancel ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Comment Card () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomments Card . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcall Dialog ( number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" Call ĠSk illed ĠLabor er .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Message (" Your Ġare Ġabout Ġto Ġleave Ġthe Ġapp Ġto Ġcall Ġlabor er .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Yes ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdial PhoneNumber ( number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button (" Cancel ") Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠComment Pager ( ĊĠĠĠĠĠĠĠ Ġval Ġfragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcomments : ĠList < Asset Comment > ĊĠĠĠ Ġ) Ġ: ĠFragment State Adapter ( fragment ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġcomments . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Fragment ( position : ĠInt ): ĠFragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComment Fragment . newInstance ( comments [ position ]) ĊĊĠĠĠ Ġ} Ċ }