@@ -6,20 +6,20 @@ module App.Types
6
6
Action (.. ),
7
7
St (.. ),
8
8
StDoc (.. ),
9
- StExt ( .. ) ,
9
+ newStDoc ,
10
10
Screen (.. ),
11
11
isQrCode ,
12
12
unQrCode ,
13
13
pureUpdate ,
14
14
unShareUri ,
15
15
stUri ,
16
- stExtUri ,
17
16
baseUri ,
18
17
setScreenPure ,
19
18
setScreenAction ,
20
- setExtScreenAction ,
21
19
shareLink ,
22
20
vsn ,
21
+ usd ,
22
+ btc ,
23
23
module X ,
24
24
)
25
25
where
@@ -59,7 +59,7 @@ data Model = Model
59
59
60
60
data Action
61
61
= Noop
62
- | InitUpdate (Maybe ( StExt Unique ) )
62
+ | InitUpdate (Maybe Aes. Crypto )
63
63
| TimeUpdate
64
64
| SyncInputs
65
65
| ChanUpdate Model
@@ -71,7 +71,7 @@ data St f = St
71
71
stDoc :: StDoc f ,
72
72
stPre :: Field DynamicField f ,
73
73
stScreen :: Screen ,
74
- stExt :: Maybe ( StExt f )
74
+ stCpt :: Maybe Aes. Crypto
75
75
}
76
76
deriving stock (Generic )
77
77
@@ -89,29 +89,6 @@ instance TraversableB St
89
89
90
90
deriving via GenericType (St Identity ) instance Binary (St Identity )
91
91
92
- data StExt f = StExt
93
- { stExtKm :: Aes. Km ,
94
- stExtIkm :: Field MisoString f ,
95
- stExtDoc :: Aes. Crypto ,
96
- stExtPre :: Field DynamicField f ,
97
- stExtScreen :: Screen
98
- }
99
- deriving stock (Generic )
100
-
101
- deriving stock instance (Hkt f ) => Eq (StExt f )
102
-
103
- deriving stock instance (Hkt f ) => Ord (StExt f )
104
-
105
- deriving stock instance (Hkt f ) => Show (StExt f )
106
-
107
- deriving stock instance (Hkt f ) => Data (StExt f )
108
-
109
- instance FunctorB StExt
110
-
111
- instance TraversableB StExt
112
-
113
- deriving via GenericType (StExt Identity ) instance Binary (StExt Identity )
114
-
115
92
data StDoc f = StDoc
116
93
{ stDocTopMoney :: Money f ,
117
94
stDocBottomMoney :: Money f ,
@@ -137,6 +114,23 @@ instance TraversableB StDoc
137
114
138
115
deriving via GenericType (StDoc Identity ) instance Binary (StDoc Identity )
139
116
117
+ newStDoc :: (MonadIO m ) => m (StDoc Unique )
118
+ newStDoc = do
119
+ ct <- getCurrentTime
120
+ topMoney <- newMoney 1 btc
121
+ bottomMoney <- newMoney 0 usd
122
+ preFavName <- newTextField mempty
123
+ pure
124
+ StDoc
125
+ { stDocTopMoney = topMoney,
126
+ stDocBottomMoney = bottomMoney,
127
+ stDocTopOrBottom = Top ,
128
+ stDocPreFavName = preFavName,
129
+ stDocFieldPairs = mempty ,
130
+ stDocOnlineOrOffline = Online ,
131
+ stDocCreatedAt = ct
132
+ }
133
+
140
134
data Screen
141
135
= Converter
142
136
| QrCode Screen
@@ -167,7 +161,7 @@ unShareUri ::
167
161
MonadIO m
168
162
) =>
169
163
URI ->
170
- m (Maybe (StExt Unique ))
164
+ m (Maybe (St Unique ))
171
165
unShareUri uri = do
172
166
kKm <- URI. mkQueryKey " k"
173
167
kDoc <- URI. mkQueryKey " d"
@@ -180,25 +174,27 @@ unShareUri uri = do
180
174
<*> qsGet kSc qs
181
175
<*> qsGet kPre qs of
182
176
Nothing -> pure Nothing
183
- Just (vDoc , vKm, vSc, vPre) -> do
177
+ Just (vCpt , vKm, vSc, vPre) -> do
184
178
bKm <- either throwString pure . B64URL. decode $ encodeUtf8 vKm
185
- bDoc <- either throwString pure . B64URL. decode $ encodeUtf8 vDoc
179
+ bCpt <- either throwString pure . B64URL. decode $ encodeUtf8 vCpt
186
180
bSc <- either throwString pure . B64URL. decode $ encodeUtf8 vSc
187
181
bPre <- either throwString pure . B64URL. decode $ encodeUtf8 vPre
188
182
km <- either (throwString . thd3) pure $ decodeBinary bKm
189
183
ikm <- newPasswordField mempty
190
- doc <- either (throwString . thd3) pure $ decodeBinary bDoc
184
+ cpt <- either (throwString . thd3) pure $ decodeBinary bCpt
191
185
sc <- either (throwString . thd3) pure $ decodeBinary bSc
192
186
iPre <- either (throwString . thd3) pure $ decodeBinary bPre
193
187
pre <- identityToUnique iPre
188
+ doc <- newStDoc
194
189
pure
195
190
$ Just
196
- StExt
197
- { stExtKm = km,
198
- stExtIkm = ikm,
199
- stExtDoc = doc,
200
- stExtPre = pre,
201
- stExtScreen = sc
191
+ St
192
+ { stKm = km,
193
+ stIkm = ikm,
194
+ stDoc = doc,
195
+ stPre = pre,
196
+ stScreen = sc,
197
+ stCpt = Just cpt
202
198
}
203
199
204
200
stQuery :: (MonadThrow m ) => St Identity -> m [URI. QueryParam ]
@@ -207,8 +203,9 @@ stQuery st = do
207
203
vDoc <-
208
204
(URI. mkQueryValue <=< encodeText)
209
205
. encodeBinary
210
- . Aes. encryptHmac aes
211
- $ encodeBinary (st ^. # stDoc)
206
+ $ fromMaybe
207
+ (Aes. encryptHmac aes . encodeBinary $ st ^. # stDoc)
208
+ (st ^. # stCpt)
212
209
kKm <- URI. mkQueryKey " k"
213
210
vKm <-
214
211
(URI. mkQueryValue <=< encodeText)
@@ -244,58 +241,15 @@ stQuery st = do
244
241
. B64URL. encode
245
242
. from @ BL. ByteString @ ByteString
246
243
247
- stExtQuery :: (MonadThrow m ) => StExt Identity -> m [URI. QueryParam ]
248
- stExtQuery st = do
249
- kDoc <- URI. mkQueryKey " d"
250
- vDoc <-
251
- (URI. mkQueryValue <=< encodeText)
252
- $ encodeBinary (st ^. # stExtDoc)
253
- kKm <- URI. mkQueryKey " k"
254
- vKm <-
255
- (URI. mkQueryValue <=< encodeText)
256
- $ encodeBinary (st ^. # stExtKm)
257
- kSc <- URI. mkQueryKey " s"
258
- vSc <-
259
- (URI. mkQueryValue <=< encodeText)
260
- $ encodeBinary (st ^. # stExtScreen)
261
- kPre <- URI. mkQueryKey " p"
262
- vPre <-
263
- (URI. mkQueryValue <=< encodeText)
264
- $ encodeBinary (st ^. # stExtPre)
265
- pure
266
- [ URI. QueryParam kDoc vDoc,
267
- URI. QueryParam kKm vKm,
268
- URI. QueryParam kSc vSc,
269
- URI. QueryParam kPre vPre
270
- ]
271
- where
272
- encodeText :: (MonadThrow m ) => BL. ByteString -> m Prelude. Text
273
- encodeText =
274
- either throw pure
275
- . decodeUtf8'
276
- . B64URL. encode
277
- . from @ BL. ByteString @ ByteString
278
-
279
244
stUri :: (MonadThrow m ) => Model -> m URI
280
- stUri Model {modelState = St {stExt = Just ext}} =
281
- stExtUri ext
282
- stUri st@ Model {modelState = St {stExt = Nothing }} = do
245
+ stUri st = do
283
246
uri <- mkURI $ from @ MisoString @ Prelude. Text baseUri
284
247
qxs <- stQuery . uniqueToIdentity $ st ^. # modelState
285
248
pure
286
249
$ uri
287
250
{ URI. uriQuery = qxs
288
251
}
289
252
290
- stExtUri :: (MonadThrow m ) => StExt Unique -> m URI
291
- stExtUri ext = do
292
- uri <- mkURI $ from @ MisoString @ Prelude. Text baseUri
293
- qxs <- stExtQuery $ uniqueToIdentity ext
294
- pure
295
- $ uri
296
- { URI. uriQuery = qxs
297
- }
298
-
299
253
baseUri :: MisoString
300
254
#ifdef GHCID
301
255
baseUri =
@@ -308,16 +262,11 @@ baseUri =
308
262
setScreenPure :: Screen -> Model -> Model
309
263
setScreenPure sc =
310
264
(& # modelState . # stScreen .~ sc)
311
- . (& # modelState . # stExt . _Just . # stExtScreen .~ sc)
312
265
313
266
setScreenAction :: Screen -> Action
314
267
setScreenAction =
315
268
pureUpdate 0 . setScreenPure
316
269
317
- setExtScreenAction :: Screen -> Action
318
- setExtScreenAction sc =
319
- pureUpdate 0 (& # modelState . # stExt . _Just . # stExtScreen .~ sc)
320
-
321
270
shareLink :: forall a . (From Prelude. Text a ) => Model -> a
322
271
shareLink =
323
272
from @ Prelude. Text @ a
@@ -330,3 +279,9 @@ vsn =
330
279
. T. intercalate " ."
331
280
. fmap Prelude. inspect
332
281
$ Version. versionBranch Paths. version
282
+
283
+ usd :: CurrencyInfo
284
+ usd = CurrencyInfo (CurrencyCode " usd" ) mempty
285
+
286
+ btc :: CurrencyInfo
287
+ btc = CurrencyInfo (CurrencyCode " btc" ) mempty
0 commit comments