package Ġio . github . mk lk j . film owy . ui . film Ċ Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġio . github . mk lk j . film owy . api . Network State Ċ import Ġio . github . mk lk j . film owy . api . Resource Ċ import Ġio . github . mk lk j . film owy . api . ajax . Fil mV ote Ċ import Ġio . github . mk lk j . film owy . api . pojo . Film Full Info Ċ import Ġio . github . mk lk j . film owy . api . repository . Film Repository Ċ import Ġio . github . mk lk j . film owy . api . repository . Login Repository Ċ import Ġio . github . mk lk j . film owy . base . Base ViewModel Ċ import Ġio . github . mk lk j . film owy . ui . film . Film Fragment Directions . Companion . action Film Fragment To Episode s Fragment Ċ import Ġio . github . mk lk j . film owy . ui . film . Film Fragment Directions . Companion . action Film Fragment To Forum Fragment Ċ import Ġio . github . mk lk j . film owy . ui . film . Film Fragment Directions . Companion . action Film Fragment To Thread Fragment Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠFil m ViewModel Ġ@ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Repository : ĠLogin Repository , ĊĠĠĠ Ġprivate Ġval Ġfilm Repository : ĠFil m Repository Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġfilm Ġ= ĠMutable LiveData < Film Full Info >() ĊĊĠĠĠ Ġval Ġvote Ġ= ĠMutable LiveData < Resource < Fil mV ote >>() ĊĊĠĠĠ Ġfun Ġload Data ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload Film Info ( url . to Uri (). path . or Empty ()) ĊĠĠĠĠĠĠĠ Ġload User Vote ( url . to Uri (). path Segments . last (). split ("- "). last (). to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Film Info ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . add ( film Repository . get Film ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġnetwork State . value Ġ= ĠNetwork State . LOADING Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilm . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork State . value Ġ= ĠNetwork State . LOADED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork State . value Ġ= ĠNetwork State . error ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload User Vote ( film Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . add ( Single . from Callable Ġ{ Ġuser Repository . getUser () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ Ġfilm Repository . get Fil mV ote ( it . userId , Ġfilm Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġvote . value Ġ= ĠResource . loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvote . value Ġ= ĠResource . success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvote . value Ġ= ĠResource . error ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvote . value Ġ= ĠResource . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" loading Ġvote Ġcomplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Episode s () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate ( action Film Fragment To Episode s Fragment ( film . value !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Topic ( topic : ĠFil m Full Info . Forum Topic ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate ( action Film Fragment To Thread Fragment ( topic . url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Forum () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate ( action Film Fragment To Forum Fragment ( film . value ?. forum Url . or Empty ())) ĊĠĠĠ Ġ} Ċ } Ċ