/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠI ce Rock ĠMAG ĠInc . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ import Ġcom . icer ock dev . library . App Theme Ċ import Ġcom . icer ock dev . library . MR Ċ import Ġcom . icer ock dev . library . Shared Factory Ċ import Ġcom . icer ock dev . library . universal . Cart Screen Ċ import Ġcom . icer ock dev . library . universal . Login Screen Ċ import Ġcom . icer ock dev . library . universal . Login ViewModel Ċ import Ġcom . icer ock dev . library . universal . Platform Profile Screen Ċ import Ġcom . icer ock dev . library . universal . Product Screen Ċ import Ġcom . icer ock dev . library . universal . Products Screen Ċ import Ġcom . icer ock dev . library . universal . Profile Screen Ċ import Ġcom . icer ock dev . library . universal . Widgets Screen Ċ import Ġdev . icer ock . mo ko . graphics . Color Ċ import Ġdev . icer ock . mo ko . parcel ize . Parcelable Ċ import Ġdev . icer ock . mo ko . parcel ize . Parcel ize Ċ import Ġdev . icer ock . mo ko . resources . desc . desc Ċ import Ġdev . icer ock . mo ko . widgets . Button Widget Ċ import Ġdev . icer ock . mo ko . widgets . button Ċ import Ġdev . icer ock . mo ko . widgets . container Ċ import Ġdev . icer ock . mo ko . widgets . core . Theme Ċ import Ġdev . icer ock . mo ko . widgets . core . Value Ċ import Ġdev . icer ock . mo ko . widgets . flat . Flat Input View Factory Ċ import Ġdev . icer ock . mo ko . widgets . screen . Args Ċ import Ġdev . icer ock . mo ko . widgets . screen . Base Application Ċ import Ġdev . icer ock . mo ko . widgets . screen . Screen Desc Ċ import Ġdev . icer ock . mo ko . widgets . screen . Typed Screen Desc Ċ import Ġdev . icer ock . mo ko . widgets . screen . Widget Screen Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . Bottom Navigation Item Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . Bottom Navigation Screen Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . NavigationBar Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . Navigation Item Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . Navigation Screen Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . Result able Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . create Push Result Route Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . create Push Route Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . create Replace Route Ċ import Ġdev . icer ock . mo ko . widgets . screen . navigation . create Router Ċ import Ġdev . icer ock . mo ko . widgets . style . view . TextStyle Ċ import Ġdev . icer ock . mo ko . widgets . style . view . Widget Size Ċ Ċ class ĠApp () Ġ: ĠBase Application () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsetup (): ĠScreen Desc < Args . Empty > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Factory Ġ= ĠShared Factory () ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= ĠApp Theme . base Theme ĊĊĠĠĠĠĠĠĠ Ġval Ġlogin Theme Ġ= ĠTheme ( App Theme . login Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory [ Login Screen . Id . Email Input Id ] Ġ= ĠFlat Input View Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 x 1 6 1 7 1 AFF ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor ( 0 xF 5 F 5 F 5 FF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Screen Ġ= Ġregister Screen ( Main Bottom Navigation Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Router Ġ= Ġcreate Router () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcart Navigation Ġ= Ġregister Screen ( Navigation Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigation Router Ġ= Ġcreate Router () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Screen Ġ= Ġregister Screen ( Profile Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Profile Screen ( navigation Router . create Pop Route ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcart Screen Ġ= Ġregister Screen ( Cart Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCart Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Route Ġ= Ġnavigation Router . create Push Route ( profile Screen ) Ġ{ ĠProfile Screen . Arg ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCart Navigation Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Screen Ġ= Ġcart Screen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouter Ġ= Ġnavigation Router ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproducts Navigation Ġ= Ġregister Screen ( Navigation Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigation Router Ġ= Ġcreate Router () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Screen Ġ= Ġregister Screen ( Product Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProduct Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcart Route Ġ= Ġbottom Router . create Change Tab Route ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproducts Screen Ġ= Ġregister Screen ( Products Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProducts Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġtheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Route Ġ= Ġnavigation Router . create Push Route ( product Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProduct Screen . Args ( productId Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProducts Navigation Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Screen Ġ= Ġproducts Screen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouter Ġ= Ġnavigation Router ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidgets Screen Ġ= Ġregister Screen ( Widgets Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget s Screen ( shared Factory , Ġtheme , ĠApp Theme . Posts Collection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMain Bottom Navigation Screen ( bottom Router ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Products ". desc (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠMR . images . home _ black _ 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Desc Ġ= Ġproducts Navigation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Cart ". desc (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠMR . images . cart _ black _ 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Desc Ġ= Ġcart Navigation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Widgets ". desc (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠMR . images . stars _ black _ 1 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Desc Ġ= Ġwidgets Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġregister Screen ( Navigation Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrouter Ġ= Ġcreate Router () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Screen Ġ= Ġregister Screen ( Register Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Screen ( theme ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Screen Ġ= Ġregister Screen ( Login Screen :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġlogin Theme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Route Ġ= Ġrouter . create Replace Route ( main Screen ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Route Ġ= Ġrouter . create Push Result Route ( reg Screen ) Ġ{ Ġit . token Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĠLogin ViewModel ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoot Navigation Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Screen Ġ= Ġlogin Screen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouter Ġ= Ġrouter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRegister Screen ( ĊĠĠĠ Ġprivate Ġval Ġtheme : ĠTheme Ċ ) Ġ: ĠWidget Screen < Args . Empty >(), ĠResult able < Register Screen . Result >, ĠNavigation Item Ġ{ ĊĠĠĠ Ġoverride Ġval Ġnavigation Bar : ĠNavigation Bar Ġ= ĠNavigation Bar . Normal ( title Ġ= Ġ" Registration ". desc ()) ĊĊĠĠĠ Ġoverride Ġvar Ġscreen Result : ĠResult ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Content Widget () Ġ= Ġwith ( theme ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer ( size Ġ= ĠWidget Size . As Parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠWidget Size . Wrap Content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= ĠButton Widget . Content . Text ( Value . data (" set Ġresult ". desc ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Result Ġ= ĠResult (" my Ġresult ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġdata Ġclass ĠResult ( val Ġtoken : ĠString ) Ġ: ĠParcel able Ċ } Ċ Ċ // ĠTODO Ġrequired Ġfor ĠAndroid Ġside ... Ġshould Ġbe Ġre work ed Ġif Ġany Ġideas Ġwill Ġbe Ċ class ĠMain Bottom Navigation Screen ( ĊĠĠĠ Ġrouter : ĠRouter , ĊĠĠĠ Ġbuilder : ĠBottom Navigation Item . Builder . () Ġ-> ĠUnit Ċ ) Ġ: ĠBottom Navigation Screen ( router , Ġbuilder ), ĠNavigation Item Ġ{ ĊĠĠĠ Ġoverride Ġval Ġnavigation Bar : ĠNavigation Bar Ġ= ĠNavigation Bar . None Ċ } Ċ Ċ class ĠRoot Navigation Screen ( initial Screen : ĠTyped Screen Desc < Args . Empty , ĠLogin Screen >, Ġrouter : ĠRouter ) Ġ: ĊĠĠĠ ĠNavigation Screen < Login Screen >( initial Screen , Ġrouter ) Ċ Ċ class ĠProducts Navigation Screen ( initial Screen : ĠTyped Screen Desc < Args . Empty , ĠProducts Screen >, Ġrouter : ĠRouter ) Ġ: ĊĠĠĠ ĠNavigation Screen < Products Screen >( initial Screen , Ġrouter ) Ċ Ċ class ĠCart Navigation Screen ( initial Screen : ĠTyped Screen Desc < Args . Empty , ĠCart Screen >, Ġrouter : ĠRouter ) Ġ: ĊĠĠĠ ĠNavigation Screen < Cart Screen >( initial Screen , Ġrouter ) ĊĊ