/* Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . example . kotlin sample . modules . authentication . registration Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . kotlin sample . database . User Ċ import Ġcom . example . kotlin sample . database . UserData Repository Ċ import Ġcom . example . kotlin sample . database . User Database Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠLogin ViewModel Ġdesigned Ġto Ġstore Ġand Ġmanage ĠUI - related Ġdata Ġin Ġa Ġlifecycle Ġcon sc ious Ġway . ĠThis Ċ Ġ* Ġallows Ġdata Ġto Ġsurv ive Ġconfiguration Ġchanges Ġsuch Ġas Ġscreen Ġrot ations . ĠIn Ġaddition , Ġbackground Ċ Ġ* Ġwork Ġsuch Ġas Ġfetching Ġnetwork Ġresults Ġcan Ġcontinue Ġthrough Ġconfiguration Ġchanges Ġand Ġdeliver Ċ Ġ* Ġresults Ġafter Ġthe Ġnew ĠFragment Ġor ĠActivity Ġis Ġavailable . Ċ Ġ*/ Ċ class ĠRegistration ViewModel Ġ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrepository : ĠUser Data Repository ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Dao Ġ= ĠUser Database . get Database ( application , ĠviewModel Scope ). user Dao () ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠUser Data Repository ( user Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġa Ġdata Ġto Ġdisplay Ġa Ġstring . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġvariable Ġis Ġprivate Ġbecause Ġwe Ġdon 't Ġwant Ġto Ġexpose ĠMutable LiveData ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMutable LiveData Ġallows Ġanyone Ġto Ġset Ġa Ġvalue , Ġand ĠLogin ViewModel Ġis Ġthe Ġonly ĊĠĠĠĠ Ġ* Ġclass Ġthat Ġshould Ġbe Ġhandling Ġdata Ġvalues Ġin ĠLogin Ġpage . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġval Ġ_ status Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLogin Ġstatus Ġof Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġaction Status : ĠMutable LiveData < Boolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ status ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUser Ġtriggers ĠLogin Ġaction ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Registration Action ( name : ĠString , Ġemail : ĠString , Ġpassword : ĠString , Ġconfirm Password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd User Credentials ( email , name , password ) ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLaunch ing Ġa Ġnew Ġcoroutine Ġto Ġinsert Ġthe Ġdata Ġin Ġa Ġnon - blocking Ġway ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd User Credentials ( id : ĠString , Ġname : ĠString , Ġpassword : ĠString ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġrepository . insert ( User ( id , name , password )) ĊĠĠĠĠĠĠĠĠĠ Ġ_ status . post Value ( status > 0 ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ