mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-11-04 06:32:59 +00:00
store: reuse the code's reservation refusal
This commit is contained in:
1 parent
1dbccd8be1
commit
7e2e860b07
1 file changed
+6
-1
@@ -10,6 +10,7 @@ module StoreService.Names.Codes
|
||||
CodeRefusal (..),
|
||||
codeRefusal,
|
||||
codeRefusalTag,
|
||||
reserveRefusal,
|
||||
readPrepaidCode,
|
||||
reserveCode,
|
||||
releaseCode,
|
||||
@@ -94,6 +95,10 @@ stateRefusal = \case
|
||||
CSExpired -> Just CRExpired
|
||||
CSUnpaid -> Just CRPaymentPending
|
||||
|
||||
-- | Why a conditional reservation of the code refused it, as the code reads now.
|
||||
reserveRefusal :: DB.Connection -> UTCTime -> ByteString -> RegistrationId -> Int -> IO CodeRefusal
|
||||
reserveRefusal db now codeHash rid len = maybe CRInvalid (fromMaybe CRReserved . codeRefusal now rid len) <$> getPrepaidCode db codeHash
|
||||
|
||||
readPrepaidCode :: DBStore -> NamePrepaidCode -> IO (Maybe PrepaidCode)
|
||||
readPrepaidCode st code = withTransaction st (`getPrepaidCode` namePrepaidCodeHash code)
|
||||
|
||||
@@ -110,7 +115,7 @@ reserveCode turns st now codeHash rid len write =
|
||||
| otherwise ->
|
||||
reservePrepaidCode db pcId rid now >>= \case
|
||||
-- Only a writer outside this process, which takes no turn here, can refuse it.
|
||||
False -> Left . maybe CRInvalid (fromMaybe CRReserved . codeRefusal now rid len) <$> getPrepaidCode db codeHash
|
||||
False -> Left <$> reserveRefusal db now codeHash rid len
|
||||
True ->
|
||||
write db >>= \case
|
||||
refused@(Left _) -> Right refused <$ releasePrepaidCode db pcId rid
|
||||
|
||||
Reference in new issue
Block a user