Skip to content

Commit f0e6768

Browse files
committed
wip
1 parent 245039d commit f0e6768

File tree

7 files changed

+199
-168
lines changed

7 files changed

+199
-168
lines changed

ghcjs/delivery-calculator/delivery-calculator.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ common pkg
1919
App.I18n
2020
App.Jsm
2121
App.Types
22+
App.Widgets.AppLinks
2223
App.Widgets.Asset
2324
App.Widgets.Main
2425
App.Widgets.MarketLinks
2526
App.Widgets.Menu
2627
App.Widgets.PlaceOrder
2728
App.Widgets.RemoveOrder
29+
App.Widgets.ShareApp
2830
App.Widgets.Templates
2931
App.Xlsx
3032

ghcjs/delivery-calculator/src/App/Types.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ import qualified Text.URI as URI
6464
data Model = Model
6565
{ modelSink :: MVar (Action -> IO ()),
6666
modelMenu :: OpenedOrClosed,
67-
modelLinks :: OpenedOrClosed,
67+
modelAppLinks :: OpenedOrClosed,
68+
modelShareApp :: OpenedOrClosed,
6869
modelPlaceOrder :: OpenedOrClosed,
6970
modelRemoveOrder :: OpenedOrClosed,
7071
modelMarketLinks :: OpenedOrClosed,
@@ -497,7 +498,7 @@ setScreenPure :: Screen -> Update Model
497498
setScreenPure sc =
498499
PureUpdate
499500
$ (& #modelMenu .~ Closed)
500-
. (& #modelLinks .~ Closed)
501+
. (& #modelAppLinks .~ Closed)
501502
. (& #modelState . #stScreen .~ sc)
502503

503504
setScreenAction :: Screen -> Action
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
module App.Widgets.AppLinks (appLinks) where
2+
3+
import App.Types
4+
import qualified Functora.Miso.Jsm as Jsm
5+
import Functora.Miso.Prelude
6+
import qualified Functora.Miso.Widgets.BrowserLink as BrowserLink
7+
import qualified Functora.Miso.Widgets.Dialog as Dialog
8+
import qualified Functora.Miso.Widgets.Icon as Icon
9+
10+
appLinks :: Model -> [View Action]
11+
appLinks st =
12+
if not . null $ st ^. #modelState . #stAssets
13+
then mempty
14+
else
15+
[ button_
16+
[ onClick openWidget
17+
]
18+
[ icon Icon.IconGooglePlay,
19+
text " Google Play"
20+
]
21+
]
22+
<> Dialog.dialog
23+
( Dialog.defOpts
24+
& #optsTitle
25+
.~ Just ("Google Play" :: Unicode)
26+
& #optsFlexCol
27+
.~ False
28+
& #optsTitleIcon
29+
.~ Just Icon.IconGooglePlay
30+
)
31+
Dialog.Args
32+
{ Dialog.argsModel = st,
33+
Dialog.argsOptic = #modelAppLinks,
34+
Dialog.argsAction = PushUpdate,
35+
Dialog.argsContent =
36+
[ p_
37+
[ style_
38+
[ ("text-align", "start")
39+
]
40+
]
41+
[ text
42+
"The Android app is in closed beta. To install it, join the ",
43+
BrowserLink.browserLink
44+
BrowserLink.Args
45+
{ BrowserLink.argsLink = testGroupLink,
46+
BrowserLink.argsLabel = "closed beta",
47+
BrowserLink.argsAction = PushUpdate
48+
},
49+
text " group and then install the app from ",
50+
BrowserLink.browserLink
51+
BrowserLink.Args
52+
{ BrowserLink.argsLink = googlePlayLink,
53+
BrowserLink.argsLabel = "Google Play",
54+
BrowserLink.argsAction = PushUpdate
55+
},
56+
text ", or download the ",
57+
BrowserLink.browserLink
58+
BrowserLink.Args
59+
{ BrowserLink.argsLink = apkLink,
60+
BrowserLink.argsLabel = "APK file",
61+
BrowserLink.argsAction = PushUpdate
62+
},
63+
text " directly."
64+
],
65+
button_
66+
[ onClick $ openBrowser testGroupLink
67+
]
68+
[ icon Icon.IconGooglePlay,
69+
text " Join testing (closed beta)"
70+
],
71+
button_
72+
[ onClick $ openBrowser googlePlayLink
73+
]
74+
[ icon Icon.IconGooglePlay,
75+
text " Google Play (closed beta)"
76+
],
77+
button_
78+
[ onClick $ openBrowser apkLink
79+
]
80+
[ icon Icon.IconAndroid,
81+
text " Download APK"
82+
],
83+
button_
84+
[ onClick $ openBrowser sourceLink
85+
]
86+
[ icon Icon.IconGit,
87+
text " Source"
88+
],
89+
button_
90+
[ onClick $ openBrowser functoraLink
91+
]
92+
[ icon Icon.IconUser,
93+
text " Author"
94+
],
95+
button_
96+
[ onClick $ setScreenAction Donate
97+
]
98+
[ icon Icon.IconBitcoin,
99+
text " Donate"
100+
]
101+
]
102+
}
103+
where
104+
openWidget =
105+
PushUpdate
106+
. PureUpdate
107+
$ #modelAppLinks
108+
.~ Opened
109+
openBrowser =
110+
PushUpdate
111+
. EffectUpdate
112+
. Jsm.openBrowserPage

ghcjs/delivery-calculator/src/App/Widgets/Main.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
module App.Widgets.Main (mainWidget) where
22

33
import App.Types
4+
import qualified App.Widgets.AppLinks as AppLinks
45
import qualified App.Widgets.Asset as Asset
56
import qualified App.Widgets.MarketLinks as MarketLinks
67
import qualified App.Widgets.Menu as Menu
78
import qualified App.Widgets.PlaceOrder as PlaceOrder
89
import qualified App.Widgets.RemoveOrder as RemoveOrder
10+
import qualified App.Widgets.ShareApp as ShareApp
911
import Functora.Miso.Prelude
1012
import qualified Functora.Miso.Widgets.BrowserLink as BrowserLink
1113
import qualified Functora.Miso.Widgets.FieldPairs as FieldPairs
@@ -49,9 +51,7 @@ mainWidget st =
4951
)
5052
$ tosWidget
5153
: br_ mempty
52-
: Menu.qrButton st
53-
: Menu.linksWidget st
54-
<> MarketLinks.marketLinks st
54+
: MarketLinks.marketLinks st
5555
]
5656
<> ( if not $ st ^. #modelLoading
5757
then mempty
@@ -131,7 +131,7 @@ screenWidget st@Model {modelState = St {stScreen = Main}} =
131131
buttons =
132132
singleton
133133
. Flex.flexRowCenter
134-
section_
134+
main_
135135
( mappend
136136
[ style_
137137
[ ("margin-left", "0"),
@@ -153,7 +153,10 @@ screenWidget st@Model {modelState = St {stScreen = Main}} =
153153
text " Add item"
154154
]
155155
)
156-
: RemoveOrder.removeOrder st <> PlaceOrder.placeOrder st
156+
: ShareApp.shareApp st
157+
<> AppLinks.appLinks st
158+
<> RemoveOrder.removeOrder st
159+
<> PlaceOrder.placeOrder st
157160

158161
totalViewer :: Model -> [View Action]
159162
totalViewer st =

0 commit comments

Comments
 (0)