package Ġco . zs mb . rain bow cake . d agger Ċ Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġco . zs mb . rain bow cake . base . Rain bow Cake Bottom Sheet Dialog Fragment Ċ import Ġco . zs mb . rain bow cake . base . Rain bow Cake Dialog Fragment Ċ import Ġco . zs mb . rain bow cake . base . Rain bow Cake Fragment Ċ import Ġco . zs mb . rain bow cake . base . Rain bow Cake ViewModel Ċ import Ġco . zs mb . rain bow cake . base . ViewModel Scope Ċ import Ġco . zs mb . rain bow cake . base . ViewModel Scope . Activity Ċ import Ġco . zs mb . rain bow cake . base . ViewModel Scope . Default Ċ import Ġco . zs mb . rain bow cake . base . ViewModel Scope . Parent Fragment Ċ Ċ /** Ċ Ġ* ĠUses Ġthe ĠViewModel Factory Ġfrom Ġthe Ġ[ Rain bow Cake Component ] Ġinside Ġthe Ġ[ Rain bow Cake Application ] Ġto Ċ Ġ* Ġfetch Ġthe Ġappropriate ĠViewModel Ġinstance Ġfor Ġthe ĠFragment . Ċ Ġ* Ċ Ġ* Ġ@ param Ġscope ĠThe Ġscope Ġthat Ġthe ĠViewModel Ġshould Ġbe Ġfetched Ġfrom Ġand Ġexist Ġin . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSee Ġ[ ViewModel Scope ] Ġfor Ġdetails . Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< F Ġ: ĠR ain bow Cake Fragment < VS , ĠVM >, ĠVS , Ġre ified ĠVM Ġ: ĠR ain bow Cake ViewModel < VS >> ĠF . get ViewModel From Factory ( ĊĠĠĠ Ġscope : ĠViewModel Scope Ġ= ĠDefault Ċ ): ĠVM Ġ{ ĊĠĠĠ Ġreturn Ġget Fragment ViewModel ( scope ) Ċ } Ċ Ċ /** Ċ Ġ* ĠUses Ġthe ĠViewModel Factory Ġfrom Ġthe Ġ[ Rain bow Cake Component ] Ġinside Ġthe Ġ[ Rain bow Cake Application ] Ġto Ċ Ġ* Ġfetch Ġthe Ġappropriate ĠViewModel Ġinstance Ġfor Ġthe ĠFragment . Ċ Ġ* Ċ Ġ* Ġ@ param Ġscope ĠThe Ġscope Ġthat Ġthe ĠViewModel Ġshould Ġbe Ġfetched Ġfrom Ġand Ġexist Ġin . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSee Ġ[ ViewModel Scope ] Ġfor Ġdetails . Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< F Ġ: ĠR ain bow Cake Dialog Fragment < VS , ĠVM >, ĠVS , Ġre ified ĠVM Ġ: ĠR ain bow Cake ViewModel < VS >> ĠF . get ViewModel From Factory ( ĊĠĠĠ Ġscope : ĠViewModel Scope Ġ= ĠDefault Ċ ): ĠVM Ġ{ ĊĠĠĠ Ġreturn Ġget Fragment ViewModel ( scope ) Ċ } Ċ Ċ /** Ċ Ġ* ĠUses Ġthe ĠViewModel Factory Ġfrom Ġthe Ġ[ Rain bow Cake Component ] Ġinside Ġthe Ġ[ Rain bow Cake Application ] Ġto Ċ Ġ* Ġfetch Ġthe Ġappropriate ĠViewModel Ġinstance Ġfor Ġthe ĠFragment . Ċ Ġ* Ċ Ġ* Ġ@ param Ġscope ĠThe Ġscope Ġthat Ġthe ĠViewModel Ġshould Ġbe Ġfetched Ġfrom Ġand Ġexist Ġin . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSee Ġ[ ViewModel Scope ] Ġfor Ġdetails . Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< F Ġ: ĠR ain bow Cake Bottom Sheet Dialog Fragment < VS , ĠVM >, ĠVS , Ġre ified ĠVM Ġ: ĠR ain bow Cake ViewModel < VS >> ĠF . get ViewModel From Factory ( ĊĠĠĠ Ġscope : ĠViewModel Scope Ġ= ĠDefault Ċ ): ĠVM Ġ{ ĊĠĠĠ Ġreturn Ġget Fragment ViewModel ( scope ) Ċ } Ċ Ċ @ Published Api Ċ internal Ġinline Ġfun Ġ< VS , Ġre ified ĠVM Ġ: ĠR ain bow Cake ViewModel < VS >> ĠFragment . get Fragment ViewModel ( ĊĠĠĠ Ġscope : ĠViewModel Scope Ċ ): ĠVM Ġ{ ĊĠĠĠ Ġval ĠviewModel Factory Ġ= Ġ( context ?. application Context Ġas ? ĠR ain bow Cake Application ) ĊĠĠĠĠĠĠĠ Ġ? . injector ĊĠĠĠĠĠĠĠ Ġ? . viewModel Factory () ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" The ĠD agger Ġbased Ġget ViewModel From Factory Ġfunction Ġrequires Ġan ĠApplication Ġthat Ġinherits Ġfrom ĠR ain bow Cake Application ") ĊĊĠĠĠ Ġreturn Ġwhen Ġ( scope ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( this , ĠviewModel Factory ). get ( VM :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠParent Fragment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġscope . key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( require Parent Fragment (), ĠviewModel Factory ). get ( key , ĠVM :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( require Parent Fragment (), ĠviewModel Factory ). get ( VM :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠActivity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġscope . key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( require Activity (), ĠviewModel Factory ). get ( key , ĠVM :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( require Activity (), ĠviewModel Factory ). get ( VM :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ