package Ġcom . example . password manager Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . icu . text . Case Map Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . password manager . databinding . Fragment Add Password Binding Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Database Reference Ċ import Ġcom . google . firebase . database . Firebase Database ĊĊ Ċ class ĠAdd Password Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġpass Key ="" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : Fragment Add Password Binding ?= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase Reference : ĠDatabase Reference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfirebase Auth : ĠFirebase Auth ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Add Password Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsupport ActionBar : ĠAction Bar ? Ġ= Ġ( require Activity () Ġas ĠAppCompatActivity ). support ActionBar ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" Add ĠPassword " ĊĊĠĠĠĠĠĠĠ Ġfirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġdatabase Reference Ġ= ĠFirebase Database . getInstance (). reference ĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= Ġfirebase Auth . currentUser !!. uid ĊĊĠĠĠĠĠĠĠ Ġbinding . save Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaes Ġ= ĠAES () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// getting Ġall Ġthe Ġvalues Ġfrom Ġthe Ġedit text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġbinding . title Et . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġbinding . username Et . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġbinding . pass Et . text . toString (). trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenc Pass Ġ= Ġaes . encrypt ( pass , Ġpass Key ) Ġ// encrypt ing Ġthe Ġpassword Ġthat Ġuser Ġentered Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TEST , Ġ" title Ġ: Ġ$ title ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TEST , Ġ" username Ġ: Ġ$ username ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TEST , Ġ" enc Pass Ġ: Ġ$ enc Pass ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title . isEmpty () Ġ|| Ġtitle ==" Ġ" Ġ|| Ġpass . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Please Ġcheck Ġall Ġfields Ġ! ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Users Ġ-> Ġour Ġdb Ġname Ġon Ġfirebase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ|_ user Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ|_ data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ|_ id Ġ( here Ġunder Ġthis Ġnode Ġwe Ġare Ġgoing Ġto Ġstore / add Ġthe Ġdata ),( this Ġwe Ġare Ġtaking Ġas Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠ Ġ|_ Ġid Ġ( the Ġabove Ġid Ġwe Ġhave Ġstored ),( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠ Ġ|_ Ġname Ġ( for Ġthis Ġwe Ġhave Ġgiven Ġthe Ġdefault Ġvalue Ġthat Ġis ĠUser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠ Ġ|_ Ġpassword ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠ Ġ|_ Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠ Ġ|_ Ġusername ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference Ġ= ĠFirebase Database . getInstance (). getReference (" Users ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġdatabase Reference . child (" Users "). child ( uid ). child (" data "). push (). key . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// getting Ġthe Ġkey Ġthat Ġthe Ġfirebase Ġcreates Ġwhile Ġstoring Ġthe Ġdata ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . d ( TEST ," key Ġ$ key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData Model (" User ", Ġtitle , Ġusername , Ġenc Pass , key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . child ( firebase Auth . currentUser !!. uid ). child (" data "). child ( key ). setValue ( data ) Ġ// st oring Ġthe Ġdata Ġunder Ġour Ġpush Ġkey Ġgenerated ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn ackBar ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠAdd Password Directions . action Add Password To Home Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// custom Ġsn ackBar ĊĠĠĠ Ġprivate Ġfun Ġshow Sn ackBar ( view : ĠView ){ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackBar : Snackbar Ġ= ĠSn ackbar . make ( view , Ġ"", ĠSn ackbar . LENGTH _ LONG ); ĊĠĠĠĠĠĠĠ Ġval Ġcustom Sn ack : View Ġ= Ġlayout Inflater . inflate ( R . layout . custom _ sn ackbar , null ) ĊĠĠĠĠĠĠĠ Ġsn ackBar . view . set BackgroundColor ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠ Ġval Ġsn ackBar Layout : Snackbar . Snackbar Layout Ġ= Ġsn ackBar . view Ġas ĠSn ackbar . Snackbar Layout ĊĠĠĠĠĠĠĠ Ġsn ackBar Layout . set Padding ( 3 0 , 0 , 3 0 , 2 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle : TextView Ġ= Ġcustom Sn ack . findViewById ( R . id . text ) ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġ" Added " ĊĠĠĠĠĠĠĠ Ġval ĠtextView : TextView Ġ= Ġcustom Sn ack . findViewById ( R . id . action _ text ) ĊĠĠĠĠĠĠĠ ĠtextView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsn ackBar Layout . addView ( custom Sn ack , 0 ) ĊĠĠĠĠĠĠĠ Ġsn ackBar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ_ binding = null ĊĠĠĠ Ġ} Ċ Ċ }