package Ġcom . one login . m fa . app kotlin . factors Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . one login . m fa . app kotlin . R Ċ import Ġcom . one login . m fa . data . util . One Login M fa Utils Ċ import Ġcom . one login . m fa . model . Factor Ċ import Ġcom . one login . m fa . view . Count down Dial Ċ import Ġcom . one login . m fa . view . O tp Ċ Ċ class ĠMulti Factor RecyclerView Adapter ( ĊĠĠĠ Ġprivate Ġvar Ġfactor List : ĠArrayList < Factor > Ġ= ĠArrayList () Ċ ) Ġ: ĠRecyclerView . Adapter < Multi Factor RecyclerView Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġseeds : ĠHashSet < String >? Ġ= ĠHashSet () ĊĠĠĠ Ġprivate Ġvar Ġon Factor Item Interaction Listener : ĠFactor Item Interaction Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠFactor Item Interaction Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Show Details ( factor : ĠFactor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Factor Item Interaction Listener ( listener : ĠFactor Item Interaction Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Factor Item Interaction Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . fragment _ multi _ factor _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder (( view )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactor Ġ= Ġfactor List [ position ] ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Factor Item Interaction Listener ?. on Show Details ( factor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Long ClickListener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . otp . set Factor ( factor ) ĊĠĠĠĠĠĠĠ Ġholder . countdown Dial . set Progress ( factor ) ĊĠĠĠĠĠĠĠ Ġholder . username . text Ġ= ĠOne Login M fa Utils . modify UserName For Display ( factor . username ) ĊĠĠĠĠĠĠĠ Ġholder . displayName . text Ġ= Ġfactor . displayName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġfactor List . size ĊĊĠĠĠ Ġfun Ġadd Factor Item ( factor : ĠFactor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( seeds ?. contains ( factor . seed ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġseeds ?. add ( factor . seed ) ĊĠĠĠĠĠĠĠ Ġfactor List . add ( factor ) ĊĠĠĠĠĠĠĠ Ġnotify Item Changed ( factor List . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Factor Item ( factor : ĠFactor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġfactor List . indexOf ( factor ) ĊĠĠĠĠĠĠĠ Ġfactor List . remove ( factor ) ĊĠĠĠĠĠĠĠ Ġseeds ?. remove ( factor . seed ) ĊĠĠĠĠĠĠĠ Ġnotify Item Removed ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( factor View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( factor View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername : ĠTextView Ġ= Ġfactor View . findViewById ( R . id . user _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġo tp : ĠO tp Ġ= Ġfactor View . findViewById ( R . id . otp ) ĊĠĠĠĠĠĠĠ Ġval ĠdisplayName : ĠTextView Ġ= Ġfactor View . findViewById ( R . id . display _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġcount down Dial : ĠCount down Dial Ġ= Ġfactor View . findViewById ( R . id . countdown ) ĊĠĠĠ Ġ} Ċ } Ċ