package Ġcom . so h ny i . li ang mi Ċ Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . so h ny i . li ang mi . database . Password Repository Ċ import Ġcom . so h ny i . li ang mi . entry . Password Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Password Lab " Ċ Ċ object ĠPassword Lab Ġ{ ĊĊĠĠĠ Ġval Ġall Password s Ġ= Ġmutable ListOf < Password >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġall Password s . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Password sBy Category ( id : ĠInt ): ĠList < Password > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpasswords : ĠMutable List < Password > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġall Password s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . categoryId Ġ== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpasswords . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpasswords ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Password ( id : ĠInt ): ĠPassword ? Ġ{ ĊĠĠĠĠĠĠĠ Ġall Password s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . id Ġ== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Password ( activity : ĠFragment Activity , Ġpassword : ĠPassword ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . lifecycle Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPassword Repository . get (). add Password ( password ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġall Password s . add ( password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Password ( activity : ĠFragment Activity , Ġpassword : ĠPassword ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . lifecycle Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPassword Repository . get (). update Password ( password ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġall Password s . indexOf First Ġ{ Ġit . id Ġ== Ġpassword . id Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Password s [ index ] Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }