Skip to content

Commit db3e051

Browse files
committed
store modal widget states
1 parent 0f6ecee commit db3e051

File tree

4 files changed

+34
-29
lines changed

4 files changed

+34
-29
lines changed

ghcjs/currency-converter/src/App/Types.hs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ import qualified Paths_app as Paths
4646
import qualified Text.URI as URI
4747

4848
data Model = Model
49-
{ modelFav :: OpenedOrClosed,
50-
modelMenu :: OpenedOrClosed,
51-
modelLinks :: OpenedOrClosed,
52-
modelLoading :: Bool,
49+
{ modelLoading :: Bool,
5350
modelState :: St Unique,
5451
modelMarket :: MVar Rates.Market,
5552
modelFavMap :: Map MisoString Fav,
@@ -100,6 +97,9 @@ data StDoc f = StDoc
10097
stDocTopOrBottom :: TopOrBottom,
10198
stDocPreFavName :: Field MisoString f,
10299
stDocFieldPairs :: [FieldPair DynamicField f],
100+
stDocFavModalState :: OpenedOrClosed,
101+
stDocMenuModalState :: OpenedOrClosed,
102+
stDocLinksModalState :: OpenedOrClosed,
103103
stDocOnlineOrOffline :: OnlineOrOffline,
104104
stDocCreatedAt :: UTCTime
105105
}
@@ -132,6 +132,9 @@ newStDoc = do
132132
stDocTopOrBottom = Top,
133133
stDocPreFavName = preFavName,
134134
stDocFieldPairs = mempty,
135+
stDocFavModalState = Closed,
136+
stDocMenuModalState = Closed,
137+
stDocLinksModalState = Closed,
135138
stDocOnlineOrOffline = Online,
136139
stDocCreatedAt = ct
137140
}

ghcjs/currency-converter/src/App/Widgets/Fav.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ import qualified Text.URI as URI
1818

1919
fav :: Model -> [View Action]
2020
fav st =
21-
if st ^. #modelFav == Closed
21+
if st ^. #modelState . #stDoc . #stDocFavModalState == Closed
2222
then mempty
2323
else
2424
[ Dialog.dialog
2525
( Dialog.config
2626
& Dialog.setOnClose closeAction
27-
& Dialog.setOpen (Opened == st ^. #modelFav)
27+
& Dialog.setOpen True
2828
)
2929
( Dialog.dialogContent
3030
Nothing
@@ -85,7 +85,8 @@ fav st =
8585
)
8686
]
8787
where
88-
closeAction = pureUpdate 0 (& #modelFav .~ Closed)
88+
closeAction =
89+
pureUpdate 0 (& #modelState . #stDoc . #stDocFavModalState .~ Closed)
8990
saveAction = PushUpdate $ do
9091
ct <- getCurrentTime
9192
pure . ChanItem 0 $ \nextSt ->
@@ -172,6 +173,6 @@ favItem st label Fav {favUri = uri} =
172173
next <- newModel (st ^. #modelWebOpts) (Just st) uri
173174
pure
174175
. ChanItem 0
175-
$ (#modelFav .~ Closed)
176-
. (#modelLoading .~ True)
176+
$ (#modelLoading .~ True)
177177
. (#modelState .~ modelState next)
178+
. (#modelState . #stDoc . #stDocFavModalState .~ Closed)

ghcjs/currency-converter/src/App/Widgets/Menu.hs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ menu st =
6464
& IconButton.setOnClick
6565
( pureUpdate 0 $ \next ->
6666
next
67-
& #modelFav
67+
& #modelState
68+
. #stDoc
69+
. #stDocFavModalState
6870
.~ Opened
6971
& #modelState
7072
. #stDoc
@@ -114,13 +116,13 @@ menu st =
114116
]
115117
]
116118
<> Fav.fav st
117-
<> if st ^. #modelMenu == Closed
119+
<> if st ^. #modelState . #stDoc . #stDocMenuModalState == Closed
118120
then mempty
119121
else
120122
[ Dialog.dialog
121123
( Dialog.config
122124
& Dialog.setOnClose closed
123-
& Dialog.setOpen (Opened == st ^. #modelMenu)
125+
& Dialog.setOpen True
124126
)
125127
( Dialog.dialogContent
126128
Nothing
@@ -277,13 +279,15 @@ menu st =
277279
)
278280
]
279281
where
280-
opened = pureUpdate 0 (& #modelMenu .~ Opened)
281-
closed = pureUpdate 0 (& #modelMenu .~ Closed)
282+
opened =
283+
pureUpdate 0 (& #modelState . #stDoc . #stDocMenuModalState .~ Opened)
284+
closed =
285+
pureUpdate 0 (& #modelState . #stDoc . #stDocMenuModalState .~ Closed)
282286
screen next =
283287
pureUpdate 0
284-
$ (& #modelMenu .~ Closed)
285-
. (& #modelLoading .~ isQrCode next)
288+
$ (& #modelLoading .~ isQrCode next)
286289
. (& #modelState . #stScreen .~ next)
290+
. (& #modelState . #stDoc . #stDocMenuModalState .~ Closed)
287291
sc =
288292
st ^. #modelState . #stScreen
289293
disabled =
@@ -338,13 +342,13 @@ linksWidget st =
338342
)
339343
"App"
340344
]
341-
<> ( if st ^. #modelLinks == Closed
345+
<> ( if st ^. #modelState . #stDoc . #stDocLinksModalState == Closed
342346
then mempty
343347
else
344348
[ Dialog.dialog
345349
( Dialog.config
346350
& Dialog.setOnClose closeWidget
347-
& Dialog.setOpen (Opened == st ^. #modelLinks)
351+
& Dialog.setOpen True
348352
)
349353
( Dialog.dialogContent
350354
Nothing
@@ -355,8 +359,8 @@ linksWidget st =
355359
mempty
356360
[ text
357361
"The Android app is in closed beta. To install it, join the ",
358-
Misc.browserLink testGroupLink "closed beta group",
359-
text " and then install the app from ",
362+
Misc.browserLink testGroupLink "closed beta",
363+
text " group and then install the app from ",
360364
Misc.browserLink googlePlayLink "Google Play",
361365
text ", or download the ",
362366
Misc.browserLink apkLink "APK file",
@@ -426,9 +430,7 @@ linksWidget st =
426430
doc <- liftIO Templates.newDonateDoc
427431
pure
428432
. ChanItem 0
429-
$ (& #modelMenu .~ Closed)
430-
. (& #modelLinks .~ Closed)
431-
. (& #modelLoading .~ True)
433+
$ (& #modelLoading .~ True)
432434
. (& #modelState . #stDoc .~ doc)
433435
)
434436
& Button.setAttributes
@@ -452,8 +454,10 @@ linksWidget st =
452454
]
453455
)
454456
where
455-
openWidget = pureUpdate 0 (& #modelLinks .~ Opened)
456-
closeWidget = pureUpdate 0 (& #modelLinks .~ Closed)
457+
openWidget =
458+
pureUpdate 0 (& #modelState . #stDoc . #stDocLinksModalState .~ Opened)
459+
closeWidget =
460+
pureUpdate 0 (& #modelState . #stDoc . #stDocLinksModalState .~ Closed)
457461
openBrowser =
458462
Misc.openBrowserPageAction
459463
. either impureThrow id

ghcjs/currency-converter/src/App/Widgets/Templates.hs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ newModel webOpts mSt uri = do
9898
mApp
9999
pure
100100
Model
101-
{ modelFav = Closed,
102-
modelMenu = Closed,
103-
modelLinks = Closed,
104-
modelLoading = True,
101+
{ modelLoading = True,
105102
modelState = st,
106103
modelMarket = market,
107104
modelFavMap = mempty,

0 commit comments

Comments
 (0)