package Ġcom . air lift . coding challenge . utils Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . google . android . material . sn ackbar . Snackbar ĊĊ Ċ fun ĠView . to Visible () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . VISIBLE Ċ } Ċ Ċ fun ĠView . to G one () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . GONE Ċ } Ċ Ċ fun ĠView . to In visible () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . GONE Ċ } ĊĊ Ċ /** Ċ Ġ* ĠTrans forms Ġstatic Ġjava Ġfunction ĠSn ackbar . make () Ġto Ġan Ġextension Ġfunction Ġon ĠView . Ċ Ġ*/ Ċ fun ĠView . show Snackbar ( sn ackbar Text : ĠString , Ġtime Length : ĠInt ) Ġ{ ĊĠĠĠ ĠSn ackbar . make ( this , Ġsn ackbar Text , Ġtime Length ). run Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Callback ( object Ġ: ĠSn ackbar . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Shown ( sb : ĠSn ackbar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis missed ( transient Bottom Bar : ĠSn ackbar ?, Ġevent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠT riggers Ġa Ġsn ackbar Ġmessage Ġwhen Ġthe Ġvalue Ġcontained Ġby Ġsn ackbar Task Message Live Event Ġis Ġmodified . Ċ Ġ*/ Ċ fun ĠView . setup Snackbar ( ĊĠĠĠ Ġlifecycle Owner : ĠLifecycle Owner , ĊĠĠĠ Ġsn ackbar Event : ĠLive Data < Single Event < Any >>, ĊĠĠĠ Ġtime Length : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġsn ackbar Event . observe ( lifecycle Owner , Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġevent . getContent IfNot Handled ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar ( it , Ġtime Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar ( this . context . getString ( it ), Ġtime Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ }