package Ġcom . mo eg irl viewer . screen . contribution Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . compose . foundation . lazy . Lazy List State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . google . ac comp an ist . swiper ef resh . Swipe Refresh State Ċ import Ġcom . mo eg irl viewer . api . editing Record . Editing Record Api Ċ import Ġcom . mo eg irl viewer . api . editing Record . bean . User Contribution Bean Ċ import Ġcom . mo eg irl viewer . request . Mo e RequestException Ċ import Ġcom . mo eg irl viewer . util .* Ċ import Ġcom . tencent . smt t . utils . i Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġjava . time . LocalDate Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠCont ribution Screen Model Ġ@ Inject Ġconstructor () Ġ: ĠViewModel () Ġ{ ĊĠ Ġlateinit Ġvar Ġroute Arguments : ĠCont ribution Route Arguments ĊĠ Ġval Ġswipe Refresh State Ġ= ĠSw ipe Refresh State ( true ) ĊĠ Ġval Ġlazy List State Ġ= ĠLazy List State () ĊĠ Ġvar Ġcontribution List Ġby Ġmutable State Of ( emptyList < User Contribution Bean . Query . User contrib >()) ĊĠ Ġvar ĠstartDate Ġby Ġmutable State Of ( LocalDate . now (). minus Days ( 6 )) ĊĠ Ġvar ĠendDate Ġby Ġmutable State Of ( LocalDate . now ()) ĊĠ Ġvar Ġstatus Ġby Ġmutable State Of ( Load Status . INITIAL ) ĊĠ Ġvar Ġcontinue Key : ĠString ? Ġ= Ġnull ĊĊĠ Ġsuspend Ġfun Ġload Contribution List ( refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġif Ġ( Load Status . is Cannot Load ( status ) Ġ&& Ġ! refresh ) Ġreturn ĊĠĠĠ Ġif Ġ( refresh ) Ġcontinue Key Ġ= Ġnull ĊĊĠĠĠ Ġstatus Ġ= Ġif Ġ( refresh ) ĠLoad Status . INIT _ LOADING Ġelse ĠLoad Status . LOADING ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġres Ġ= ĠEdit ing Record Api . getUser Contribution ( ĊĠĠĠĠĠĠĠ ĠuserName Ġ= Ġroute Arguments . userName , ĊĠĠĠĠĠĠĠ Ġstart ISO Ġ= ĠendDate . to Epoch Milli (). to LocalDateTime (). format ( mo eg irl Normal Timestamp Date Formatter ), ĊĠĠĠĠĠĠĠ Ġend ISO Ġ= ĠstartDate . to Epoch Milli (). to LocalDateTime (). format ( mo eg irl Normal Timestamp Date Formatter ), ĊĠĠĠĠĠĠĠ Ġcontinue Key Ġ= Ġcontinue Key ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġval Ġlist Ġ= Ġres . query . user cont ri bs ĊĠĠĠĠĠ Ġval Ġnext Continue Key Ġ= Ġres .` continue ` ?. uc continue ĊĠĠĠĠĠ Ġval Ġn ex Status Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġnext Continue Key Ġ== Ġnull Ġ&& Ġlist . isNotEmpty () Ġ-> ĠLoad Status . ALL _ LOADED ĊĠĠĠĠĠĠĠ Ġlist . isEmpty () Ġ-> ĠLoad Status . ALL _ LOADED ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLoad Status . SUCCESS ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcontribution List Ġ= Ġif Ġ( refresh ) Ġlist Ġelse Ġcontribution List Ġ+ Ġlist ĊĠĠĠĠĠ Ġstatus Ġ= Ġn ex Status ĊĠĠĠĠĠ Ġcontinue Key Ġ= Ġnext Continue Key ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠMo e RequestException ) Ġ{ ĊĠĠĠĠĠ Ġprint Request Err ( e , Ġ" åĬłè½½ çĶ¨æĪ· è´ ¡ çĮ ® åĪĹè¡¨ å¤±è´¥ ") ĊĠĠĠĠĠ Ġstatus Ġ= ĠLoad Status . FAIL ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġshow DatePicker Dialog ( is StartDate : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 6 ) Ġreturn ĊĊĠĠĠ Ġval Ġresult Ġ= ĠGlobals . common DatePicker Dialog . show ( ĊĠĠĠĠĠ Ġinitial Value Ġ= Ġif Ġ( is StartDate ) ĠstartDate Ġelse ĠendDate , ĊĠĠĠĠĠ Ġmin Date Ġ= ĠLocalDate . of ( 2 0 1 0 , Ġ 1 , Ġ 1 ), ĊĠĠĠĠĠ Ġmax Date Ġ= ĠLocalDate . now () ĊĠĠĠ Ġ) Ġ?: Ġreturn ĊĊĠĠĠ Ġif Ġ( is StartDate ) Ġ{ ĊĠĠĠĠĠ ĠstartDate Ġ= Ġresult ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠendDate Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( startDate . is After ( endDate )) Ġ{ ĊĠĠĠĠĠ Ġval ĠendDate Backup Ġ= ĠendDate ĊĠĠĠĠĠ ĠendDate Ġ= ĠstartDate ĊĠĠĠĠĠ ĠstartDate Ġ= ĠendDate Backup ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlazy List State . scrollTo Item ( 0 ) ĊĠĠĠ Ġload Contribution List ( true ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġroute Arguments . remove References From Argument Pool () ĊĠ Ġ} Ċ }