package Ġcom . jon ny hs ia . model . passport Ċ Ċ import Ġandroidx . core . content . edit Ċ import Ġcom . jon ny hs ia . core . ext . otherwise Ċ import Ġcom . jon ny hs ia . core . ext . pref Ċ import Ġcom . jon ny hs ia . core . ext . yes Ċ import Ġcom . jon ny hs ia . model . base . Base Repository Ċ import Ġcom . jon ny hs ia . model . base . Cache Wrapper Ċ import Ġcom . jon ny hs ia . model . base . Rx Http Handler Ċ import Ġcom . jon ny hs ia . model . base . Rx Http Schedulers Ċ import Ġcom . jon ny hs ia . model . user . entity . User Ċ import Ġio . reactivex . Single Ċ Ċ class ĠPass port Repository Ġ: ĠBase Repository (), ĠPass port DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpassport Api Ġ= Ġretrofit . create ( Passport Api :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġuser Cache Ġ= ĠCache Wrapper < User >() ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ( username : ĠString , Ġpassword : ĠString ): ĠSingle < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpassport Api . login ( username , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Http Schedulers . compose Single ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Http Handler . handle Single ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çĻ»å½ķ æĪĲåĬŁ åĲİ ä¿ĿåŃĺ çĻ»å½ķ ä¿¡æģ¯ åĪ° æľ¬åľ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Cache . update ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Passport Preferences ()?. edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" username ", Ġuser . username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" nickname ", Ġuser . nickname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" avatar ", Ġuser . avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" email ", Ġuser . email ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" mobile ", Ġuser . mobile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" token ", Ġuser . token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( username : ĠString , Ġpassword : ĠString , Ġemail : ĠString ): ĠSingle < User > Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogout (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassport Pref Ġ= Ġget Passport Preferences () Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġpassport Pref . edit (). clear (). commit () Ġyes Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Cache . invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Login User (): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Cache . unpack ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġget Passport Preferences ()?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= ĠgetString (" username ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( username . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( username Ġ= ĠgetString (" username ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnickname Ġ= ĠgetString (" nickname ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Ġ= ĠgetString (" avatar ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= ĠgetString (" email ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmobile Ġ= ĠgetString (" mobile ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= ĠgetString (" token ", Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Cache . update ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Login UserId (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Passport Preferences ()?. getString (" username ", Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġincrease Cancel Save Archive Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. pref (" passport ") ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" cancel _ save _ archive _ count " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġget Int ( key , Ġ 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( key , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecrease Cancel Save Archive Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. pref (" passport ") ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" cancel _ save _ archive _ count " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġget Int ( key , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ è®¡ æķ° å·²ç»ı å½Ĵ éĽ¶ , Ġ åĪĻ ä¸į ä½ľ å¤ĦçĲĨ , Ġ åĲ¦åĪĻ èĩª åĩı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( key , Ġcount Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcount Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Cancel Archive Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. pref (" passport ") ?. edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove (" cancel _ save _ archive _ count ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Save Archive Alert ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. pref (" passport ") ?. edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" save _ archive _ alert ", Ġenabled Ġotherwise Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove (" cancel _ save _ archive _ count ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Save Archive Alert Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ?. pref (" passport ") ?. getBoolean (" save _ archive _ alert ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġinstance () Ġ= ĠH older . instance ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠH older Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠPass port Repository Ġ= ĠPass port Repository () ĊĠĠĠ Ġ} Ċ }