package Ġcom . ches ire . nek ome . app . search Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . ches ire . nek ome . core . Auth C aster Ċ import Ġcom . ches ire . nek ome . core . extensions . post Error Ċ import Ġcom . ches ire . nek ome . core . extensions . post Loading Ċ import Ġcom . ches ire . nek ome . core . extensions . post Success Ċ import Ġcom . ches ire . nek ome . core . flags . Async State Ċ import Ġcom . ches ire . nek ome . core . flags . Series Type Ċ import Ġcom . ches ire . nek ome . core . models . Series Model Ċ import Ġcom . ches ire . nek ome . server . Resource Ċ import Ġcom . ches ire . nek ome . server . api . Search Api Ċ import Ġcom . had il q . live event . Live Event Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠViewModel Ġto Ġaid Ġwith Ġsearching Ġfor Ġnew Ġseries Ġfor Ġa Ġuser Ġto Ġfollow . Ċ Ġ*/ Ċ class ĠSearch ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsearch Api : ĠSearch Api , ĊĠĠĠ Ġprivate Ġval Ġauth C aster : ĠAuth C aster Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ search Result Ġ= ĠLive Event < Async State < List < Series Model >, ĠSearch Error >>() ĊĠĠĠ Ġval Ġsearch Result : ĠLive Data < Async State < List < Series Model >, ĠSearch Error >> Ġ= Ġ_ search Result ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġa Ġsearch Ġrequest Ġusing Ġthe Ġdata Ġstored Ġin Ġ[ model ], Ġthe Ġresult Ġis Ġposted Ġto ĊĠĠĠĠ Ġ* Ġ[ search Result ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute Search ( model : ĠSearch Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model . title . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ search Result . post Error ( Search Error . Empty Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( model . series Type Ġ== ĠSeries Type . Unknown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ search Result . post Error ( Search Error . No Type Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ search Result . post Loading () ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġwhen Ġ( model . series Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSeries Type . An ime Ġ-> Ġsearch Api . search For An ime ( model . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSeries Type . M anga Ġ-> Ġsearch Api . search For M anga ( model . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġseries Ġtype Ġprovided ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Search Response ( response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Search Response ( response : ĠResource < List < Series Model >>) Ġ= Ġwhen Ġ( response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . data . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ search Result . post Error ( Search Error . No Series Found ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ search Result . post Success ( response . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠResource . Error Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code Ġ== ĠResource . Error . Could Not Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth C aster . issue Refresh ing Token () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ search Result . post Error ( Search Error . Generic Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ