Skip to content

Allow dismissing 'Key storage out of sync' temporarily#31455

Merged
andybalaam merged 1 commit intodevelopfrom
andybalaam/allow-dismiss-key-storage-out-of-sync
Jan 26, 2026
Merged

Allow dismissing 'Key storage out of sync' temporarily#31455
andybalaam merged 1 commit intodevelopfrom
andybalaam/allow-dismiss-key-storage-out-of-sync

Conversation

@andybalaam
Copy link
Member

@andybalaam andybalaam commented Dec 8, 2025

Adds a close button to the "Key storage out of sync" toast, which closes the dialog for this session only.

image

Fixes #30959

Copy link
Member

@richvdh richvdh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My suspicion is that, without changes to DeviceListener, this will pop up again next time there is any change to devices, etc

@andybalaam
Copy link
Member Author

My suspicion is that, without changes to DeviceListener, this will pop up again next time there is any change to devices, etc

I'm sure you're right, thanks. I'll check this.

@andybalaam
Copy link
Member Author

My suspicion is that, without changes to DeviceListener, this will pop up again next time there is any change to devices, etc

I'm sure you're right, thanks. I'll check this.

It turns out this change does actually update state, because it calls DeviceListener.dismissEncryptionSetup which sets dismissedThisDeviceToast to true, suppressing the dialog.

So I think this change actually does what it should :-)

@andybalaam andybalaam force-pushed the andybalaam/allow-dismiss-key-storage-out-of-sync branch from c5d1d58 to 6e51ba5 Compare December 12, 2025 11:15
@andybalaam andybalaam force-pushed the andybalaam/allow-dismiss-key-storage-out-of-sync branch from 6e51ba5 to da03f08 Compare December 19, 2025 11:35
@andybalaam andybalaam added T-Enhancement and removed T-Feature Request to add a new feature which does not exist right now labels Dec 19, 2025
@andybalaam andybalaam force-pushed the andybalaam/allow-dismiss-key-storage-out-of-sync branch from da03f08 to 3c69526 Compare January 21, 2026 15:11
@andybalaam andybalaam marked this pull request as ready for review January 21, 2026 15:12
@andybalaam andybalaam requested a review from a team as a code owner January 21, 2026 15:12
@andybalaam
Copy link
Member Author

This is ready for review after a design change. It now uses an "X" in the top right.

Copy link
Member

@richvdh richvdh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits

className?: string;
bodyClassName?: string;

/** If defined, the toast has a close button in the top right */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If defined, the toast has a close button in the top right

If that's all it means, why not use a boolean?

Presumably onClose gets called when the close button is pressed, but please join the dots a bit. Is the toast automatically closed, or is onClose expected to do that? (I think the latter, but then it should probably be called onCloseButtonClicked or sth)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 32b5694

{title}
</Text>
</div>
{onClose && (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it looks like onClose will only work if a title is specified. We should note that in the documentation on IToast.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 92e453b

key: TOAST_KEY,
title: getTitle(state),
icon: getIcon(state),
onClose: getOnClose(state),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like this would be easier to grok if the get... method just returned a boolean rather than the callback:

const getShouldShowCloseButton = (state: DeviceStateForToast): boolean => { /* ... */ };

    // inside `showToast`
    const onClose = shouldShowCloseButton(state)
        ? () => DeviceListener.sharedInstance().dismissEncryptionSetup()
        : undefined;

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 84e8efa

case "key_storage_out_of_sync":
case "identity_needs_reset":
return () => DeviceListener.sharedInstance().dismissEncryptionSetup();
default:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to spell out each of the cases here, to try to encourage people to think about whether we need a close button if we add more cases in future.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 84e8efa

Copy link
Member

@richvdh richvdh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM otherwise

@andybalaam andybalaam force-pushed the andybalaam/allow-dismiss-key-storage-out-of-sync branch from a7ae16a to 5e21c8d Compare January 26, 2026 10:20
@andybalaam andybalaam enabled auto-merge January 26, 2026 10:21
@andybalaam andybalaam added this pull request to the merge queue Jan 26, 2026
Merged via the queue into develop with commit 0947517 Jan 26, 2026
39 of 41 checks passed
@andybalaam andybalaam deleted the andybalaam/allow-dismiss-key-storage-out-of-sync branch January 26, 2026 11:06
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 10, 2026
…880)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [element-hq/element-web](https://github.com/element-hq/element-web) | patch | `v1.12.9` → `v1.12.10` |

---

### Release Notes

<details>
<summary>element-hq/element-web (element-hq/element-web)</summary>

### [`v1.12.10`](https://github.com/element-hq/element-web/releases/tag/v1.12.10)

[Compare Source](element-hq/element-web@v1.12.9...v1.12.10)

#### ✨ Features

- Support additional\_creators in /upgraderoom (MSC4289) ([#&#8203;31934](element-hq/element-web#31934)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Update room header icon for world\_readable rooms ([#&#8203;31915](element-hq/element-web#31915)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).
- Show an icon in the room header for shared history ([#&#8203;31879](element-hq/element-web#31879)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).
- Remove "history may be shared" banner. ([#&#8203;31881](element-hq/element-web#31881)). Contributed by [@&#8203;kaylendog](https://github.com/kaylendog).
- Allow dismissing 'Key storage out of sync' temporarily ([#&#8203;31455](element-hq/element-web#31455)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Add `resolutions` entry for `matrix-widget-api` to package.json ([#&#8203;31851](element-hq/element-web#31851)). Contributed by [@&#8203;toger5](https://github.com/toger5).
- Improve visibility under contrast control mode ([#&#8203;31847](element-hq/element-web#31847)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Unread Sorting - Add option for sorting in `OptionsMenuView` ([#&#8203;31754](element-hq/element-web#31754)). Contributed by [@&#8203;MidhunSureshR](https://github.com/MidhunSureshR).
- Unread sorting - Implement sorter and use it in the room list store ([#&#8203;31723](element-hq/element-web#31723)). Contributed by [@&#8203;MidhunSureshR](https://github.com/MidhunSureshR).
- Allow Element Call widgets to receive sticky events ([#&#8203;31843](element-hq/element-web#31843)). Contributed by [@&#8203;robintown](https://github.com/robintown).
- Improve icon rendering accessibility ([#&#8203;31791](element-hq/element-web#31791)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Add message preview toggle to room list header option ([#&#8203;31821](element-hq/element-web#31821)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).

#### 🐛 Bug Fixes

- \[Backport staging] Fix room list not being cleared ([#&#8203;32438](element-hq/element-web#32438)). Contributed by [@&#8203;RiotRobot](https://github.com/RiotRobot).
- Fix failure to update room info panel on joinrule change ([#&#8203;31938](element-hq/element-web#31938)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).
- Throttle space notification state calculation ([#&#8203;31922](element-hq/element-web#31922)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Fix emoji verification responsive layout ([#&#8203;31899](element-hq/element-web#31899)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Add patch for linkify to fix doctype handling ([#&#8203;31900](element-hq/element-web#31900)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Fix rooms with no messages appearing at the top of the room list ([#&#8203;31798](element-hq/element-web#31798)). Contributed by [@&#8203;MidhunSureshR](https://github.com/MidhunSureshR).
- Fix room list menu flashes when menu is closed ([#&#8203;31868](element-hq/element-web#31868)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Message preview toggle is inverted in room list header ([#&#8203;31865](element-hq/element-web#31865)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Fix duplicate toasts appearing for the same call if two events appear. ([#&#8203;31693](element-hq/element-web#31693)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Fix ability to send rageshake during session restore failure ([#&#8203;31848](element-hq/element-web#31848)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Fix mis-alignment of `Threads` right panel title ([#&#8203;31849](element-hq/element-web#31849)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Unset buttons does not include color inherit ([#&#8203;31801](element-hq/element-web#31801)). Contributed by [@&#8203;Philldomd](https://github.com/Philldomd).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImF1dG9tZXJnZSIsImltYWdlIl19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3880
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow "key storage out of sync" toast to be dismissed

2 participants