diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-05-03 10:38:03 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-05-05 22:15:01 +0200 |
commit | 1188ebc5de74aa40d2f10040be2d5b290555c9ce (patch) | |
tree | 46a96eb8fa460b0f0dc287592a6375f596eb4daa | |
parent | 88274b83a63a0bbe35c7dccd38ff509343a090ba (diff) |
Use extended identity data for identity updaterelease-0.1
-rw-r--r-- | src/Erebos/State.hs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/Erebos/State.hs b/src/Erebos/State.hs index 3012064..5b21ba4 100644 --- a/src/Erebos/State.hs +++ b/src/Erebos/State.hs @@ -184,9 +184,8 @@ updateSharedIdentity = updateLocalHead_ $ updateSharedState_ $ \case Nothing -> throwError "no existing shared identity" interactiveIdentityUpdate :: (Foldable f, MonadStorage m, MonadIO m, MonadError String m) => Identity f -> m UnifiedIdentity -interactiveIdentityUpdate identity = do - let public = idKeyIdentity identity - +interactiveIdentityUpdate fidentity = do + identity <- mergeIdentity fidentity name <- liftIO $ do T.putStr $ T.concat $ concat [ [ T.pack "Name" ] @@ -198,11 +197,11 @@ interactiveIdentityUpdate identity = do hFlush stdout T.getLine - if | T.null name -> mergeIdentity identity + if | T.null name -> return identity | otherwise -> do - secret <- loadKey public - maybe (throwError "created invalid identity") return . validateIdentity =<< - mstore =<< sign secret =<< mstore (emptyIdentityData public) - { iddPrev = toList $ idDataF identity - , iddName = Just name + secret <- loadKey $ idKeyIdentity identity + maybe (throwError "created invalid identity") return . validateExtendedIdentity =<< + mstore =<< sign secret =<< mstore . ExtendedIdentityData =<< return (emptyIdentityExtension $ idData identity) + { idePrev = toList $ idExtDataF identity + , ideName = Just name } |