package Ġar . com . play 2 play . framework Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . MODE _ PRIVATE Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . core . content . edit Ċ import Ġar . com . play 2 play . R Ċ import Ġar . com . play 2 play . data . userInfo . UserInfo Storage Ċ Ċ /** ĠA Ġ[ UserInfo Storage ] Ġimplementation Ġfor Ġshared Ġpreferences . Ġ*/ Ċ class ĠSharedPreferences UserInfo Storage ( private Ġval Ġcontext : ĠContext ) Ġ: ĠUserInfo Storage Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġshared Preferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( context . getString ( R . string . shared _ preferences ), ĠMODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave UserName ( name : ĠString ) Ġ= Ġshared Preferences . edit Ġ{ Ġput String ( USER _ NAME _ KEY , Ġname ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget UserName (): ĠString ? Ġ= Ġshared Preferences . getString ( USER _ NAME _ KEY , Ġnull ) ĊĊĠĠĠ Ġoverride Ġfun Ġget UserName OrEmpty (): ĠString Ġ= Ġget UserName () Ġ?: Ġcontext . resources . getString ( R . string . unknown ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER _ NAME _ KEY Ġ= Ġ" P 2 P _ USER _ NAME _ KEY " ĊĠĠĠ Ġ} Ċ } Ċ