package Ġcom . yo lo . yo lo _ android . ui . signup Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . yo lo . yo lo _ android . Yo Lo Application Ċ import Ġcom . yo lo . yo lo _ android . base . Disposable ViewModel Ċ import Ġcom . yo lo . yo lo _ android . common . Event Ċ import Ġcom . yo lo . yo lo _ android . common . constants . LOGIN _ TYPE Ċ import Ġcom . yo lo . yo lo _ android . common . constants . N ICK NAME Ċ import Ġcom . yo lo . yo lo _ android . common . constants . SO CIAL _ ID Ċ import Ġcom . yo lo . yo lo _ android . data . Result Data Ċ import Ġcom . yo lo . yo lo _ android . fc m . F cm Token Manager Ċ import Ġcom . yo lo . yo lo _ android . repository . Yo lo Repository Ċ import Ġcom . yo lo . yo lo _ android . utils . My Logger Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx kotlin . addTo Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠSign up ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġyo lo Repository : ĠYo lo Repository , ĊĠĠĠ Ġsaved State Handle : ĠSaved State Handle Ċ ) Ġ: ĠDis posable ViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsocial ID Ġ= Ġsaved State Handle . get < String >( SO CIAL _ ID ) ĊĠĠĠ Ġprivate Ġval Ġlogin Type Ġ= Ġsaved State Handle . get < String >( LOGIN _ TYPE ) ĊĠĠĠ Ġval Ġnickname Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġprivate Ġvar Ġ_ toast Message Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġtoast Message : ĠLive Data < String > Ġget () Ġ= Ġ_ toast Message ĊĊĠĠĠ Ġprivate Ġval Ġ_ navigate To Main Ġ= ĠMutable LiveData < Event < Boolean >>() ĊĠĠĠ Ġval Ġnavigate To Main : ĠLive Data < Event < Boolean >> Ġget () Ġ= Ġ_ navigate To Main ĊĊĠĠĠ Ġfun Ġbutton Activation (): ĠLive Data < Boolean > Ġ= ĠTransform ations . map ( nickname ) Ġ{ ĊĠĠĠĠĠĠĠ ĠisValid Nick name ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid Nick name ( nickname : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexp Ġ= ĠRegex ("^ [ ê°Ģ - íŀ £ ã Ħ ± - ã ħ İ a - zA - Z 0 - 9 _ \\ S ]{ 1 , 1 0 }\ $ ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ! nickname . isNull OrEmpty () Ġ&& Ġexp . matches ( nickname ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Signup ( nickname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( social ID . isNull OrEmpty () Ġ|| Ġlogin Type . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġhash Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSO CIAL _ ID Ġto Ġsocial ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ICK NAME Ġto Ġnickname , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGIN _ TYPE Ġto Ġlogin Type ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġyo lo Repository . signup ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Data . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Login () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Data . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . value Ġ= Ġresult . error Entity . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. addTo ( composite Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( social ID . isNull OrEmpty () Ġ|| Ġlogin Type . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġyo lo Repository . login ( hash Map Of ( SO CIAL _ ID Ġto Ġsocial ID , ĠLOGIN _ TYPE Ġto Ġlogin Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Data . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Logger . e (" message Ġ: Ġ${ result . data . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠYo Lo Application . context ?. getData Store Module ()?. set Login Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġresult . data . token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Type Ġ= Ġlogin Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġsocial ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF cm Token Manager ( yo lo Repository ). send Registration ToServer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ navigate To Main . value Ġ= ĠEvent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Data . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast Message . value Ġ= Ġresult . error Entity . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. addTo ( composite Disposable ) ĊĠĠĠ Ġ} Ċ }