From 8c023eeabdb3874470e5db1a756ed1b62ea3ecf9 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Fri, 4 Oct 2019 12:10:43 +0200 Subject: Emit an event when the CSRF token changes Signed-off-by: Christoph Wurst --- core/src/OC/index.js | 12 +++++++++--- core/src/OC/requesttoken.js | 14 ++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'core/src/OC') diff --git a/core/src/OC/index.js b/core/src/OC/index.js index 0c95fe3e95f..01964b3ca4a 100644 --- a/core/src/OC/index.js +++ b/core/src/OC/index.js @@ -19,6 +19,8 @@ * along with this program. If not, see . */ +import { subscribe } from '@nextcloud/event-bus' + import { addScript, addStyle } from './legacy-loader' import { ajaxConnectionLostHandler, @@ -67,8 +69,7 @@ import { getProtocol } from './host' import { - getToken as getRequestToken, - subscribe as subscribeToRequestTokenChange + getToken as getRequestToken } from './requesttoken' import { hideMenus, @@ -258,4 +259,9 @@ export default { } // Keep the request token prop in sync -subscribeToRequestTokenChange(token => { OC.requestToken = token }) +subscribe('csrf-token-update', e => { + OC.requestToken = e.token + + // Logging might help debug (Sentry) issues + console.info('OC.requestToken changed', e.token) +}) diff --git a/core/src/OC/requesttoken.js b/core/src/OC/requesttoken.js index a92eb169577..91b18069d75 100644 --- a/core/src/OC/requesttoken.js +++ b/core/src/OC/requesttoken.js @@ -19,24 +19,22 @@ * along with this program. If not, see . */ +import { emit } from '@nextcloud/event-bus' + let token = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken') -const observers = [] /** * @returns {string} */ export const getToken = () => token -/** - * @param {Function} observer observer - * @returns {number} - */ -export const subscribe = observer => observers.push(observer) - /** * @param {String} newToken new token */ export const setToken = newToken => { token = newToken - observers.forEach(o => o(token)) + + emit('csrf-token-update', { + token + }) } -- cgit v1.2.3