package Ġat . ro tes k re uz . stop cor ona . screens . reporting . tan Check Ċ Ċ import Ġat . ro tes k re uz . stop cor ona . constants . Constants . Misc . EMPTY _ STRING Ċ import Ġat . ro tes k re uz . stop cor ona . model . entities . in fection . message . MessageType Ċ import Ġat . ro tes k re uz . stop cor ona . model . repositories . Personal Data Ċ import Ġat . ro tes k re uz . stop cor ona . model . repositories . Reporting Repository Ċ import Ġat . ro tes k re uz . stop cor ona . model . repositories . Tan Data Ċ import Ġat . ro tes k re uz . stop cor ona . screens . reporting . personal Data . ValidationError Ċ import Ġat . ro tes k re uz . stop cor ona . screens . reporting . personal Data . validate NotEmpty Ċ import Ġat . ro tes k re uz . stop cor ona . skeleton . core . model . helpers . App Dispatch ers Ċ import Ġat . ro tes k re uz . stop cor ona . skeleton . core . model . helpers . State Ċ import Ġat . ro tes k re uz . stop cor ona . skeleton . core . model . helpers . State Observer Ċ import Ġat . ro tes k re uz . stop cor ona . skeleton . core . screens . base . view model . Scoped ViewModel Ċ import Ġat . ro tes k re uz . stop cor ona . utils . view . safe Map Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠHandles Ġthe Ġuser Ġinteraction Ġand Ġprovides Ġdata Ġfor Ġ[ Reporting Tan Check Fragment ]. Ċ Ġ*/ Ċ class ĠReporting Tan Check ViewModel ( ĊĠĠĠ Ġapp Dispatch ers : ĠApp Dispatch ers , ĊĠĠĠ Ġprivate Ġval Ġreporting Repository : ĠReporting Repository Ċ ) Ġ: ĠScoped ViewModel ( app Dispatch ers ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġvalidation Result Subject Ġ= ĠBehavior Subject . create < Validation Result >() ĊĠĠĠ Ġprivate Ġval Ġtan Request State Observer Ġ= ĠState Observer () ĊĊĠĠĠ Ġprivate Ġvar Ġtan : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Tan ( tan : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tan Ġ= Ġtan ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Tan () Ġ{ ĊĠĠĠĠĠĠĠ Ġtan Request State Observer . loading () ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmobile Number Ġ= Ġreporting Repository . observe Personal Data (). blocking First (). mobile Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporting Repository . request Tan ( mobile Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtan Request State Observer . error ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtan Request State Observer . idle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtan Ġ= Ġthis . tan ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Result Ġ= ĠValidation Result ( validate NotEmpty ( tan )) ĊĠĠĠĠĠĠĠ Ġif Ġ( validation Result . isValid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreporting Repository . set Tan ( tan . safe Map (" Tan Ġvalidation Ġis Ġnot Ġcorrect .", ĠEMPTY _ STRING )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvalidation Result Subject . onNext ( validation Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Tan Data (): ĠObservable < Tan Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreporting Repository . observe Tan Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Personal Data (): ĠObservable < Personal Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreporting Repository . observe Personal Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Validation Result (): ĠObservable < Validation Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalidation Result Subject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Tan Request State (): ĠObservable < State > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtan Request State Observer . observe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve MessageType (): ĠObservable < MessageType > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreporting Repository . observe MessageType () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġreporting Repository . go Back From Tan Entry Screen () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠDescri bes Ġthe Ġresult Ġof Ġthe ĠT AN Ġfield . Ċ Ġ*/ Ċ data Ġclass ĠValidation Result ( ĊĠĠĠ Ġval Ġtan : ĠValidationError ? Ċ ) Ġ{ ĊĊĠĠĠ Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtan Ġ== Ġnull ĊĠĠĠ Ġ} Ċ } ĊĊ