package Ġhu . k zs . ny times . inter actor Ċ Ċ import Ġhu . k zs . ny times . data . datasource . Disk DataSource Ċ import Ġhu . k zs . ny times . model . Article Ċ import Ġhu . k zs . ny times . network . Network DataSource Ċ import Ġorg . k oin . dsl . module Ċ Ċ val ĠArticle Interactor Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĠArticle Interactor ( get (), Ġget ()) Ġ} Ċ } Ċ Ċ class ĠArticle Interactor ( ĊĠĠĠ Ġprivate Ġval Ġnetwork DataSource : ĠNetwork DataSource , ĊĠĠĠ Ġprivate Ġval Ġdisk DataSource : ĠDisk DataSource Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Articles (): ĠList < Article >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdisk DataSource . get Articles () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġrefresh Articles () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarticle Ġ= Ġnetwork DataSource . get Articles () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġdisk DataSource . refresh Articles ( article ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Article ById ( article Id : ĠLong ): ĠArticle ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdisk DataSource . get Article ById ( article Id ) ĊĠĠĠ Ġ} Ċ }