package Ġorg . step ik . android . view . lesson _ demo . ui . dialog Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġcom . google . firebase . remote config . Firebase Remote Config Ċ import Ġcom . google . firebase . remote config . k tx . get Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ dialog _ lesson _ demo _ complete .* Ċ import Ġkotlinx . android . synt hetic . main . error _ no _ connection _ with _ button _ small .* Ċ import Ġorg . step ic . d roid . R Ċ import Ġorg . step ic . d roid . base . App Ċ import Ġorg . step ic . d roid . configuration . Remote Config Ċ import Ġorg . step ic . d roid . core . Screen Manager Ċ import Ġorg . step ik . android . domain . course . an alytic . Course View Source Ċ import Ġorg . step ik . android . domain . course _ payments . model . Dee plink Promo Code Ċ import Ġorg . step ik . android . domain . course _ payments . model . Default Promo Code Ċ import Ġorg . step ik . android . domain . course _ purchase . an alytic . Course Purchase Source Ċ import Ġorg . step ik . android . domain . course _ purchase . model . Course Purchase Flow Ċ import Ġorg . step ik . android . model . Course Ċ import Ġorg . step ik . android . presentation . course _ purchase . model . Course Purchase Data Ċ import Ġorg . step ik . android . presentation . lesson _ demo . Lesson Demo Feature Ċ import Ġorg . step ik . android . presentation . lesson _ demo . Lesson Demo ViewModel Ċ import Ġorg . step ik . android . presentation . wishlist . Wish list Operation Feature Ċ import Ġorg . step ik . android . view . course . mapper . Display Price Mapper Ċ import Ġorg . step ik . android . view . course . resolver . Course Promo Code Resolver Ċ import Ġorg . step ik . android . view . course . routing . Course Screen Tab Ċ import Ġorg . step ik . android . view . course _ purchase . delegate . Wish list View Delegate Ċ import Ġorg . step ik . android . view . course _ purchase . ui . dialog . Course Purchase Bottom Sheet Dialog Fragment Ċ import Ġru . nob ird . app . presentation . redux . container . Redux View Ċ import Ġru . nob ird . android . view . base . ui . delegate . ViewState Delegate Ċ import Ġru . nob ird . android . view . base . ui . extension . argument Ċ import Ġru . nob ird . android . view . base . ui . extension . show IfNot Exists Ċ import Ġru . nob ird . android . view . redux . ui . extension . redux ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠLess on Demo Complete Bottom Sheet Dialog Fragment Ġ: ĊĠĠĠ ĠBottom Sheet Dialog Fragment (), ĊĠĠĠ ĠCourse Purchase Bottom Sheet Dialog Fragment . Callback , ĊĠĠĠ ĠRedux View < Lesson Demo Feature . State , ĠLess on Demo Feature . Action . View Action > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Lesson Demo Complete Bottom Sheet Dialog " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( course : ĠCourse ): ĠDialog Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLess on Demo Complete Bottom Sheet Dialog Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . course Ġ= Ġcourse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcourse : ĠCourse Ġby Ġargument () ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġscreen Manager : ĠScreen Manager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġdisplay Price Mapper : ĠDisplay Price Mapper ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġcourse Promo Code Resolver : ĠCourse Promo Code Resolver ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġfirebase Remote Config : ĠFirebase Remote Config ĊĊĠĠĠ Ġprivate Ġval Ġlesson Demo ViewModel : ĠLess on Demo ViewModel Ġby Ġredux ViewModel ( this ) Ġ{ ĠviewModel Factory Ġ} ĊĠĠĠ Ġprivate Ġval Ġview State Delegate Ġ= ĠView State Delegate < Lesson Demo Feature . Lesson Demo State >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwish list View Delegate : ĠW ish list View Delegate ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠApp . component Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. course Component ( course . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. lesson Demo Presentation Component Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. course ( course ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠĠĠĠĠ Ġset Style ( Dialog Fragment . STYLE _ NO _ TITLE , ĠR . style . Top C orners Rounded Bottom Sheet Dialog ) ĊĠĠĠĠĠĠĠ Ġlesson Demo ViewModel . on New Message ( Lesson Demo Feature . Message . Init Message ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ= ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . bottom _ sheet _ dialog _ lesson _ demo _ complete , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ( dialog Ġas ? ĠBottom Sheet Dialog )?. behavior ?. state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit ViewState Delegate () ĊĠĠĠĠĠĠĠ Ġwish list View Delegate Ġ= ĠW ish list View Delegate ( demo Wish list Action ) ĊĠĠĠĠĠĠĠ Ġdemo Complete Title . text Ġ= ĠgetString ( R . string . demo _ complete _ title , Ġcourse . title ) ĊĠĠĠĠĠĠĠ Ġdemo Complete Action . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlesson Demo ViewModel . on New Message ( Lesson Demo Feature . Message . Buy Action Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdemo Wish list Action . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlesson Demo ViewModel . on New Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLess on Demo Feature . Message . Wish list Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW ish list Operation Feature . Message . Wish list Add Message ( course , ĠCourse View Source . Lesson Demo Dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Again . setOnClickListener Ġ{ Ġlesson Demo ViewModel . on New Message ( Lesson Demo Feature . Message . Init Message ( force Update Ġ= Ġtrue )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action ( action : ĠLess on Demo Feature . Action . View Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġis ĠLess on Demo Feature . Action . View Action . Buy Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Flow Ġ= ĠCourse Purchase Flow . valueOf With Fallback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Remote Config [ Remote Config . PUR CH ASE _ FLOW _ ANDROID ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uppercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisIn App Active Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Flow . isIn App Active () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn App Active Ġ&& Ġaction . course Purchase Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCourse Purchase Bottom Sheet Dialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newInstance ( action . course Purchase Data , ĠCourse Purchase Source . DEMO _ LESS ON _ DIALOG _ SOURCE , Ġis Need Restore Message Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show IfNot Exists ( child FragmentManager , ĠCourse Purchase Bottom Sheet Dialog Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Manager . show Course Purchase From Lesson Demo Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCourse View Source . Lesson Demo Dialog , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCourse Screen Tab . INFO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction . dee plink Promo Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( state : ĠLess on Demo Feature . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview State Delegate . switch State ( state . lesson Demo State ) ĊĠĠĠĠĠĠĠ Ġwish list View Delegate . render ( state . wishlist Operation State , Ġmust Enable Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( state . lesson Demo State Ġis ĠLess on Demo Feature . Lesson Demo State . Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . lesson Demo State . course Purchase Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup I AP ( state . lesson Demo State . course Purchase Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Web ( state . lesson Demo State . dee plink Promo Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . component Manager (). release Course Component ( course . id ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewState Delegate () Ġ{ ĊĠĠĠĠĠĠĠ Ġview State Delegate . add State < Lesson Demo Feature . Lesson Demo State . Idle >() ĊĠĠĠĠĠĠĠ Ġview State Delegate . add State < Lesson Demo Feature . Lesson Demo State . Loading >( demo Complete Progress bar ) ĊĠĠĠĠĠĠĠ Ġview State Delegate . add State < Lesson Demo Feature . Lesson Demo State . Error >( demo Complete Network Error ) ĊĠĠĠĠĠĠĠ Ġview State Delegate . add State < Lesson Demo Feature . Lesson Demo State . Unavailable >( demo Complete Content , Ġdemo Complete Title , Ġdemo Purchase Unavailable , Ġdemo Wish list Action ) ĊĠĠĠĠĠĠĠ Ġview State Delegate . add State < Lesson Demo Feature . Lesson Demo State . Content >( demo Complete Content , Ġdemo Complete Title , Ġdemo Complete Info , Ġdemo Complete Divider , Ġdemo Complete Action , Ġdemo Wish list Action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Web ( dee plink Promo Code : ĠDee plink Promo Code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Display Price Ġ= Ġcourse . display Price ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġcurrency Code , Ġprom o Price , Ġhas Promo ) Ġ= Ġcourse Promo Code Resolver . resolve Promo Code Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdee plink Promo Code , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Promo Code ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . default Promo Code Name Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . default Promo Code Price Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . default Promo Code Discount Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . default Promo Code Expire Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdemo Complete Action . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course Display Price Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Promo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Price Mapper . map To Discount ed Display Price Sp anned String ( course Display Price , Ġprom o Price , Ġcurrency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . course _ payments _ purchase _ in _ web _ with _ price , Ġcourse Display Price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . course _ payments _ purchase _ in _ web ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup I AP ( course Purchase Data : ĠCourse Purchase Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse Display Price Ġ= Ġcourse Purchase Data . course . display Price ĊĠĠĠĠĠĠĠ Ġdemo Complete Action . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course Display Price Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course Purchase Data . promo Code Sku . light Sku Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Price Mapper . map To Discount ed Display Price Sp anned String ( course Purchase Data . primary Sku . price , Ġcourse Purchase Data . promo Code Sku . light Sku . price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . course _ payments _ purchase _ in _ web _ with _ price , Ġcourse Purchase Data . primary Sku . price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . course _ payments _ purchase _ in _ web ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontinue Learning () Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen Manager . show Course After Purchase ( require Context (), Ġcourse , ĠCourse View Source . Lesson Demo Dialog , ĠCourse Screen Tab . INFO ) ĊĠĠĠ Ġ} Ċ }