package Ġcom . sp un dev . nez umi . ui . input Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . sp un dev . nez umi . R Ċ Ċ class ĠInput ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ errorMessage Resource Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġval ĠerrorMessage Resource : ĠLive Data < Int > Ġ= Ġ_ errorMessage Resource ĊĊĠĠĠ Ġ// ĠIntern ally , Ġwe Ġuse Ġa ĠMutable LiveData Ġto Ġhandle Ġnavigation Ġto Ġthe Ġselected Ġproperty ĊĠĠĠ Ġprivate Ġval Ġ_ navigate To Details Screen Ġ= ĠMutable LiveData < String ?> () ĊĠĠĠ Ġ// ĠThe Ġexternal Ġimmutable ĠLive Data Ġfor Ġthe Ġnavigation Ġproperty ĊĠĠĠ Ġval Ġnavigate To Details Screen : ĠLive Data < String ?> Ġ= Ġ_ navigate To Details Screen ĊĊĠĠĠ Ġfun Ġprocess Url ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex ( pattern Ġ= Ġ"^ .* ( youtu \\. be / | v / | u / \\ w / | embed / | watch \\ ? v = | & v = ) ([^ # & ? ]* ). * ") ĊĠĠĠĠĠĠĠ Ġval Ġmatch Results Ġ= Ġregex . match Ent ire ( url ) ĊĠĠĠĠĠĠĠ Ġ_ errorMessage Resource . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( match Results Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Results . group Values . isNotEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Results . group Values [ 2 ]. isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Details Screen ( match Results . group Values [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĠĠĠ Ġ// ĠClear Ġany Ġprevious Ġerror Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . input _ fragment _ error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġthe Ġproperty Ġis Ġclicked , Ġset Ġthe Ġ[_ navigate To Details Screen ] Ġ[ Mutable LiveData ] ĊĠĠĠĠ Ġ* Ġ@ param Ġvideo Id ĠThe ĠVideo ĠID Ġfrom Ġthe Ġoriginal Ġurl . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdisplay Details Screen ( video Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Details Screen . value Ġ= Ġvideo Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAfter Ġthe Ġnavigation Ġhas Ġtaken Ġplace , Ġmake Ġsure Ġdisplay Property Details Ġis Ġset Ġto Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdisplay Details Screen Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Details Screen . value Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }