package Ġcom . gw . mv vm . wan . viewModel . search Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . gw . mv vm . framework . base . view model . Base ViewModel Ċ import Ġcom . gw . mv vm . framework . ext . view model . launch Ċ import Ġcom . gw . mv vm . framework . ext . view model . request Ċ import Ġcom . gw . mv vm . framework . network . state . Result State Ċ import Ġcom . gw . mv vm . wan . data . database . App Database Ċ import Ġcom . gw . mv vm . wan . data . model . A rit icle Info Ċ import Ġcom . gw . mv vm . wan . data . model . Search History Info Ċ import Ġcom . gw . mv vm . wan . data . model . Search Hot Key Info Ċ import Ġcom . gw . mv vm . wan . data . repository . Search Repository Ċ import Ġcom . gw . mv vm . wan . data . ui . List Ui Data Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* Ġæ Ĳ ľç´¢ çļĦ ViewModel Ċ Ġ* Ġ@ author Ġplay 0 4 5 1 Ċ Ġ*/ Ċ class ĠSearch ViewModel Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpage Index : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġall Results : ĠMutable List < A rit icle Info > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġprivate Ġval Ġrepository : ĠSearch Repository Ġby Ġlazy Ġ{ ĠSearch Repository () Ġ} ĊĊĠĠĠ Ġval Ġhot Keys : ĠMutable LiveData < Result State < ArrayList < Search Hot Key Info >>> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġsearch Hist ories : ĠLive Data < List < Search History Info >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). getAll Hist ories () ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsearch Result : ĠMutable LiveData < List Ui Data < A rit icle Info >> Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĲľç´¢ åħ³éĶ® è¯į ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Hot Keys () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest ({ Ġrepository . get Hot Keys () Ġ}, Ġhot Keys ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸ°å¢ŀ æĲľç´¢ è®°å½ķ ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd History ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinfo : ĠSearch History Info ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). get History ByName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ= ĠSearch History Info ( name Ġ= Ġname , Ġdate Ġ= ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). insert Hist ories ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . date Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). update Hist ories ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® ID åĪłéĻ¤ æĲľç´¢ è®°å½ķ ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĠLong ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete History ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). delete History ById ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¸ ħ ç©º æĲľç´¢ è®°å½ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete All History () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . instance . search History D ato (). delete All Hist ories () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĲľç´¢ ç»ĵæŀľ ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠString ĠĠĠ Ġ åħ³éĶ® è¯į ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget SearchResult ( key : ĠString , Ġis Refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° å°± æĬĬ é¡µ çłģ è®¾ ä¸º 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( is Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Results . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrequest ({ Ġrepository . get SearchResult ( page Index , Ġkey ) Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Results . addAll ( it . datas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result . value Ġ= ĠList Ui Data . parse Page Info ( it , Ġis Refresh , Ġall Results . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result . value Ġ= ĠList Ui Data . parse App Exception ( it , Ġis Refresh ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }