package Ġcom . sm k . pub lik . mak ass ar . mat ap el aj aran . presentation Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . sm k . pub lik . mak ass ar . core . domain . State Ċ import Ġcom . sm k . pub lik . mak ass ar . mat ap el aj aran . domain . M ata P el aj aran Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠDesign ed Ġand Ġdeveloped Ġby ĠJose ph ĠSan j aya , ĠS . T ., ĠM . K om ., ĠAll ĠRights ĠReserved . Ċ Ġ* Ġ@ Github Ġ( https :// github . com / J ose ph San j aya ), Ċ Ġ* Ġ@ Linked In Ġ( https :// www . linkedin . com / in / j ose ph san j aya / )) Ċ Ġ*/ Ċ Ċ class ĠM ata P el aj aran Observer ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠInterfaces , ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠM ata P el aj aran ViewModel , ĊĠĠĠ Ġprivate Ġval Ġowner : ĠLifecycle Owner Ċ ) Ġ: ĠLifecycle Observer Ġ{ ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠ Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġowner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . m Bu at Mat pel . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Idle Ġ-> Ġview . on Bu at M ata P el aj aran Idle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Loading Ġ-> Ġview . on Bu at M ata P el aj aran Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Bu at M ata P el aj aran Success ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Bu at M ata P el aj aran State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Bu at M ata P el aj aran Failed ( it . throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Bu at M ata P el aj aran State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġowner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . m Fetch Mat pel . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Idle Ġ-> Ġview . on Fetch M ata P el aj aran Idle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Loading Ġ-> Ġview . on Fetch M ata P el aj aran Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Fetch M ata P el aj aran Success ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Fetch M ata P el aj aran State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Fetch M ata P el aj aran Failed ( it . throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Fetch M ata P el aj aran State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġowner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . m Upload . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Idle Ġ-> Ġview . on Upload M ater i Idle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Loading Ġ-> Ġview . on Upload M ater i Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Upload M ater i Success ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Upload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Upload M ater i Failed ( it . throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . reset Upload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠInterfaces Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Bu at M ata P el aj aran Idle () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Bu at M ata P el aj aran Loading () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Bu at M ata P el aj aran Failed ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Bu at M ata P el aj aran Success ( key : ĠString ?) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Fetch M ata P el aj aran Idle () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Fetch M ata P el aj aran Loading () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Fetch M ata P el aj aran Failed ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Fetch M ata P el aj aran Success ( data : ĠList < M ata P el aj aran . Detail >) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Upload M ater i Idle () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Upload M ater i Loading () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Upload M ater i Failed ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Upload M ater i Success ( url : ĠUri ) Ġ{} ĊĠĠĠ Ġ} Ċ } Ċ