@@ -284,23 +284,32 @@ syncInputs st = do
284
284
285
285
evalModel :: (MonadThrow m , MonadUnliftIO m ) => Model -> m Model
286
286
evalModel raw = do
287
+ let oof = raw ^. # modelState . # stDoc . # stDocOnlineOrOffline
287
288
new <-
288
- Syb. everywhereM
289
- ( Syb. mkM $ \ cur ->
290
- Rates. withMarket (raw ^. # modelWebOpts) (raw ^. # modelMarket)
291
- . fmap (fromRight cur)
292
- . Rates. tryMarket
293
- . Rates. getCurrencyInfo (raw ^. # modelWebOpts)
294
- $ currencyInfoCode cur
295
- )
296
- ( raw ^. # modelState
297
- )
289
+ case oof of
290
+ Online ->
291
+ Syb. everywhereM
292
+ ( Syb. mkM $ \ cur ->
293
+ Rates. withMarket (raw ^. # modelWebOpts) (raw ^. # modelMarket)
294
+ . fmap (fromRight cur)
295
+ . Rates. tryMarket
296
+ . Rates. getCurrencyInfo (raw ^. # modelWebOpts)
297
+ $ currencyInfoCode cur
298
+ )
299
+ ( raw ^. # modelState
300
+ )
301
+ Offline ->
302
+ pure $ raw ^. # modelState
298
303
curs <-
299
- Rates. withMarket (raw ^. # modelWebOpts) (raw ^. # modelMarket)
300
- . fmap (fromRight $ raw ^. # modelCurrencies)
301
- . Rates. tryMarket
302
- . fmap (^. # currenciesList)
303
- $ Rates. getCurrencies (raw ^. # modelWebOpts)
304
+ case oof of
305
+ Online ->
306
+ Rates. withMarket (raw ^. # modelWebOpts) (raw ^. # modelMarket)
307
+ . fmap (fromRight $ raw ^. # modelCurrencies)
308
+ . Rates. tryMarket
309
+ . fmap (^. # currenciesList)
310
+ $ Rates. getCurrencies (raw ^. # modelWebOpts)
311
+ Offline ->
312
+ pure $ raw ^. # modelCurrencies
304
313
km <-
305
314
if (new ^. # stKm . # kmIkm . # unIkm == mempty )
306
315
&& (new ^. # stIkm . # fieldOutput == mempty )
@@ -335,50 +344,54 @@ evalModel raw = do
335
344
case baseAmtResult of
336
345
Left {} -> pure st
337
346
Right baseAmt ->
338
- Rates. withMarket (st ^. # modelWebOpts) (st ^. # modelMarket) $ do
339
- let funds =
340
- Funds
341
- baseAmt
347
+ case oof of
348
+ Offline ->
349
+ pure st
350
+ Online ->
351
+ Rates. withMarket (st ^. # modelWebOpts) (st ^. # modelMarket) $ do
352
+ let funds =
353
+ Funds
354
+ baseAmt
355
+ $ st
356
+ ^. cloneLens baseLens
357
+ . # moneyCurrency
358
+ . # currencyOutput
359
+ . # currencyInfoCode
360
+ quote <-
361
+ Rates. getQuote (st ^. # modelWebOpts) funds
342
362
$ st
343
- ^. cloneLens baseLens
363
+ ^. cloneLens quoteLens
344
364
. # moneyCurrency
345
365
. # currencyOutput
346
366
. # currencyInfoCode
347
- quote <-
348
- Rates. getQuote (st ^. # modelWebOpts) funds
349
- $ st
350
- ^. cloneLens quoteLens
351
- . # moneyCurrency
352
- . # currencyOutput
353
- . # currencyInfoCode
354
- let quoteAmt = quote ^. # quoteMoneyAmount
355
- ct <- getCurrentTime
356
- pure
357
- $ st
358
- & cloneLens baseLens
359
- . # moneyAmount
360
- . # fieldInput
361
- . # uniqueValue
362
- .~ baseAmtInput
363
- & cloneLens baseLens
364
- . # moneyAmount
365
- . # fieldOutput
366
- .~ unTagged baseAmt
367
- & cloneLens quoteLens
368
- . # moneyAmount
369
- . # fieldInput
370
- . # uniqueValue
371
- .~ inspectRatioDef (unTagged quoteAmt)
372
- & cloneLens quoteLens
373
- . # moneyAmount
374
- . # fieldOutput
375
- .~ unTagged quoteAmt
376
- & # modelState
377
- . # stDoc
378
- . # stDocCreatedAt
379
- .~ (quote ^. # quoteCreatedAt)
380
- & # modelOnlineAt
381
- .~ ct
367
+ let quoteAmt = quote ^. # quoteMoneyAmount
368
+ ct <- getCurrentTime
369
+ pure
370
+ $ st
371
+ & cloneLens baseLens
372
+ . # moneyAmount
373
+ . # fieldInput
374
+ . # uniqueValue
375
+ .~ baseAmtInput
376
+ & cloneLens baseLens
377
+ . # moneyAmount
378
+ . # fieldOutput
379
+ .~ unTagged baseAmt
380
+ & cloneLens quoteLens
381
+ . # moneyAmount
382
+ . # fieldInput
383
+ . # uniqueValue
384
+ .~ inspectRatioDef (unTagged quoteAmt)
385
+ & cloneLens quoteLens
386
+ . # moneyAmount
387
+ . # fieldOutput
388
+ .~ unTagged quoteAmt
389
+ & # modelState
390
+ . # stDoc
391
+ . # stDocCreatedAt
392
+ .~ (quote ^. # quoteCreatedAt)
393
+ & # modelOnlineAt
394
+ .~ ct
382
395
383
396
getBaseConverterMoneyLens :: TopOrBottom -> ALens' Model (Money Unique )
384
397
getBaseConverterMoneyLens = \ case
0 commit comments