To produce message elements we iterate over pendingMessage ++ messages,
but to check whether they're adjacent to a message by the same author,
we index back into messages, which produces incorrect results when
pendingMessages is nonEmpty
* origin/fix-chat-autojoin:
chat-js: fix auto-join and a chatSynced error
chat-js: fix issue with autojoining
Signed-off-by: Jared Tobin <jared@tlon.io>
Previously, if filtering subscriptions turned up no results, nothing was
printed. With this change, we explicitly print "no matching subscriptions"
instead.
We weren't accounting for backlog subscriptions with non-zero message
indexes in their wires. Now, we look through all of our outgoing
subscriptions to identify relevant backlog subscriptions, and leave all
of those.
The more proper fix here is to not include message indexes in the wire
in the first place, since we don't ever reuse that anywhere. But that's
a more invasive change, so we just leave a TODO for it instead.
Previously, we were removing the relevant entry from the `synced` map
before calling `+pull-wire`, which requires an entry to still be there.
This lead to subscriptions not actually being pulled, commonly leading
to "subscribe wire not unique" errors on re-join.
In addition to fixing that, `%remove` actions now try to pull the
subscription regardless of whether they have an entry in the `synced`
map or not. `%leave` is always safe, and we might want to clean up
subscriptions that shouldn't be there anymore in the first place.
Makes the rules that set both a background and foreground color come
last in the CSS, increasing their specificity. Changes the highlight to a
lighter grey, to better stand out. Correctly aligns highlights with code
block backgrounds.
Fixes#2684
the root container had height: 100% but also a margin-top set on it. This
caused unnecessary scrollbars to appear when the content did not
actually overflow the container.
Firefox treats the reflow in the scroll container weirdly so for the
scrollback case, we save the position to restore later, when the backlog
messages come in. For the 'locked at bottom' case we add a new state
variable and rescroll based on that.
Previously, if a room was navigated to directly, the resubscribe message
would show before the chatSynced state was loaded. Initialises
chatSynced as null and checks it is not null before showing the
resubscribe message.