This repository has been archived by the owner on Sep 11, 2024. It is now read-only.
ModuleAPI: overwrite_login
action was not stopping the existing client resulting in the action failing with rust-sdk
#12272
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
rust-sdk
is holding an active connection to the indexeddb database, so if the current crypto backend is not stopped it is not possible to delete the exisiting databases.It works with the legacy crypto as it is just opening the database when needed.
Module using this API will have issues with rust crypto until this fix has landed.
The fix is to just call
stopMatrixClient
before callingdoSetLoggedIn
, like other flows are already doing it.Fixes https://github.com/element-hq/crypto-internal/issues/175
References:
https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory/deleteDatabase
When deleteDatabase() is called, any other open connections to this particular database will get a versionchange event.
=> The rust opened connection gets this event but doesn't react to it. So the delete action will call the
onblocked
callback and nothing will happen.Additional note
The
overwrite_login
action is not going through the regular login flow, as it is hot-swaping credentials, so some crypto bootstrap flows are not currently executed (like bootstrap cross-signing or backup, and probably verification). For now users have to go to the settings to perforn them.Checklist