package Ġcom . cer den ia . android . plan ito . ui . settings Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . cer den ia . android . plan ito . data . App Preferences Ċ import Ġcom . cer den ia . android . plan ito . data . App Repository Ċ import Ġcom . cer den ia . android . plan ito . data . models . User Calendar Ċ Ċ class ĠSettings ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġrepo : ĠApp Repository Ġ= ĠApp Repository . getInstance () Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġowner Account Live Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġprivate Ġval Ġcal endars Live : ĠLive Data < List < User Calendar >> Ġ= ĠTransform ations ĊĠĠĠĠĠĠĠ Ġ. switch Map ( owner Account Live ) Ġ{ Ġrepo . getUser Cal endars ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ calendar Names Live Ġ= ĠMed iator LiveData < Array < String >>() ĊĠĠĠ Ġval Ġcalendar Names Live : ĠLive Data < Array < String >> Ġget () Ġ= Ġ_ calendar Names Live ĊĊĠĠĠ Ġval Ġcal endars Ġget () Ġ= Ġcal endars Live . value ĊĠĠĠ Ġval Ġuser Calendar ID Ġget () Ġ= ĠApp Preferences . calendar ID ĊĠĠĠ Ġval Ġuser Calendar Owner Ġget () Ġ= ĠApp Preferences . calendar Owner ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ calendar Names Live . add Source ( cal endars Live ) Ġ{ Ġcal endars Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ calendar Names Live . value Ġ= Ġcal endars ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . displayName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch User Cal endars ( account Name : ĠString Ġ= Ġuser Calendar Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġowner Account Live . value Ġ= Ġaccount Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Calendar Selection ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcal endars ?. get ( index )?. let Ġ{ Ġcal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Preferences . setUser Calendar Details ( cal . id , Ġcal . displayName , Ġcal . owner Account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }