package Ġcom . github . jetbrains . rss reader . app Ċ Ċ import Ġcom . github . jetbrains . rss reader . core . entity . Feed Ċ import Ġcom . github . jetbrains . rss reader . core . entity . Post Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . cancel Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . component . get Ċ Ċ @ Experimental Js Export Ċ @ Js Export Ċ class ĠFeed State Js Wrapper ( ĊĠĠĠ Ġval Ġprogress : ĠBoolean , ĊĠĠĠ Ġval Ġfeeds : ĠArray < Feed Js Wrapper >, ĊĠĠĠ Ġval Ġselected Feed : ĠFeed ? Ġ= Ġnull Ċ ) Ċ Ċ @ Experimental Js Export Ċ @ Js Export Ċ class ĠFeed Js Wrapper ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġlink : ĠString , ĊĠĠĠ Ġval Ġdesc : ĠString , ĊĠĠĠ Ġval ĠimageUrl : ĠString ?, ĊĠĠĠ Ġval Ġposts : ĠArray < Post >, ĊĠĠĠ Ġval Ġsource Url : ĠString , ĊĠĠĠ Ġval Ġis Default : ĠBoolean Ċ ) Ċ Ċ fun ĠFeed State . to Js Object () Ġ= ĠFeed State Js Wrapper ( ĊĠĠĠ Ġprogress , ĊĠĠĠ Ġfeeds . map Ġ{ Ġit . to Js Object () Ġ}. to Typed Array (), ĊĠĠĠ Ġselected Feed Ċ ) Ċ Ċ fun ĠFeed . to Js Object () Ġ= ĠFeed Js Wrapper ( ĊĠĠĠ Ġtitle , ĊĠĠĠ Ġlink , ĊĠĠĠ Ġdesc , ĊĠĠĠ ĠimageUrl , ĊĠĠĠ Ġposts . to Typed Array (), ĊĠĠĠ Ġsource Url , ĊĠĠĠ Ġis Default Ċ ) Ċ Ċ @ Experimental Js Export Ċ @ Js Export Ċ object ĠR ss Reader Js ViewModel Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmain Scope Ġ= ĠMain Scope () ĊĠĠĠ Ġprivate Ġvar Ġstore Ġ: ĠFeed Store ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit K oin () ĊĠĠĠĠĠĠĠ Ġstore Ġ= Ġget () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Scope . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġadd Feed ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . dispatch ( Feed Action . Add ( url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġdelete Feed ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . dispatch ( Feed Action . Delete ( url )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġrefresh Feed s ( force Load : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . dispatch ( Feed Action . Refresh ( force Load )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġobserve State ( callback : Ġ( state : ĠFeed State Js Wrapper ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore . observe State (). collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( it . to Js Object ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ