package Ġcom . dic hes . d ich box mobile . mv Ċ Ċ import Ġandroid . app . Activity Ċ import Ġcom . dic hes . d ich box mobile . api . Statuses Ċ import Ġcom . dic hes . d ich box mobile . api . user . User API Ċ import Ġcom . dic hes . d ich box mobile . datat ypes . User Container Ċ import Ġcom . dic hes . d ich box mobile . mv . userData Manager . UserData Fetcher Ċ import Ġcom . dic hes . d ich box mobile . mv . userData Manager . viewModel States . UserData ViewModel Ċ import Ġcom . dic hes . d ich box mobile . mv . userData Manager . viewModel States . User State ViewModel Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ class ĠActivity Handler ( ĊĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity , ĊĠĠĠ Ġprivate Ġval Ġusername s ViewModel : ĠUser State ViewModel , ĊĠĠĠ Ġprivate Ġval ĠuserData ViewModel : ĠUser Data ViewModel Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġuser Api Ġ= ĠUser API () ĊĊĠĠĠ Ġfun Ġfetch Username ( userData Fetcher : ĠUser Data Fetcher ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġactivity . getFile Stream Path (" signed . txt ") !! ĊĠĠĠĠĠĠĠ Ġval Ġis Signed Ġ= Ġfile . exists () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Signed ) Ġreturn Ġusername s ViewModel . setState ( Pair ( null , Ġnull )) ĊĠĠĠĠĠĠĠ Ġread Signed File Ġ{ Ġuuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġrequest Username ( uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername s ViewModel . setState ( Pair ( name , Ġname )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserData Fetcher . fill User ViewModel ( userData ViewModel , Ġusername s ViewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername s ViewModel . setState ( Pair ( null , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Modified Username () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġactivity . getFile Stream Path (" signed . txt ") !! ĊĠĠĠĠĠĠĠ Ġread Signed File Ġ{ Ġuuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġrequest Username ( uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ read Signed File Ġusername s ViewModel . setState ( Pair ( name , Ġname )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername s ViewModel . setState ( Pair ( null , Ġnull )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Signed File ( handler : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexists Ġ= Ġactivity . getFile Stream Path (" signed . txt ") !!. exists () ĊĠĠĠĠĠĠĠ Ġif Ġ(! exists ) Ġreturn ĊĠĠĠĠĠĠĠ Ġactivity . open File Input (" signed . txt "). use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= Ġstream ?. buffered Reader (). use Ġ{ Ġit ?. read Text () Ġ} !!. reversed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ( uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Username ( uuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= ĠUser Container . Signed Container ( uuid Ġ= Ġuuid ) ĊĠĠĠĠĠĠĠ Ġval Ġ( st , Ġres ) Ġ= Ġrun Blocking Ġ{ Ġuser Api . getUsername By Uuid ( container ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Statuses . OK . eq Not ( st )) Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġ( name , Ġ_) Ġ= Ġ( res Ġas ĠUser Container . Signed Container ) ĊĠĠĠĠĠĠĠ Ġreturn Ġname !! ĊĠĠĠ Ġ} Ċ }