/** Ċ * ĠCopyright ĠS or am its u ĠCo ., ĠLtd . ĠAll ĠRights ĠReserved . Ċ * ĠSPDX - License - Identifier : ĠGPL - 3 . 0 Ċ */ Ċ Ċ package Ġjp . co . sor am its u . feature _ wallet _ impl . presentation . receive Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġjp . co . sor am its u . common . account . Account Avatar Generator Ċ import Ġjp . co . sor am its u . common . io . FileManager Ċ import Ġjp . co . sor am its u . common . presentation . Single Live Event Ċ import Ġjp . co . sor am its u . common . presentation . trigger Ċ import Ġjp . co . sor am its u . common . presentation . view model . Base ViewModel Ċ import Ġjp . co . sor am its u . common . res our ses . Clipboard Manager Ċ import Ġjp . co . sor am its u . common . res our ses . ResourceManager Ċ import Ġjp . co . sor am its u . common . util . Qr Code Generator Ċ import Ġjp . co . sor am its u . feature _ wallet _ api . domain . interfaces . Wallet Interactor Ċ import Ġjp . co . sor am its u . feature _ wallet _ api . domain . model . Receive Asset Model Ċ import Ġjp . co . sor am its u . feature _ wallet _ api . launcher . Wallet Router Ċ import Ġjp . co . sor am its u . feature _ wallet _ impl . R Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠReceive ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġinter actor : ĠWallet Interactor , ĊĠĠĠ Ġprivate Ġval Ġwallet Router : ĠWallet Router , ĊĠĠĠ Ġprivate Ġval Ġresource Manager : ĠResourceManager , ĊĠĠĠ Ġprivate Ġval Ġqr Code Generator : ĠQ r Code Generator , ĊĠĠĠ Ġprivate Ġval Ġasset Model : ĠReceive Asset Model , ĊĠĠĠ Ġprivate Ġval Ġclipboard Manager : ĠClip board Manager , ĊĠĠĠ Ġprivate Ġval Ġavatar Generator : ĠAccount Avatar Generator , ĊĠĠĠ Ġprivate Ġval Ġfile Manager : ĠFile Manager , ĊĠĠĠ Ġprivate Ġval Ġbackground Qr Color : ĠInt , Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġqr Bitmap LiveData Ġ= ĠMed iator LiveData < Bitmap >() ĊĠĠĠ Ġval Ġshare Qr Code LiveData Ġ= ĠSingle Live Event < Pair < Uri , ĠString >>() ĊĠĠĠ Ġprivate Ġval Ġ_ copied Address Event Ġ= ĠSingle Live Event < Unit >() ĊĠĠĠ Ġval Ġcopied Address Event : ĠLive Data < Unit > Ġ= Ġ_ copied Address Event ĊĠĠĠ Ġprivate Ġval Ġ_ userName Address Ġ= ĠMutable LiveData < Pair < String , ĠString >>() ĊĠĠĠ Ġval ĠuserName Address : ĠLive Data < Pair < String , ĠString >> Ġ= Ġ_ userName Address ĊĠĠĠ Ġprivate Ġval Ġ_ user Avatar Ġ= ĠMutable LiveData < Drawable >() ĊĠĠĠ Ġval Ġuser Avatar : ĠLive Data < Drawable > Ġ= Ġ_ user Avatar ĊĊĠĠĠ Ġprivate Ġvar Ġcur Amount : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar ĠuserName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġuser Address : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġuser PublicKey : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Address Ġ= Ġinter actor . getAddress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser PublicKey Ġ= Ġinter actor . get PublicKey Hex ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= Ġinter actor . get AccountName () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Qr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ userName Address . value Ġ= Ġuser Address . or Empty () Ġto ĠuserName . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Avatar . value Ġ= Ġavatar Generator . create Avatar ( user Address . or Empty (), Ġ 3 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġback Button Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġwallet Router . pop Back Stack Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Qr () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Bitmap LiveData . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Generator . generate Qr Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" substr ate :$ user Address :$ user PublicKey :$ userName :${ asset Model . asset Id }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Qr Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. getOrElse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshare Qr () Ġ{ ĊĠĠĠĠĠĠĠ Ġqr Bitmap LiveData . value ?. let Ġ{ Ġqr Code Bitmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġgenerate Message ( cur Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqr Uri Ġ= Ġfile Manager . write External Cache Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Bitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" qr co def ile . png ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Compress Format . PNG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare Qr Code LiveData . post Value ( qr Uri Ġto Ġs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcopy Address () Ġ{ ĊĠĠĠĠĠĠĠ Ġclipboard Manager . addTo Clipboard (" Address ", Ġuser Address . or Empty ()) ĊĠĠĠĠĠĠĠ Ġ_ copied Address Event . trigger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Message ( amount : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġif Ġ( amount . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Manager . getString ( R . string . wallet _ qr _ share _ message _ empty _ template _ v 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Manager . getString ( R . string . asset _ sor a _ fullname ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Model . token Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Manager . getString ( R . string . wallet _ qr _ share _ message _ template _ v 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Manager . getString ( R . string . asset _ sor a _ fullname ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Model . token Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Ġ+ Ġ"\ n $ user Address " ĊĠĠĠ Ġ} Ċ } Ċ