aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Jameson <spam@hjkos.com>2021-01-13 21:33:20 +0200
committerHenry Jameson <spam@hjkos.com>2021-01-13 21:33:20 +0200
commit48bef143d86b02d7feeeac3e1faa0e5e00e09ea6 (patch)
tree394beb9f48cff6d13bde925c275142f64abc07df
parent64fa662644dd385dd746f2b309eef6287f5eae04 (diff)
fix not being able to re-enable sockets until page refresh
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/modules/api.js11
-rw-r--r--src/services/api/api.service.js1
3 files changed, 12 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6160c5f4..0b9c7f68 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Handle punycode in screen names
- Fixed local dev mode having non-functional websockets in some cases
- Show notices for websocket events (errors, abnormal closures, reconnections)
+- Fix not being able to re-enable websocket until page refresh
## [2.2.2] - 2020-12-22
### Added
diff --git a/src/modules/api.js b/src/modules/api.js
index 01c65e49..2be0f236 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -40,7 +40,16 @@ const api = {
// Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets
enableMastoSockets (store) {
const { state, dispatch } = store
- if (state.mastoUserSocket) return
+ // Do not initialize unless nonexistent or closed
+ if (
+ state.mastoUserSocket &&
+ ![
+ WebSocket.CLOSED,
+ WebSocket.CLOSING
+ ].includes(state.mastoUserSocket.getState())
+ ) {
+ return
+ }
return dispatch('startMastoUserSocket')
},
disableMastoSockets (store) {
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index f4483149..d3d5c68d 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -1152,6 +1152,7 @@ export const ProcessedWS = ({
// 1000 = Normal Closure
eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }
+ eventTarget.getState = () => socket.readyState
return eventTarget
}