package Ġme . rer ere . rain music Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . compose . animation .* Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Compose View Ċ import Ġandroidx . core . splash screen . Splash Screen . Companion . install Splash Screen Ċ import Ġandroidx . core . view . Window Compat Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . Nav Type Ċ import Ġandroidx . navigation . nav Argument Ċ import Ġco il . Image Loader Ċ import Ġco il . compose . Local Image Loader Ċ import Ġcom . google . ac comp an ist . navigation . animation . Animated Nav Host Ċ import Ġcom . google . ac comp an ist . navigation . animation . comp osable Ċ import Ġcom . google . ac comp an ist . navigation . animation . remember Animated Nav Controller Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . combine Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Completion Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġme . rer ere . rain music . data . model . UserData Ċ import Ġme . rer ere . rain music . repo . User Repo Ċ import Ġme . rer ere . rain music . ui . local . Local Nav Controller Ċ import Ġme . rer ere . rain music . ui . local . Local UserData Ċ import Ġme . rer ere . rain music . ui . screen . Screen Ċ import Ġme . rer ere . rain music . ui . screen . d ail ys ong . Daily Song Screen Ċ import Ġme . rer ere . rain music . ui . screen . index . Index Screen Ċ import Ġme . rer ere . rain music . ui . screen . login . Login Screen Ċ import Ġme . rer ere . rain music . ui . screen . player . Player Screen Ċ import Ġme . rer ere . rain music . ui . screen . playlist . Playlist Screen Ċ import Ġme . rer ere . rain music . ui . screen . search . Search Screen Ċ import Ġme . rer ere . rain music . ui . screen . test . Test Screen Ċ import Ġme . rer ere . rain music . ui . theme . Rain Music Theme Ċ import Ġme . rer ere . rain music . util . Data State Ċ import Ġme . rer ere . rain music . util . default Enter Transition Ċ import Ġme . rer ere . rain music . util . default Pop Exit Transition Ċ import Ġme . rer ere . rain music . util . toast Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠRoute Activity Ġ: ĠComponent Activity () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġuser Repo : ĠUser Repo ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġok HttpClient : ĠOk HttpClient ĊĊĠĠĠ Ġvar Ġpre paring Data Ġ= Ġtrue ĊĠĠĠ Ġvar ĠuserData Ġby Ġmutable State Of ( UserData . VIS ITOR ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEdge Ġto ĠEdge ĊĠĠĠĠĠĠĠ ĠWindow Compat . set Decor Fits System Windows ( window , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĲ¯åĬ¨ éĹ ª å±ı ĊĠĠĠĠĠĠĠ Ġinstall Splash Screen (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĩĨå¤ĩ å®Į æķ°æį® æīį ç»ĵæĿŁ splash Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Keep On Screen Condition Ġ{ Ġpre paring Data Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġsplash Ġscreen æĹ¶ åĬłè½½ çĶ¨æĪ· æķ°æį® ĊĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR ain Music Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Animated Nav Controller () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħ¨å±Ģ æıĲä¾Ľ Nav Controller ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Nav Controller Ġprovides Ġnav Controller , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħ¨å±Ģ æıĲä¾Ľ çĶ¨æĪ· è´¦åı· ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal UserData Ġprovides ĠuserData , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCo il ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Image Loader Ġprovides ĠImage Loader . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ok HttpClient ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnimated Nav Host ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Destination Ġ= Ġ" index ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenter Transition Ġ= Ġdefault Enter Transition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target State . destination . route Ġ== ĠScreen . Player . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Out H orizontally ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Offset X Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- it ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġfade Out ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Enter Transition Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initialState . destination . route Ġ== ĠScreen . Player . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide In H orizontally ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Offset X Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- it ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Exit Transition Ġ= Ġdefault Pop Exit Transition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Login . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Index . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndex Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Search . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ= Ġ"${ Screen . Playlist . route }/{ id }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Argument (" id ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNav Type . Long Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlaylist Screen ( id Ġ= Ġit . arguments !!. getLong (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ= ĠScreen . Player . route , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenter Transition Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide In Vert ically ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Offset Y Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ ĠfadeIn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Exit Transition Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Out Vert ically ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Offset Y Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġfade Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Daily Song . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDaily Song Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæµ ĭ è¯ķ åĲĦç§į API ï¼Į Compose ç»Ħä»¶ çļĦ Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġä¸į åľ¨ release çīĪæľ¬ ä¸Ń æıĲä¾Ľ è¿Ļä¸ª screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp osable (" test ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¦ģ æŃ¢ å¼º åĪ¶ æ·± èī² æ¨¡å¼ı ĊĠĠĠĠĠĠĠ Ġ( window . decor View . findViewById < ViewGroup >( android . R . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getChild At ( 0 ) Ġas ? ĠCompose View )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Force Dark Allowed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ èĩªåĬ¨ çŃ¾ åĪ° ĊĠĠĠĠĠĠĠ Ġuser Repo . daily Sign (). on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠData State . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read S af ely ()?. code ?. take If Ġ{ Ġcode Ġ-> Ġcode Ġ== Ġ 2 0 0 Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" èĩªåĬ¨ çŃ¾ åĪ° æĪĲåĬŁ ï¼ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch In ( lifecycle Scope ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ£Ģ æŁ¥ èº«ä»½ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġcombine ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repo . refresh Login (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repo . get Account Detail () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġto Ġb ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . first Ġis ĠData State . Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" æľª çĻ»å½ķ !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . second Ġis ĠData State . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . second . read () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserData Ġ= ĠUser Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġdata . account !!. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnickname Ġ= Ġdata . profile !!. nickname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Url Ġ= Ġdata . profile . avatar Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. on Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre paring Data Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}. launch In ( lifecycle Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretry Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} Ċ }