package Ġcom . fib el att i . ra ff ler . features . my ra ff les . presentation . random win ners Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . fib el att i . core . arch components . extension . activity ViewModel Ċ import Ġcom . fib el att i . core . arch components . extension . observe Ċ import Ġcom . fib el att i . core . arch components . extension . observe Event Ċ import Ġcom . fib el att i . core . arch components . extension . viewModel Ċ import Ġcom . fib el att i . core . extension . clear Error Ċ import Ġcom . fib el att i . core . extension . hide Keyboard Ċ import Ġcom . fib el att i . core . extension . show Error Ċ import Ġcom . fib el att i . core . extension . sn ackbar Ċ import Ġcom . fib el att i . core . extension . text AsString Ċ import Ġcom . fib el att i . core . extension . with Item Offset Decoration Ċ import Ġcom . fib el att i . core . extension . with Linear LayoutManager Ċ import Ġcom . fib el att i . ra ff ler . R Ċ import Ġcom . fib el att i . ra ff ler . core . extension . getColor Gradient For List Size Ċ import Ġcom . fib el att i . ra ff ler . core . platform . base . Base Fragment Ċ import Ġcom . fib el att i . ra ff ler . features . my ra ff les . presentation . common . Custom R aff le Draft ed Adapter Ċ import Ġcom . fib el att i . ra ff ler . features . my ra ff les . presentation . common . Custom R aff le Draft ed Model Ċ import Ġcom . fib el att i . ra ff ler . features . my ra ff les . presentation . common . Custom R aff le Model Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . android . synt hetic . main . fragment _ custom _ ra ff le _ random _ win ners .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCustom R aff le Random Win ners Fragment Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcustom R aff le Draft ed Adapter : ĠCustom R aff le Draft ed Adapter Ċ ) Ġ: ĠBase Fragment ( R . layout . fragment _ custom _ ra ff le _ random _ win ners ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcustom R aff le Details ViewModel Ġby Ġactivity ViewModel Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Provider . custom R aff le Details ViewModel () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġrandom Win ners ViewModel Ġby ĠviewModel Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Provider . custom R aff le Random Win ners ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . observe ( custom R aff le Details ViewModel . custom R aff le , Ġ:: setup Layout ) ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . observe Event ( custom R aff le Details ViewModel . items Remaining ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Root . sn ackbar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Quantity String ( R . plurals . custom _ ra ff le _ ro u lette _ hint _ items _ remaining , Ġit , Ġit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Ġ= ĠR . drawable . background _ sn ackbar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextColor Ġ= ĠR . color . text _ primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= ĠSn ackbar . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton R aff le . isEnabled Ġ= Ġit Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . observe ( random Win ners ViewModel . error , Ġ:: handleError ) ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . observe ( random Win ners ViewModel . quantity Error , Ġ:: handle Quantity Error ) ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . observe ( random Win ners ViewModel . random Win ners , Ġ:: handle Win ners ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġlayout Root . hide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Layout ( custom R aff le Model : ĠCustom R aff le Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Title . setTitle ( R . string . custom _ ra ff le _ details _ mode _ random _ win ners ) ĊĠĠĠĠĠĠĠ Ġlayout Title . set Navigate Up ( R . drawable . ic _ close ) Ġ{ Ġfind Nav Controller (). navigate Up () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton R aff le . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Win ners ViewModel . getRandom Win ners ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom R aff le Model . included Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Total Quantity . text AsString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Linear LayoutManager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Item Offset Decoration ( R . dim en . margin _ small ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter Ġ= Ġcustom R aff le Draft ed Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Quantity Error ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( message . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Layout Win ners Quantity . show Error ( message ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Layout Win ners Quantity . clear Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Win ners ( win ners : ĠList < Custom R aff le Draft ed Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcustom R aff le Details ViewModel . item R aff led () ĊĠĠĠĠĠĠĠ Ġlayout Root . hide Keyboard () ĊĠĠĠĠĠĠĠ Ġcustom R aff le Draft ed Adapter . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor List Ġ= Ġget Color Gradient For List Size ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color _ primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color _ secondary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ners . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit List ( win ners ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ