/* Ċ Ġ* ĠCreated Ġby Ġel ie k Ġon Ġ 2 / 1 3 / 2 0 2 1 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġel ie kar ou z . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġcom . feedback tree . tutorials . flows . mod als Ċ Ċ import Ġcom . feedback tree . flow . core . Flow Ċ import Ġcom . feedback tree . flow . core . advance Ċ import Ġcom . feedback tree . flow . core . end Flow Ċ import Ġcom . feedback tree . flow . ui . core . mod als .* Ċ import Ġcom . feedback tree . tutorials . flows . login . Login Flow Ċ Ċ val ĠMod als Flow Ġ= ĠFlow < Unit , ĠState , ĠEvent , ĠUnit , ĠModal Container Screen < *, Ġ* >>( ĊĠĠĠ ĠinitialState Ġ= Ġ{ ĠState . Idle Ġ}, ĊĠĠĠ Ġstep per Ġ= Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Show Alert Clicked Ġ-> ĠState . Showing Alert Modal . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Show Alert With Custom View Clicked Ġ-> ĠState . Showing Alert Modal With Custom View . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Show FullScreen Modal Clicked Ġ-> ĠState . Showing FullScreen Modal . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Show Custom Size Modal Clicked Ġ-> ĠState . Showing Custom Size Modal . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEvent . Dismiss Alert Ġ-> ĠState . Idle . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . FullScreen Flow Completed Ġ-> ĠState . Idle . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Back Clicked Ġ-> Ġend Flow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ Ġfeedback s Ġ= ĠlistOf (), ĊĠĠĠ Ġrender Ġ= Ġ{ Ġstate , Ġcontext Ġ-> ĊĠĠĠĠĠĠĠ ĠModal Container Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Screen Ġ= ĠMod als Screen ( sink Ġ= Ġcontext . sink ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodal Ġ= Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Idle Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Showing Alert Modal Ġ-> ĠAlert Modal ( context . sink ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" CO VID ĠScreen ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Do Ġyou Ġhave Ġf ever ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive (" Yes ", ĠEvent . Dismiss Alert (" Yes ĠClick ed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative (" No ", ĠEvent . Dismiss Alert (" No ĠClick ed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Event Ġ= ĠEvent . Dismiss Alert (" Back Clicked ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Showing Alert Modal With Custom View Ġ-> ĠAlert Modal ( context . sink ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" CO VID ĠInfo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive (" Dismiss ", ĠEvent . Dismiss Alert (" Dismiss ĠClick ed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Screen Ġ= ĠC ov id Info Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Event Ġ= ĠEvent . Dismiss Alert (" Back Clicked ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Showing FullScreen Modal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Screen Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . render Child ( input Ġ= Ġ"", Ġflow Ġ= ĠLogin Flow , Ġon Result Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Event ( Event . FullScreen Flow Completed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWrap Ġthe Ġscreen Ġproduced Ġby Ġthe ĠLogin Flow Ġin Ġa ĠFull Screen Modal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFull Screen Modal ( content Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Showing Custom Size Modal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Screen Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . render Child ( input Ġ= Ġ"", Ġflow Ġ= ĠLogin Flow , Ġon Result Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Event ( Event . FullScreen Flow Completed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Modal ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Screen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Layout Ġ= ĠLayout . Percentage ( 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Layout Ġ= ĠLayout . Percentage ( 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ ) ĊĊ Ċ enum Ġclass ĠState Ġ{ ĊĠĠĠ ĠId le , ĊĠĠĠ ĠShow ing Alert Modal , ĊĠĠĠ ĠShow ing Alert Modal With Custom View , ĊĠĠĠ ĠShow ing FullScreen Modal , ĊĠĠĠ ĠShow ing Custom Size Modal Ċ } Ċ Ċ sealed Ġclass ĠEvent Ġ{ ĊĠĠĠ Ġobject ĠShow Alert Clicked Ġ: ĠEvent () ĊĠĠĠ Ġobject ĠShow Alert With Custom View Clicked Ġ: ĠEvent () ĊĠĠĠ Ġobject ĠShow FullScreen Modal Clicked Ġ: ĠEvent () ĊĠĠĠ Ġobject ĠShow Custom Size Modal Clicked Ġ: ĠEvent () ĊĊĠĠĠ Ġdata Ġclass ĠDis miss Alert ( val Ġaction : ĠString ) Ġ: ĠEvent () ĊĊĠĠĠ Ġobject ĠFull Screen Flow Completed Ġ: ĠEvent () ĊĠĠĠ Ġobject ĠBack Clicked Ġ: ĠEvent () Ċ } Ċ Ċ data Ġclass ĠMod als Screen ( ĊĠĠĠ Ġval Ġsink : Ġ( Event ) Ġ-> ĠUnit Ċ )