/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 , ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . example . android . firebase ui _ login _ sample Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . map Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġkotlin . random . Random Ċ Ċ class ĠLogin ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġandroid Fact s Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġfirst Ġcommercial ĠAndroid Ġdevice Ġwas Ġlaunched Ġin ĠSeptember Ġ 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The ĠAndroid Ġoperating Ġsystem Ġhas Ġover Ġ 2 Ġb illion Ġmonthly Ġactive Ġusers ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġfirst ĠAndroid Ġversion Ġ( 1 . 0 ) Ġwas Ġreleased Ġon ĠSeptember Ġ 2 3 , Ġ 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġfirst Ġsmart Ġphone Ġrunning ĠAndroid Ġwas Ġthe ĠHT C ĠD ream Ġcalled Ġthe ĠT - Mobile ĠG 1 Ġin Ġ" Ġ+ Ġ" some Ġcountries " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcal ifornia Fact s Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġmost Ġpopulated Ġstate Ġin Ġthe ĠUnited ĠStates Ġis ĠCalifornia ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Three Ġout Ġof Ġthe Ġten Ġlargest ĠU . ĠS . Ġcities Ġare Ġin ĠCalifornia ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġlargest Ġtree Ġin Ġthe Ġworld Ġcan Ġbe Ġfound Ġin ĠCalifornia ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" California Ġbecame Ġa Ġstate Ġin Ġ 1 8 5 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠAuthentication State Ġ{ ĊĠĠĠĠĠĠĠ ĠAUTH ENT IC ATED , ĠU NA UTH ENT IC ATED , ĠINVALID _ AUTHENT ICATION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ ĠCreate Ġan Ġauthentication State Ġvariable Ġbased Ġoff Ġthe ĠFirebase User LiveData Ġobject . ĠBy ĊĠĠĠ Ġ// Ġ Ġcreating Ġthis Ġvariable , Ġother Ġclasses Ġwill Ġbe Ġable Ġto Ġquery Ġfor Ġwhether Ġthe Ġuser Ġis Ġlogged ĊĠĠĠ Ġ// Ġ Ġin Ġor Ġnot ĊĠĠĠ Ġval Ġauthentication State Ġ= ĠFirebase User LiveData (). map Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication State . AUTHENT IC ATED ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication State . UN AUTHENT IC ATED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġfact Ġto Ġdisplay Ġbased Ġon Ġthe Ġuser 's Ġset Ġpreference Ġof Ġwhich Ġtype Ġof Ġfact Ġthey Ġwant ĊĠĠĠĠ Ġ* Ġto Ġsee Ġ( Android Ġfact Ġor ĠCalifornia Ġfact ). ĠIf Ġthere Ġis Ġno Ġlogged Ġin Ġuser Ġor Ġif Ġthe Ġuser Ġhas ĊĠĠĠĠ Ġ* Ġnot Ġset Ġa Ġpreference , Ġdefaults Ġto Ġshowing ĠAndroid Ġfacts . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Fact To Display ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġfact Type Preference Key Ġ= Ġcontext . getString ( R . string . preference _ fact _ type _ key ) ĊĠĠĠĠĠĠĠ Ġval Ġdefault Fact Type Ġ= Ġcontext . resources . getString Array ( R . array . fact _ type )[ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġfun Fact Type Ġ= Ġshared Preferences . getString ( fact Type Preference Key , Ġdefault Fact Type ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġandroid Fact s [ Random . nextInt ( 0 , Ġandroid Fact s . size )] ĊĠĠĠ Ġ} Ċ } Ċ