/* ĊĠĠ ĠCopyright Ġ 2 0 2 0 ĠV asy a ĠD rob ush kov ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . ĊĊ Ġ*/ Ċ Ċ package Ġcom . k ross ov och kin . comment list . presentation Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġandroidx . paging . Paging Data Ċ import Ġcom . k ross ov och kin . comment list . domain . Get Comment List Interactor Ċ import Ġcom . k ross ov och kin . core . presentation . list . ListItem Ċ import Ġcom . k ross ov och kin . core . presentation . paging . Pag inated List ViewModel Delegate Ċ import Ġcom . k ross ov och kin . core . presentation . resources . Native Color Ċ import Ġcom . k ross ov och kin . core . presentation . resources . Native Text Ċ import Ġcom . k ross ov och kin . core . presentation . ui . toolbar . Toolbar ViewState Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . receive As Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . th reet en . bp . Zone Id Ċ import Ġorg . th reet en . bp . format . DateTime Formatter Ċ import Ġorg . th reet en . bp . format . Format Style Ċ Ċ abstract Ġclass ĠComment List ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġerror : ĠFlow < Exception > ĊĊĠĠĠ Ġabstract Ġval Ġnavigation : ĠFlow < Comment List Nav Event > ĊĊĠĠĠ Ġabstract Ġval Ġentity Items : ĠFlow < Paging Data < ListItem >> ĊĊĠĠĠ Ġabstract Ġval Ġtoolbar ViewState : ĠToolbar ViewState ĊĊĠĠĠ Ġabstract Ġfun Ġon Back Pressed () ĊĊĠĠĠ Ġabstract Ġfun ĠonError ( error : ĠException ) Ċ } Ċ Ċ internal Ġclass ĠComment List ViewModel Impl ( ĊĠĠĠ Ġget Comment List Interactor : ĠGet Comment List Interactor , ĊĠĠĠ Ġprivate Ġval Ġcomment List Args : ĠComment List Fragment . Args Ċ ) Ġ: ĠComment List ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpag inated List Delegate Ġ= ĠPag inated List ViewModel Delegate ( ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġload Page Ġ= Ġ{ Ġoffset : ĠInt , ĠpageSize : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Comment List Interactor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment List Args . entity Type Schema , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment List Args . parent Entity Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpageSize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmapper Ġ= Ġ{ Ġcomment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComment ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Name Ġ= Ġcomment . author Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Date Ġ= Ġcomment . create Date . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Formatter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Localized DateTime ( Format Style . MEDIUM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Zone ( Zone Id . system Default ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcomment . text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Data Ġ= Ġcomment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġerror Channel Ġ= ĠChannel < Exception >( Channel . BUFFER ED ) ĊĠĠĠ Ġoverride Ġval Ġerror : ĠFlow < Exception > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġerror Channel . receive As Flow () ĊĠĠĠ Ġprivate Ġval Ġnavigation Channel Ġ= ĠChannel < Comment List Nav Event >( Channel . BUFFER ED ) ĊĠĠĠ Ġoverride Ġval Ġnavigation : ĠFlow < Comment List Nav Event > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnavigation Channel . receive As Flow () ĊĊĠĠĠ Ġoverride Ġval Ġentity Items : ĠFlow < Paging Data < ListItem >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpag inated List Delegate . items ĊĊĠĠĠ Ġoverride Ġval Ġtoolbar ViewState : ĠToolbar ViewState ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠToolbar ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠNative Text . Simple ( comment List Args . parent Entity Data . field Schema . displayName ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbg Color Ġ= ĠNative Color . Hex ( comment List Args . entity Type Schema . meta . ui Color Hex ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Back Button Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Channel . send ( Comment List Nav Event . Back Event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Comment List ViewModel Impl . error Channel . send ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ