Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Fix bug where room list would get stuck showing no rooms
Browse files Browse the repository at this point in the history
If you had an unsent message in a room that was in a sublist with
the 'Show rooms with unread messages first' option enabled, the
room list would show no rooms next time you restarted element and
get stuck that way.

This was because there was a different notification category for
rooms with unsent messages but the algorithm is hard-coded to add
only a fixed set of categories to its list, and it missed 'unsent',
so it NPEed when it encountered a room with an unsent message.

This just adds the category (assuming that we want to show rooms
with unsent messages first). It doesn't make it less hard-coded, or
fix the fact that an exception in the room list code causes everything
to break.

Fixes element-hq/element-web#19373
  • Loading branch information
dbkr committed Oct 13, 2021
1 parent 193a060 commit 0332bc9
Showing 1 changed file with 6 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ interface ICategoryIndex {
// comments! Check the usage of Category carefully to figure out what needs changing
// if you're going to change this array's order.
const CATEGORY_ORDER = [
NotificationColor.Unsent,
NotificationColor.Red,
NotificationColor.Grey,
NotificationColor.Bold,
Expand All @@ -50,9 +51,10 @@ const CATEGORY_ORDER = [
* interfere with this algorithm, however manual ordering does.
*
* The importance of a room is defined by the kind of notifications, if any, are
* present on the room. These are classified internally as Red, Grey, Bold, and
* Idle. Red rooms have mentions, grey have unread messages, bold is a less noisy
* version of grey, and idle means all activity has been seen by the user.
* present on the room. These are classified internally as Unsent, Red, Grey,
* Bold, and Idle. 'Unsent' rooms habe unsent messages, Red rooms have mentions,
* grey have unread messages, bold is a less noisy version of grey, and idle
* means all activity has been seen by the user.
*
* The algorithm works by monitoring all room changes, including new messages in
* tracked rooms, to determine if it needs a new category or different placement
Expand All @@ -74,6 +76,7 @@ export class ImportanceAlgorithm extends OrderingAlgorithm {
// noinspection JSMethodCanBeStatic
private categorizeRooms(rooms: Room[]): ICategorizedRoomMap {
const map: ICategorizedRoomMap = {
[NotificationColor.Unsent]: [],
[NotificationColor.Red]: [],
[NotificationColor.Grey]: [],
[NotificationColor.Bold]: [],
Expand Down

0 comments on commit 0332bc9

Please sign in to comment.