package Ġcom . example . repos ui Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . core . domain . DEFAULT _ REPO _ VALUE Ċ import Ġcom . example . navigator . Navigator Ċ import Ġcom . example . paging . data . Paging DataProvider Ċ import Ġcom . example . paging . data . Paging DataSource Handle Ċ import Ġcom . example . paging . state Handle Delegate Ċ import Ġcom . example . repos inter actors . Get Suggestions Data Ċ import Ġcom . example . repos inter actors . Trend ing Repo DataSource Ċ import Ġcom . f unk ym use . aur ora . dispatch ers . Io Dispatcher Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠRepo List ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġlatest Repo DataSource Factory : ĠT rend ing Repo DataSource . Trend ing Repo DataSource Factory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġapplication : ĠApplication ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġsuggestions Ġ: ĠGet Suggestions Data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġprivate Ġval Ġnavigator : ĠNavigator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġpaging DataProvider : ĠP aging DataProvider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġ@ Io Dispatcher Ġprivate Ġval Ġio Dispatcher : ĠCor outine Dispatcher , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsaved State Handle : ĠSaved State Handle , Ċ ) Ġ: ĠViewModel (), ĠP aging DataSource Handle , ĠNavigator Ġby Ġnavigator Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRE PO _ QUERY _ KEY Ġ= Ġ" repo Query " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġrepo Query Ġby Ġstate Handle Delegate < String >( REPO _ QUERY _ KEY ) ĊĊĠĠĠ Ġprivate Ġval Ġlatest Repo DataSource ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlatest Repo DataSource Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Query Ġ?: Ġ"") ĊĊĠĠĠ Ġval Ġpaging Data Ġ= ĊĠĠĠĠĠĠĠ Ġpaging DataProvider . provide Paging Data ( viewModel Scope , Ġio Dispatcher ) Ġ{ Ġlatest Repo DataSource Ġ} ĊĊĠĠĠ Ġval Ġsearch Suggestions Data Ġ= Ġsuggestions . get Suggestions List () ĊĊĠĠĠ Ġfun Ġrefresh ( search Repo : ĠString Ġ= ĠDEFAULT _ REPO _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlatest Repo DataSource . can Load More Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġrepo Query Ġ= Ġsearch Repo ĊĠĠĠ Ġ} Ċ }