package Ġcom . g vet ri . kotlin . vide oli brary . home . android . detail Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . coding p izza . home public . Retrieve Video Url UseCase Ċ import Ġcom . g vet ri . kotlin . vide oli brary . core . repository . Event Ċ import Ġcom . g vet ri . kotlin . vide oli brary . model . error . N asa Error Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠDetail ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġretrieve Video Url UseCase : ĠRetrieve Video Url UseCase , ĊĠĠĠ Ġprivate Ġval Ġdispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . Main Ċ ) Ġ: ĊĠĠĠ ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ video Url LiveData : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġvideo Url LiveData : ĠLive Data < String > Ġ= Ġ_ video Url LiveData ĊĊĠĠĠ Ġprivate Ġval Ġ_ error LiveData : ĠMutable LiveData < Event < N asa Error >> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġerror LiveData : ĠLive Data < Event < N asa Error >> Ġ= Ġ_ error LiveData ĊĊĠĠĠ Ġprivate Ġval Ġno Href ErrorCode Ġ= Ġ 4 0 0 ĊĠĠĠ Ġprivate Ġval Ġno Href ErrorMessage Ġ= Ġ" Href Ġcan 't Ġbe Ġnull " ĊĊĠĠĠ Ġfun Ġretrieve Video Url ( href : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( href Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error LiveData . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( N asa Error ( no Href ErrorCode , Ġno Href ErrorMessage )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġretrieve Video Url UseCase . execute ( href ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . fold (:: on Call Failed , Ġ:: on Call Successful ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Call Successful ( video Url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ video Url LiveData . value Ġ= Ġvideo Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Call Failed ( nasa Error : ĠN asa Error ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ error LiveData . value Ġ= ĠEvent ( nasa Error ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ