package Ġcom . mo eg irl viewer . screen . notification Ċ Ċ 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 . R Ċ import Ġcom . mo eg irl viewer . api . notification . Notification Api Ċ import Ġcom . mo eg irl viewer . api . notification . bean . Notification List Bean Ċ import Ġcom . mo eg irl viewer . request . Mo e RequestException Ċ import Ġcom . mo eg irl viewer . store . Account Store Ċ import Ġcom . mo eg irl viewer . util . Globals Ċ import Ġcom . mo eg irl viewer . util . Load Status Ċ import Ġcom . mo eg irl viewer . util . print Request Err Ċ import Ġcom . mo eg irl viewer . util . toast Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ type alias ĠNotification Ġ= ĠNotification List Bean . Query . Notifications . Notification Ċ Ċ @ H ilt ViewModel Ċ class ĠNotification Screen Model Ġ@ Inject Ġconstructor () Ġ: ĠViewModel () Ġ{ ĊĠ Ġvar Ġnotification List Ġby Ġmutable State Of ( emptyList < Notification >()) ĊĠ Ġvar Ġstatus Ġby Ġmutable State Of ( Load Status . INITIAL ) ĊĠ Ġvar Ġcontinue Key : ĠString ? Ġ= Ġnull ĊĠ Ġval Ġswipe Refresh State Ġ= ĠSw ipe Refresh State ( true ) ĊĠ Ġval Ġlazy List State Ġ= ĠLazy List State () ĊĊĠ Ġsuspend Ġfun Ġload List ( refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġif Ġ( Load Status . is Cannot Load ( status ) Ġ&& Ġ! refresh ) Ġreturn ĊĠĠĠ Ġstatus Ġ= Ġif Ġ( refresh ) ĠLoad Status . INIT _ LOADING Ġelse ĠLoad Status . LOADING ĊĠĠĠ Ġif Ġ( refresh ) Ġcontinue Key Ġ= Ġnull ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġres Ġ= ĠNotification Api . getList ( continue Key ) ĊĠĠĠĠĠ Ġval Ġnotification Data Ġ= Ġres . query . notifications ĊĠĠĠĠĠ Ġval Ġnext Status Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Data .` continue ` Ġ== Ġnull Ġ&& Ġnotification Data . list . isNotEmpty () Ġ-> ĠLoad Status . ALL _ LOADED ĊĠĠĠĠĠĠĠ Ġnotification Data . list . isEmpty () Ġ-> ĠLoad Status . EMPTY ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLoad Status . SUCCESS ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġnotification List Ġ= Ġif Ġ( refresh ) Ġnotification Data . list . reversed () Ġelse Ġnotification List Ġ+ Ġnotification Data . list . reversed () ĊĠĠĠĠĠ Ġstatus Ġ= Ġnext Status ĊĠĠĠĠĠ Ġcontinue Key Ġ= Ġnotification Data .` continue ` ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠMo e RequestException ) Ġ{ ĊĠĠĠĠĠ Ġprint Request Err ( e , Ġ" åĬłè½½ éĢļçŁ¥ åĪĹè¡¨ å¤±è´¥ ") ĊĠĠĠĠĠ Ġstatus Ġ= ĠLoad Status . FAIL ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġmark All As Read () Ġ{ ĊĠĠĠ ĠGlobals . common Loading Dialog . show Text ( Globals . context . getString ( R . string . submit ting )) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠAccount Store . mark All Notification As Read () ĊĠĠĠĠĠ Ġnotification List Ġ= Ġnotification List . map Ġ{ Ġit . copy ( read Ġ= Ġ" 1 ") Ġ} ĊĠĠĠĠĠ Ġtoast ( Globals . context . getString ( R . string . mark All As Re aded )) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠMo e RequestException ) Ġ{ ĊĠĠĠĠĠ Ġprint Request Err ( e , Ġ" æłĩè®° åħ¨éĥ¨ éĢļçŁ¥ ä¸º å·² è¯» å¤±è´¥ ") ĊĠĠĠĠĠ Ġtoast ( e . message ) ĊĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠ ĠGlobals . common Loading Dialog . hide () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠ Ġsuper . on Cle ared () ĊĠ Ġ} Ċ }