package Ġcom . gh stud ios . android . features . decor ations . list Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġcom . gh stud ios . android . data . DataManager Ċ import Ġcom . gh stud ios . android . data . util . Search Filter Ċ import Ġcom . gh stud ios . android . util . toList Ċ Ċ class ĠDecor ation List ViewModel ( app : ĠApplication ) Ġ: ĠAndroid ViewModel ( app ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdata Manager Ġ= ĠData Manager . get () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLive Data Ġcontaining Ġthe Ġcurrent Ġvalue Ġof Ġthe Ġfilter . ĊĠĠĠĠ Ġ* ĠThe Ġdecoration Ġlist Ġder ives Ġoff Ġthis Ġto Ġload Ġthe Ġquery . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġfilter Source Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġ// Ġdone Ġsynchronous ly Ġas Ġyou Ġcan 't Ġreally Ġmap Ġmultiple Ġtransformations Ġsimultaneously ... ĊĠĠĠ Ġprivate Ġval Ġall Decoration Data Ġ= Ġdata Manager . query Decor ations (). toList Ġ{ Ġit . decoration Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġthe Ġlist Ġof Ġdecor ations , Ġwith Ġa Ġfilter Ġapplied . ĊĠĠĠĠ Ġ* ĠReturns Ġdecor ations Ġwith Ġa Ġname Ġor Ġat Ġleast Ġone Ġskill Ġmatch . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdecoration Data Ġ= ĠTransform ations . map ( filter Source ) Ġ{ Ġsearch Term Ġ-> ĊĠĠĠĠĠĠĠ Ġ// Ġnote : Ġwe Ġfilter Ġin Ġmemory Ġbecause ĊĠĠĠĠĠĠĠ Ġ// ĠA ) Ġmore Ġperformance ĊĠĠĠĠĠĠĠ Ġ// ĠB ) Ġdata Manager . query Decoration Search Ġonly Ġfilters Ġon Ġname ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠSearch Filter ( search Term Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġall Decoration Data . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . matches ( it . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġfilter . matches ( it . skill 1 Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġfilter . matches ( it . skill 2 Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Filter ("") Ġ// Ġsets Ġfilter Ġto Ġblank Ġto Ġtrigger Ġinitial Ġload ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġfilter Ġvalue Ġfor Ġthe Ġdecoration Ġlist Ġview Ġmodel , ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Filter ( filter : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Source . value Ġ= Ġfilter ĊĠĠĠ Ġ} Ċ }