/** Ċ Ġ* Ġ ĠDesign ed Ġand Ġdeveloped Ġby ĠProject X Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ package Ġcom . x plorer . project x . ui . city Ċ Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . x plorer . project x . extent ions . Failure Ċ import Ġcom . x plorer . project x . extent ions . Result Ċ import Ġcom . x plorer . project x . extent ions . Success Ċ import Ġcom . x plorer . project x . model . unsplash . Photo Ċ import Ġcom . x plorer . project x . model . wikipedia . Wiki City Info Ċ import Ġcom . x plorer . project x . repository . google _ pictures . Google P ictures Repo Ċ import Ġcom . x plorer . project x . repository . wikipedia . W ikipedia Repo Ċ Ċ class ĠCity Search ViewModel Ġ@ ViewModel Inject Ċ constructor ( ĊĠ Ġprivate Ġval Ġgoogle P ictures Repo : ĠGoogle P ictures Repo , ĊĠ Ġprivate Ġval Ġw ikipedia Repository : ĠW ikipedia Repo Ċ ) Ġ: ĠViewModel () Ġ{ ĊĠ Ġ// ĠPh otos ĊĠ Ġprivate Ġval Ġ_ success Photo LiveData Ġ= ĠMutable LiveData < List < Photo >>() ĊĠ Ġval Ġsuccess Photo LiveData : ĠLive Data < List < Photo >> ĊĠĠĠ Ġget () Ġ= Ġ_ success Photo LiveData ĊĠ Ġprivate Ġval Ġ_ error Photo LiveData Ġ= ĠMutable LiveData < String >() ĊĠ Ġval Ġerror Photo LiveData : ĠLive Data < String > ĊĠĠĠ Ġget () Ġ= Ġ_ error Photo LiveData ĊĊĠ Ġprivate Ġfun Ġprocess Success ( photos : ĠList < Photo >) Ġ{ ĊĠĠĠ Ġ_ success Photo LiveData . value Ġ= Ġphotos ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġprocess Error ( error : ĠThrowable ) Ġ{ ĊĠĠĠ Ġ_ error Photo LiveData . value Ġ= Ġerror . localized Message ĊĠ Ġ} ĊĊĠ Ġ// Ġgoogle ĠPh otos ĊĠ Ġfun Ġget Google Photos ( place _ id : ĠString ) Ġ{ ĊĠĠĠ Ġgoogle P ictures Repo . get Google P ictures Data ( place _ id ) Ġ{ Ġresult : ĠResult < List < Photo >> Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġprocess Success ( result . data ) ĊĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġprocess Error ( result . error ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠLocation Ġconfirmation Ġfrom ĠW ikipedia ĊĊĠ Ġprivate Ġval Ġ_ coord Confirmation LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĠ Ġval Ġcoord Confirmation LiveData : ĠLive Data < Boolean > ĊĠĠĠ Ġget () Ġ= Ġ_ coord Confirmation LiveData ĊĊĠ Ġprivate Ġval Ġ_ error Coord Confirmation LiveData Ġ= ĠMutable LiveData < String >() ĊĠ Ġval Ġerror Coord Confirmation LiveData : ĠLive Data < String > ĊĠĠĠ Ġget () Ġ= Ġ_ error Coord Confirmation LiveData ĊĊĠ Ġfun Ġconfirm Coordinates For City ( city Name : ĠString , Ġcity Coordinates : ĠString ) Ġ{ ĊĠĠĠ Ġw ikipedia Repository . confirm City Coordinates ( city Name , Ġcity Coordinates ) Ġ{ Ġconfirmed Result Ġ-> ĊĊĠĠĠĠĠ Ġwhen Ġ( confirmed Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ_ coord Confirmation LiveData . value Ġ= Ġconfirmed Result . data ĊĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ_ error Coord Confirmation LiveData . value Ġ= Ġconfirmed Result . error . localized Message ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġ_ alt Coord Confirmation LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĠ Ġval Ġalt Coord Confirmation LiveData : ĠLive Data < Boolean > ĊĠĠĠ Ġget () Ġ= Ġ_ alt Coord Confirmation LiveData ĊĊĠ Ġfun Ġalt Confirm Coordinates For City ( query City Name : ĠString , Ġcity Coordinates : ĠString ) Ġ{ ĊĠĠĠ Ġw ikipedia Repository . get Alternate Confirmation ( ĊĠĠĠĠĠ Ġquery City Name , ĊĠĠĠĠĠ Ġcity Coordinates ĊĠĠĠ Ġ) Ġ{ Ġconfirmed Result Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( confirmed Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ_ alt Coord Confirmation LiveData . value Ġ= Ġconfirmed Result . data ĊĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ_ error Coord Confirmation LiveData . value Ġ= Ġconfirmed Result . error . localized Message ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġ_ city Info LiveData Ġ= ĠMutable LiveData < Wiki City Info >() ĊĠ Ġval Ġcity Info LiveData : ĠLive Data < Wiki City Info > ĊĠĠĠ Ġget () Ġ= Ġ_ city Info LiveData ĊĊĠ Ġprivate Ġval Ġ_ error City Info LiveData Ġ= ĠMutable LiveData < String >() ĊĠ Ġval Ġerror City Info LiveData : ĠLive Data < String > ĊĠĠĠ Ġget () Ġ= Ġ_ error City Info LiveData ĊĊĠ Ġfun Ġset City Information Data ( city Name : ĠString ) Ġ{ ĊĠĠĠ Ġw ikipedia Repository . get City Information ( city Name ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ_ city Info LiveData . value Ġ= Ġresult . data ĊĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ_ error City Info LiveData . value Ġ= Ġresult . error . localized Message ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġ_ related Titles LiveData Ġ= ĠMutable LiveData < List < String >>() ĊĠ Ġval Ġsuccess Related Titles LiveData : ĠLive Data < List < String >> ĊĠĠĠ Ġget () Ġ= Ġ_ related Titles LiveData ĊĊĠ Ġprivate Ġval Ġ_ error Related Titles LiveData Ġ= ĠMutable LiveData < String >() ĊĠ Ġval Ġerror Related Titles LiveData : ĠLive Data < String > ĊĠĠĠ Ġget () Ġ= Ġ_ error Coord Confirmation LiveData ĊĊĠ Ġfun Ġget Re levant Post Titles For City ( city Coordinates : ĠString ) Ġ{ ĊĠĠĠ Ġw ikipedia Repository . get Re levant Posts ( city Coordinates ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ_ related Titles LiveData . value Ġ= Ġresult . data ĊĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġ_ error Related Titles LiveData . value Ġ= Ġresult . error . localized Message ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ