diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index 809573451..8afdd67b3 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -417,7 +417,7 @@ state. The only defined states are: * dnd -- The entity or resource is busy (dnd = "Do Not Disturb"). * xa -- The entity or resource is away for an extended period (xa = "eXtended Away"). -Read the [relevant section in the XMPP spec](https://xmpp.org/rfcs/rfc6121.html#presence-syntax-children-show) for more info. +Read the [relevant section in the XMPP spec](https://xmpp.org/rfcs/rfc6121.html#presence-syntax-children-show) for more info. What used to happen in converse.js when the `offline` state was chosen, is that a presence stanza with a `type` of `unavailable` was sent out. @@ -717,6 +717,20 @@ Data in localStorage on the other hand is kept indefinitely. roster contact statuses will not become out of sync in a single session, only across more than one session. +strict_plugin_dependencies +-------------------------- + +* Default: ``false`` + +When set to ``true`` and a plugin tries to override an object which doesn't +exist (for example because the plugin which provides that object is not +loaded), then an error will be raised. + +Otherwise a message will simply be logged and the override instruction ignored. + +This allows plugins to have "soft" dependencies which aren't declared as +as dependencies. + synchronize_availability -------------------- @@ -789,7 +803,7 @@ websocket_url * Default: ``undefined`` -This option is used to specify a +This option is used to specify a `websocket `_ URI to which converse.js can connect to. @@ -805,7 +819,7 @@ support. Please note that not older browsers do not support websockets. For older browsers you'll want to specify a BOSH URL. See the :ref:`bosh-service-url` configuration setting). - + .. note:: Converse.js does not yet support "keepalive" with websockets. diff --git a/src/converse-core.js b/src/converse-core.js index ee6f1440b..860b3693a 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -279,6 +279,7 @@ show_only_online_users: false, sid: undefined, storage: 'session', + strict_plugin_dependencies: false, synchronize_availability: true, // Set to false to not sync with other clients or with resource name of the particular client that it should synchronize with use_vcards: true, visible_toolbar_buttons: { @@ -1875,8 +1876,17 @@ /* We automatically override all methods and Backbone views and * models that are in the "overrides" namespace. */ - var override = plugin.overrides[key]; + var msg, + override = plugin.overrides[key]; if (typeof override === "object") { + if (typeof converse[key] === 'undefined') { + msg = "Error: Plugin tried to override "+key+" but it's not found."; + if (converse.strict_plugin_dependencies) { + throw msg; + } else { + converse.log(msg); + } + } this._extendObject(converse[key], override); } else { this._overrideAttribute(key, plugin);