package Ġcom . tan asi . m ang aj ap . fragments . reviews Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . tan asi . json api . Json ApiResponse Ċ import Ġcom . tan asi . m ang aj ap . adapters . M anga J ap Adapter Ċ import Ġcom . tan asi . m ang aj ap . databinding . Fragment Reviews Binding Ċ import Ġcom . tan asi . m ang aj ap . models . An ime Ċ import Ġcom . tan asi . m ang aj ap . models . M anga Ċ import Ġcom . tan asi . m ang aj ap . models . Review Ċ import Ġcom . tan asi . m ang aj ap . utils . extensions . set Toolbar Ċ Ċ class ĠRe views Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠRe views Type Ġ{ ĊĠĠĠĠĠĠĠ ĠM anga , ĊĠĠĠĠĠĠĠ ĠAn ime ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Reviews Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Reviews Binding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠRe views Fragment Args Ġby Ġnav Args () ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠRe views ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġvar Ġreviews List : ĠMutable List < Review > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Type : ĠRe views Type ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Id : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Title : ĠString ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Reviews Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmedia Type Ġ= Ġargs . media Type ĊĠĠĠĠĠĠĠ Ġmedia Id Ġ= Ġargs . media Id ĊĠĠĠĠĠĠĠ Ġmedia Title Ġ= Ġargs . media Title ĊĠĠĠĠĠĠĠ Ġwhen Ġ( media Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe views Type . M anga Ġ-> ĠviewModel . getM anga Reviews ( media Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe views Type . An ime Ġ-> ĠviewModel . get An ime Reviews ( media Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Toolbar ( media Title , Ġ"") ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( view Lifecycle Owner ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe views ViewModel . State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isLoading . root . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRe views ViewModel . State . Success Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Reviews ( state . reviews ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . isLoading . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRe views ViewModel . State . Failed Loading Ġ-> Ġwhen Ġ( state . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . ServerError Ġ-> Ġstate . error . body . errors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġit . title , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Network Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJson ApiResponse . Error . Unknown Error Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . error . error . message Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Reviews ( reviews : ĠList < Review >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( media Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe views Type . M anga Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreviews List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Review (). also Ġ{ Ġreview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview . manga Ġ= ĠM anga ( id Ġ= Ġmedia Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview . type Layout Ġ= ĠM anga J ap Adapter . Type . RE VIEW _ HEADER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( reviews ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe views Type . An ime Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreviews List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Review (). also Ġ{ Ġreview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview . anime Ġ= ĠAn ime ( id Ġ= Ġmedia Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview . type Layout Ġ= ĠM anga J ap Adapter . Type . RE VIEW _ HEADER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( reviews ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Reviews . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠM anga J ap Adapter ( reviews List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }