/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠOn a ĠSystems , ĠInc Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . smart register . fhir core . engine . ui . user profile Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjava . util . Locale Ċ import Ġjavax . inject . Inject Ċ import Ġorg . smart register . fhir core . engine . auth . Account Authenticator Ċ import Ġorg . smart register . fhir core . engine . configuration . AppConfig Classification Ċ import Ġorg . smart register . fhir core . engine . configuration . Configuration Registry Ċ import Ġorg . smart register . fhir core . engine . configuration . app . ApplicationConfiguration Ċ import Ġorg . smart register . fhir core . engine . sync . Sync Broad caster Ċ import Ġorg . smart register . fhir core . engine . ui . register . model . Language Ċ import Ġorg . smart register . fhir core . engine . util . Secure Shared Preference Ċ import Ġorg . smart register . fhir core . engine . util . SharedPreferences Helper Ċ Ċ @ H ilt ViewModel Ċ class ĠUser Profile ViewModel Ċ @ Inject Ċ constructor ( ĊĠ Ġval Ġsync Broad caster : ĠSync Broad caster , ĊĠ Ġval Ġaccount Authenticator : ĠAccount Authenticator , ĊĠ Ġval Ġsecure Shared Preference : ĠSecure Shared Preference , ĊĠ Ġval Ġshared Preferences Helper : ĠSharedPreferences Helper , ĊĠ Ġval Ġconfiguration Registry : ĠConfiguration Registry Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠ Ġval Ġlanguages Ġby Ġlazy Ġ{ Ġfetch Languages () Ġ} ĊĊĠ Ġfun Ġfetch Languages () Ġ= ĊĠĠĠ Ġconfiguration Registry ĊĠĠĠĠĠ Ġ. retrieve Configuration < ApplicationConfiguration >( AppConfig Classification . APPLICATION ) ĊĠĠĠĠĠ Ġ. run Ġ{ Ġthis @ run . languages Ġ} ĊĠĠĠĠĠ Ġ. map Ġ{ ĠLanguage ( it , ĠLocale . for Language Tag ( it ). displayName ) Ġ} ĊĊĠ Ġval Ġon Logout Ġ= ĠMutable LiveData < Boolean ? >( null ) ĊĠ Ġval Ġlanguage Ġ= ĠMutable LiveData < Language ? >( null ) ĊĊĠ Ġfun Ġrun Sync () Ġ{ ĊĠĠĠ Ġsync Broad caster . sync Init iator ?. run Sync () ĊĠ Ġ} ĊĊĠ Ġfun Ġlogout User () Ġ{ ĊĠĠĠ Ġaccount Authenticator . logout () ĊĠĠĠ Ġon Logout . post Value ( true ) ĊĠ Ġ} ĊĊĠ Ġfun Ġretrieve Username (): ĠString ? Ġ= Ġsecure Shared Preference . retrieve Session Username () ĊĊĠ Ġfun Ġallow Switch ing Languages () Ġ= Ġlanguages . size Ġ> Ġ 1 ĊĊĠ Ġfun Ġload Selected Language (): ĠString Ġ= ĊĠĠĠ ĠLocale . for Language Tag ( ĊĠĠĠĠĠĠĠ Ġshared Preferences Helper . read ( SharedPreferences Helper . LANG , ĠLocale . EN GL ISH . to Language Tag ()) ĊĠĠĠĠĠĠĠĠĠ Ġ?: ĠLocale . EN GL ISH . to Language Tag () ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. displayName ĊĊĠ Ġfun Ġset Language ( language : ĠLanguage ) Ġ{ ĊĠĠĠ Ġshared Preferences Helper . write ( SharedPreferences Helper . LANG , Ġlanguage . tag ) ĊĠĠĠ Ġthis . language . post Value ( language ) ĊĠ Ġ} Ċ } Ċ