package Ġcom . yt . grad uation . UI . Authentication Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . google . firebase . auth . Auth Result Ċ import Ġcom . yt . grad uation . model . User Ċ import Ġcom . yt . grad uation . repository . Register Repository Ċ import Ġcom . yt . grad uation . util . Resource Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠRegister ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ user Registration Status Ġ= ĠMutable LiveData < Resource < Auth Result >>() Ġ// Auth Result ĠFirebase ' e Ġa it Ġuser Ġinfos unu ĠiÃ§ er ir ĊĠĠĠ Ġval Ġuser Registration Status : ĠLive Data < Resource < Auth Result >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ user Registration Status ĊĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= ĠRegister Repository () ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Registration ( name : ĠString , Ġemail : ĠString , Ġpassword 1 : String , Ġpassword 2 : ĠString ): Boolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġemail . take Last ( 1 1 )= ="@ itu . edu . tr " Ġ Ġ&& Ġname . length Ġin Ġ 2 .. 2 5 Ġ&& Ġpassword 1 . isNotEmpty () Ġ&& Ġpassword 1 Ġ== Ġpassword 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister ( user : ĠUser , password 1 : String , password 2 : String ){ ĊĠĠĠĠĠĠĠ Ġ_ user Registration Status . post Value ( Resource . Loading ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( validate Registration ( user . name , user . email , password 1 , password 2 )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregister Result Ġ= Ġ Ġrepository . register ( user , password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Registration Status . post Value ( register Result )// _ user Registration Status . value Ġ= Ġregister Result ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else Ġ_ user Registration Status . post Value ( Resource . Error (" Register Ġfailed .")) ĊĠĠĠ Ġ} Ċ }