@@ -13,7 +13,6 @@ import qualified Functora.Miso.Widgets.BrowserLink as BrowserLink
13
13
import qualified Functora.Miso.Widgets.Currency as Currency
14
14
import qualified Functora.Miso.Widgets.Dialog as Dialog
15
15
import qualified Functora.Miso.Widgets.Field as Field
16
- import qualified Functora.Miso.Widgets.Grid as Grid
17
16
import qualified Functora.Miso.Widgets.Icon as Icon
18
17
import qualified Functora.Miso.Widgets.Select as Select
19
18
import qualified Functora.Money as Money
@@ -156,122 +155,112 @@ menu st =
156
155
Currency. argsCurrencies =
157
156
# modelCurrencies
158
157
},
159
- Grid. mediumCell
160
- [ span_ mempty [text " Exchange rate" ],
161
- Select. select
162
- Select. defOpts
163
- Select. Args
164
- { Select. argsModel =
165
- st,
166
- Select. argsOptic =
167
- # modelState . # stOnlineOrOffline,
168
- Select. argsAction =
169
- PushUpdate . Instant ,
170
- Select. argsOptions =
171
- constTraversal $ enumerate @ OnlineOrOffline
172
- }
173
- ],
174
- Grid. mediumCell
175
- [ Field. ratioField
176
- Field. Args
177
- { Field. argsModel = st,
178
- Field. argsOptic =
179
- # modelState . # stExchangeRate,
180
- Field. argsAction =
181
- PushUpdate . Instant ,
182
- Field. argsEmitter =
183
- pushActionQueue st . Instant
184
- }
185
- ( let disabled =
186
- st
187
- ^. # modelState
188
- . # stOnlineOrOffline
189
- == Online
190
- in Field. defOpts @ Model @ Action
191
- & # optsDisabled
192
- .~ disabled
193
- & # optsPlaceholder
194
- .~ ( " 1 "
195
- <> toUpper
196
- ( Money. inspectCurrencyCode
197
- $ st
198
- ^. # modelState
199
- . # stAssetCurrency
200
- . # currencyOutput
201
- . # currencyInfoCode
202
- )
203
- <> " \8776 X "
204
- <> toUpper
205
- ( Money. inspectCurrencyCode
206
- $ st
207
- ^. # modelState
208
- . # stMerchantCurrency
209
- . # currencyOutput
210
- . # currencyInfoCode
211
- )
212
- )
213
- & ( if disabled
214
- then # optsTrailingWidget .~ Nothing
215
- else id
216
- )
217
- )
218
- ],
219
- Grid. mediumCell
220
- [ Field. dynamicField
221
- Field. Args
222
- { Field. argsModel = st,
223
- Field. argsOptic =
224
- # modelState . # stMerchantFeePercent,
225
- Field. argsAction =
226
- PushUpdate . Instant ,
227
- Field. argsEmitter =
228
- pushActionQueue st . Instant
229
- }
230
- ( Field. defOpts
231
- & # optsPlaceholder
232
- .~ (" Merchant fee %" :: Unicode )
233
- )
234
- ],
235
- Grid. mediumCell
236
- [ Field. textField
237
- Field. Args
238
- { Field. argsModel = st,
239
- Field. argsOptic = # modelState . # stMerchantTele,
240
- Field. argsAction = PushUpdate . Instant ,
241
- Field. argsEmitter = pushActionQueue st . Instant
242
- }
243
- ( Field. defOpts
244
- & # optsPlaceholder
245
- .~ (" Merchant telegram" :: Unicode )
246
- )
247
- ],
248
- Grid. mediumCell
249
- [ Field. textField
250
- Field. Args
251
- { Field. argsModel = st,
252
- Field. argsOptic = # modelState . # stPreview,
253
- Field. argsAction = PushUpdate . Instant ,
254
- Field. argsEmitter = pushActionQueue st . Instant
255
- }
256
- ( Field. defOpts @ Model @ Action
158
+ Select. select
159
+ ( Select. defOpts
160
+ & # optsLabel
161
+ .~ Just " Exchange rate"
162
+ )
163
+ Select. Args
164
+ { Select. argsModel =
165
+ st,
166
+ Select. argsOptic =
167
+ # modelState . # stOnlineOrOffline,
168
+ Select. argsAction =
169
+ PushUpdate . Instant ,
170
+ Select. argsOptions =
171
+ constTraversal $ enumerate @ OnlineOrOffline
172
+ },
173
+ Field. ratioField
174
+ Field. Args
175
+ { Field. argsModel = st,
176
+ Field. argsOptic =
177
+ # modelState . # stExchangeRate,
178
+ Field. argsAction =
179
+ PushUpdate . Instant ,
180
+ Field. argsEmitter =
181
+ pushActionQueue st . Instant
182
+ }
183
+ ( let disabled =
184
+ st
185
+ ^. # modelState
186
+ . # stOnlineOrOffline
187
+ == Online
188
+ in Field. defOpts @ Model @ Action
189
+ & # optsDisabled
190
+ .~ disabled
257
191
& # optsPlaceholder
258
- .~ (" QR title" :: Unicode )
259
- )
260
- ],
261
- Grid. mediumCell
262
- [ button_
263
- [ Css. fullWidth,
264
- onClick
265
- . screen
266
- $ if isQrCode sc
267
- then Main
268
- else QrCode sc
269
- ]
270
- [ text
271
- $ if isQrCode sc
272
- then " Delivery Calculator"
273
- else " QR"
274
- ]
192
+ .~ ( " 1 "
193
+ <> toUpper
194
+ ( Money. inspectCurrencyCode
195
+ $ st
196
+ ^. # modelState
197
+ . # stAssetCurrency
198
+ . # currencyOutput
199
+ . # currencyInfoCode
200
+ )
201
+ <> " \8776 X "
202
+ <> toUpper
203
+ ( Money. inspectCurrencyCode
204
+ $ st
205
+ ^. # modelState
206
+ . # stMerchantCurrency
207
+ . # currencyOutput
208
+ . # currencyInfoCode
209
+ )
210
+ )
211
+ & ( if disabled
212
+ then # optsTrailingWidget .~ Nothing
213
+ else id
214
+ )
215
+ ),
216
+ Field. dynamicField
217
+ Field. Args
218
+ { Field. argsModel = st,
219
+ Field. argsOptic =
220
+ # modelState . # stMerchantFeePercent,
221
+ Field. argsAction =
222
+ PushUpdate . Instant ,
223
+ Field. argsEmitter =
224
+ pushActionQueue st . Instant
225
+ }
226
+ ( Field. defOpts
227
+ & # optsPlaceholder
228
+ .~ (" Merchant fee %" :: Unicode )
229
+ ),
230
+ Field. textField
231
+ Field. Args
232
+ { Field. argsModel = st,
233
+ Field. argsOptic = # modelState . # stMerchantTele,
234
+ Field. argsAction = PushUpdate . Instant ,
235
+ Field. argsEmitter = pushActionQueue st . Instant
236
+ }
237
+ ( Field. defOpts
238
+ & # optsPlaceholder
239
+ .~ (" Merchant telegram" :: Unicode )
240
+ ),
241
+ Field. textField
242
+ Field. Args
243
+ { Field. argsModel = st,
244
+ Field. argsOptic = # modelState . # stPreview,
245
+ Field. argsAction = PushUpdate . Instant ,
246
+ Field. argsEmitter = pushActionQueue st . Instant
247
+ }
248
+ ( Field. defOpts @ Model @ Action
249
+ & # optsPlaceholder
250
+ .~ (" QR title" :: Unicode )
251
+ ),
252
+ button_
253
+ [ Css. fullWidth,
254
+ onClick
255
+ . screen
256
+ $ if isQrCode sc
257
+ then Main
258
+ else QrCode sc
259
+ ]
260
+ [ text
261
+ $ if isQrCode sc
262
+ then " Delivery Calculator"
263
+ else " QR"
275
264
]
276
265
]
277
266
<> linksWidget st
@@ -289,13 +278,11 @@ menu st =
289
278
290
279
linksWidget :: Model -> [View Action ]
291
280
linksWidget st =
292
- [ Grid. bigCell
293
- [ button_
294
- [ onClick openWidget,
295
- Css. fullWidth
296
- ]
297
- [ text " App"
298
- ]
281
+ [ button_
282
+ [ onClick openWidget,
283
+ Css. fullWidth
284
+ ]
285
+ [ text " App"
299
286
]
300
287
]
301
288
<> Dialog. dialog
@@ -305,84 +292,70 @@ linksWidget st =
305
292
Dialog. argsOptic = # modelLinks,
306
293
Dialog. argsAction = PushUpdate . Instant ,
307
294
Dialog. argsContent =
308
- [ Grid. bigCell
309
- [ text
310
- " The Android app is in closed beta. To install it, join the " ,
311
- BrowserLink. browserLink
312
- BrowserLink. Args
313
- { BrowserLink. argsLink = testGroupLink,
314
- BrowserLink. argsLabel = " closed beta" ,
315
- BrowserLink. argsAction =
316
- PushUpdate
317
- . Instant
318
- },
319
- text " group and then install the app from " ,
320
- BrowserLink. browserLink
321
- BrowserLink. Args
322
- { BrowserLink. argsLink = googlePlayLink,
323
- BrowserLink. argsLabel = " Google Play" ,
324
- BrowserLink. argsAction =
325
- PushUpdate
326
- . Instant
327
- },
328
- text " , or download the " ,
329
- BrowserLink. browserLink
330
- BrowserLink. Args
331
- { BrowserLink. argsLink = apkLink,
332
- BrowserLink. argsLabel = " APK file" ,
333
- BrowserLink. argsAction =
334
- PushUpdate
335
- . Instant
336
- },
337
- text " directly."
338
- ],
339
- Grid. mediumCell
340
- [ button_
341
- [ onClick $ openBrowser testGroupLink,
342
- Css. fullWidth
343
- ]
344
- [ text " Join testing (closed beta)"
345
- ]
295
+ [ text
296
+ " The Android app is in closed beta. To install it, join the " ,
297
+ BrowserLink. browserLink
298
+ BrowserLink. Args
299
+ { BrowserLink. argsLink = testGroupLink,
300
+ BrowserLink. argsLabel = " closed beta" ,
301
+ BrowserLink. argsAction =
302
+ PushUpdate
303
+ . Instant
304
+ },
305
+ text " group and then install the app from " ,
306
+ BrowserLink. browserLink
307
+ BrowserLink. Args
308
+ { BrowserLink. argsLink = googlePlayLink,
309
+ BrowserLink. argsLabel = " Google Play" ,
310
+ BrowserLink. argsAction =
311
+ PushUpdate
312
+ . Instant
313
+ },
314
+ text " , or download the " ,
315
+ BrowserLink. browserLink
316
+ BrowserLink. Args
317
+ { BrowserLink. argsLink = apkLink,
318
+ BrowserLink. argsLabel = " APK file" ,
319
+ BrowserLink. argsAction =
320
+ PushUpdate
321
+ . Instant
322
+ },
323
+ text " directly." ,
324
+ button_
325
+ [ onClick $ openBrowser testGroupLink,
326
+ Css. fullWidth
327
+ ]
328
+ [ text " Join testing (closed beta)"
346
329
],
347
- Grid. mediumCell
348
- [ button_
349
- [ onClick $ openBrowser googlePlayLink,
350
- Css. fullWidth
351
- ]
352
- [ text " Google Play (closed beta)"
353
- ]
330
+ button_
331
+ [ onClick $ openBrowser googlePlayLink,
332
+ Css. fullWidth
333
+ ]
334
+ [ text " Google Play (closed beta)"
354
335
],
355
- Grid. mediumCell
356
- [ button_
357
- [ onClick $ openBrowser apkLink,
358
- Css. fullWidth
359
- ]
360
- [ text " Download APK"
361
- ]
336
+ button_
337
+ [ onClick $ openBrowser apkLink,
338
+ Css. fullWidth
339
+ ]
340
+ [ text " Download APK"
362
341
],
363
- Grid. mediumCell
364
- [ button_
365
- [ onClick $ openBrowser sourceLink,
366
- Css. fullWidth
367
- ]
368
- [ text " Source"
369
- ]
342
+ button_
343
+ [ onClick $ openBrowser sourceLink,
344
+ Css. fullWidth
345
+ ]
346
+ [ text " Source"
370
347
],
371
- Grid. mediumCell
372
- [ button_
373
- [ onClick $ openBrowser functoraLink,
374
- Css. fullWidth
375
- ]
376
- [ text " Author"
377
- ]
348
+ button_
349
+ [ onClick $ openBrowser functoraLink,
350
+ Css. fullWidth
351
+ ]
352
+ [ text " Author"
378
353
],
379
- Grid. mediumCell
380
- [ button_
381
- [ onClick $ setScreenAction Donate ,
382
- Css. fullWidth
383
- ]
384
- [ text " Donate"
385
- ]
354
+ button_
355
+ [ onClick $ setScreenAction Donate ,
356
+ Css. fullWidth
357
+ ]
358
+ [ text " Donate"
386
359
]
387
360
]
388
361
}
0 commit comments