Skip to content

When connection is too fast, this.scroller used before it is initialized #66

@TheV360

Description

@TheV360

This is because there's a chance that the websocket returns results before DOMContentLoaded fires, so that the sidebar never gets a chance to run its onload method. This usually happens with locally-hosted instances, which is often frustrating!

Uncaught TypeError: this.scroller is null
    display_messages sbs2/src/sidebar.js:203
    pull_recent sbs2/src/activity.js:203
    handle_response sbs2/src/socket.js:338
    onmessage sbs2/src/socket.js:284
    start_websocket sbs2/src/socket.js:277
    immediate sbs2/src/main.js:52
    <anonymous> sbs2/src/main.js:11
sidebar.js:203:3

One fix is relatively simple:

diff --git a/src/activity.js b/src/activity.js
index 64bfa80..a547993 100644
--- a/src/activity.js
+++ b/src/activity.js
@@ -200,7 +200,7 @@ let Act = {
 			
 			/// sidebar messages ///
 			// TODO: ensure that these are displayed BEFORE any websocket new messages
-			Sidebar.display_messages(objects.message, true)
+			do_when_ready(_=>Sidebar.display_messages(objects.message, true))
 			
 			/// activity tab ///
 			for (let act of objects.activity)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions