package Ġcom . b _ lam . resp l ash . ui . aut ow all paper . collections Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . do On TextChanged Ċ import Ġcom . b _ lam . resp l ash . R Ċ import Ġcom . b _ lam . resp l ash . util . Result Ċ import Ġcom . b _ lam . resp l ash . util . li ved ata . observe Event Ċ import Ġcom . b _ lam . resp l ash . util . toast Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ add _ auto _ wall paper _ collection .* Ċ import Ġorg . k oin . android x . view model . ext . android . shared ViewModel Ċ Ċ class ĠAdd Auto Wall paper Collection Bottom Sheet Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġshared ViewModel : ĠAuto Wall paper Collection ViewModel Ġby Ġshared ViewModel () ĊĊĠĠĠ Ġprivate Ġval Ġurl Regex Ġ= Ġ""" https :// unsplash . com / collections / (\ d + ). * """. to Regex () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Dialog Ġ= Ġsuper . onCreate Dialog ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbottom Sheet Dialog . setOn Show Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= Ġbottom Sheet Dialog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findViewById < Frame Layout >( com . google . android . material . R . id . design _ bottom _ sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . from ( bottom Sheet ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip Collapsed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbottom Sheet Dialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . bottom _ sheet _ add _ auto _ wall paper _ collection , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcollection _ url _ text _ input _ layout . edit Text ?. do On TextChanged Ġ{ Ġurl , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisValid Ġ= Ġis Collection Url Valid ( url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ collection _ button . isEnabled Ġ= ĠisValid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection _ url _ text _ input _ layout . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . isNull Or Blank () Ġ|| ĠisValid ) Ġnull Ġelse ĠgetString ( R . string . auto _ wall paper _ invalid _ url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd _ collection _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ bar . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ collection _ button . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġextract Collection Id From Url ( collection _ url _ text _ input _ layout . edit Text ?. text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ?. let Ġ{ Ġshared ViewModel . get Collection Details And Add ( id ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . add Collection Result LiveData . observe Event ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ! is ĠResult . Success ) Ġ{ Ġcontext ?. toast ( R . string . auto _ wall paper _ could _ not _ add _ collection ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Collection Url Valid ( url : ĠString ) Ġ= Ġurl Regex Ġmatches Ġurl ĊĊĠĠĠ Ġprivate Ġfun Ġextract Collection Id From Url ( url : ĠString ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl Regex . find ( url )?. de structured ?. let Ġ{ Ġ( id ) Ġ-> Ġid . toInt () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠAdd Auto Wall paper Collection Bottom Sheet :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠAdd Auto Wall paper Collection Bottom Sheet () ĊĠĠĠ Ġ} Ċ } Ċ