diff --git a/package-lock.json b/package-lock.json index 1775821b8..96b62316d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4990,7 +4990,8 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true }, "es6-promisify": { "version": "5.0.0", diff --git a/src/converse-chatview.js b/src/converse-chatview.js index c5fc5196a..97cc55c61 100644 --- a/src/converse-chatview.js +++ b/src/converse-chatview.js @@ -29,7 +29,7 @@ import tpl_toolbar_fileupload from "templates/toolbar_fileupload.html"; import tpl_user_details_modal from "templates/user_details_modal.html"; import xss from "xss/dist/xss"; -const { $msg, Backbone, Promise, Strophe, _, sizzle, dayjs } = converse.env; +const { $msg, Backbone, Strophe, _, sizzle, dayjs } = converse.env; const u = converse.env.utils; diff --git a/src/converse-controlbox.js b/src/converse-controlbox.js index ff28874f9..ce2fbc1f4 100644 --- a/src/converse-controlbox.js +++ b/src/converse-controlbox.js @@ -17,7 +17,7 @@ import tpl_controlbox_toggle from "templates/controlbox_toggle.html"; import tpl_login_panel from "templates/login_panel.html"; const CHATBOX_TYPE = 'chatbox'; -const { Strophe, Backbone, Promise, _, dayjs } = converse.env; +const { Strophe, Backbone, _, dayjs } = converse.env; const u = converse.env.utils; const CONNECTION_STATUS_CSS_CLASS = { diff --git a/src/converse-minimize.js b/src/converse-minimize.js index c4a3d0687..f3e65f3de 100644 --- a/src/converse-minimize.js +++ b/src/converse-minimize.js @@ -16,7 +16,7 @@ import tpl_toggle_chats from "templates/toggle_chats.html"; import tpl_trimmed_chat from "templates/trimmed_chat.html"; -const { _ , Backbone, Promise, Strophe, dayjs } = converse.env; +const { _ , Backbone, Strophe, dayjs } = converse.env; const u = converse.env.utils; converse.plugins.add('converse-minimize', { diff --git a/src/converse-muc-views.js b/src/converse-muc-views.js index 2a525246a..6273fddc3 100644 --- a/src/converse-muc-views.js +++ b/src/converse-muc-views.js @@ -43,7 +43,7 @@ import tpl_spinner from "templates/spinner.html"; import xss from "xss/dist/xss"; -const { Backbone, Promise, Strophe, dayjs, sizzle, _, $iq, $msg, $pres } = converse.env; +const { Backbone, Strophe, dayjs, sizzle, _, $iq, $msg, $pres } = converse.env; const u = converse.env.utils; const ROLES = ['moderator', 'participant', 'visitor']; diff --git a/src/converse-omemo.js b/src/converse-omemo.js index 8f79cdc11..044f7ab02 100644 --- a/src/converse-omemo.js +++ b/src/converse-omemo.js @@ -13,7 +13,7 @@ import BrowserStorage from "backbone.browserStorage"; import converse from "@converse/headless/converse-core"; import tpl_toolbar_omemo from "templates/toolbar_omemo.html"; -const { Backbone, Promise, Strophe, dayjs, sizzle, $build, $iq, $msg, _ } = converse.env; +const { Backbone, Strophe, dayjs, sizzle, $build, $iq, $msg, _ } = converse.env; const u = converse.env.utils; Strophe.addNamespace('OMEMO_DEVICELIST', Strophe.NS.OMEMO+".devicelist"); diff --git a/src/converse-profile.js b/src/converse-profile.js index 140a344b3..96c655c79 100644 --- a/src/converse-profile.js +++ b/src/converse-profile.js @@ -18,8 +18,7 @@ import tpl_profile_modal from "templates/profile_modal.html"; import tpl_profile_view from "templates/profile_view.html"; import tpl_status_option from "templates/status_option.html"; - -const { Strophe, Backbone, Promise, utils, _, dayjs, sizzle } = converse.env; +const { Strophe, Backbone, utils, _, dayjs, sizzle } = converse.env; const u = converse.env.utils; diff --git a/src/converse-roomslist.js b/src/converse-roomslist.js index 7090dffa1..e5bd6ba03 100644 --- a/src/converse-roomslist.js +++ b/src/converse-roomslist.js @@ -16,7 +16,7 @@ import muc from "@converse/headless/converse-muc"; import tpl_rooms_list from "templates/rooms_list.html"; import tpl_rooms_list_item from "templates/rooms_list_item.html" -const { Backbone, Promise, Strophe, sizzle, _ } = converse.env; +const { Backbone, Strophe, sizzle, _ } = converse.env; const u = converse.env.utils; diff --git a/src/headless/converse-bookmarks.js b/src/headless/converse-bookmarks.js index d4708d01d..22c109ac4 100644 --- a/src/headless/converse-bookmarks.js +++ b/src/headless/converse-bookmarks.js @@ -13,7 +13,7 @@ import "@converse/headless/converse-muc"; import BrowserStorage from "backbone.browserStorage"; import converse from "@converse/headless/converse-core"; -const { Backbone, Promise, Strophe, $iq, sizzle, _ } = converse.env; +const { Backbone, Strophe, $iq, sizzle, _ } = converse.env; const u = converse.env.utils; diff --git a/src/headless/converse-chatboxes.js b/src/headless/converse-chatboxes.js index 8723ab0a2..147e18246 100644 --- a/src/headless/converse-chatboxes.js +++ b/src/headless/converse-chatboxes.js @@ -12,7 +12,7 @@ import BrowserStorage from "backbone.browserStorage"; import converse from "./converse-core"; import filesize from "filesize"; -const { $msg, Backbone, Promise, Strophe, dayjs, sizzle, utils, _ } = converse.env; +const { $msg, Backbone, Strophe, dayjs, sizzle, utils, _ } = converse.env; const u = converse.env.utils; Strophe.addNamespace('MESSAGE_CORRECT', 'urn:xmpp:message-correct:0'); diff --git a/src/headless/converse-core.js b/src/headless/converse-core.js index 5c3318f23..f5e63001c 100644 --- a/src/headless/converse-core.js +++ b/src/headless/converse-core.js @@ -11,7 +11,6 @@ import 'strophe.js/src/websocket'; import * as strophe from 'strophe.js/src/core'; import Backbone from 'backbone'; import BrowserStorage from 'backbone.browserStorage'; -import Promise from 'es6-promise/dist/es6-promise.auto'; import _ from './lodash.noconflict'; import advancedFormat from 'dayjs/plugin/advancedFormat'; import dayjs from 'dayjs'; @@ -832,10 +831,15 @@ _converse.initialize = async function (settings, callback) { }); /* Localisation */ - if (i18n !== undefined) { - i18n.setLocales(settings.i18n, _converse); - } else { + if (i18n === undefined || _converse.isTestEnv()) { _converse.locale = 'en'; + } else { + try { + _converse.locale = i18n.getLocale(settings.i18n, _converse.locales); + await i18n.fetchTranslations(_converse); + } catch (e) { + _converse.log(e.message, Strophe.LogLevel.FATAL); + } } // Module-level variables @@ -1331,18 +1335,12 @@ _converse.initialize = async function (settings, callback) { this.connection = settings.connection; } - if (_converse.isTestEnv()) { - await finishInitialization(); - return _converse; - } else if (i18n !== undefined) { - try { - await i18n.fetchTranslations(_converse.locale, _converse.locales); - } catch (e) { - _converse.log(e.message, Strophe.LogLevel.FATAL); - } - } await finishInitialization(); - return init_promise; + if (_converse.isTestEnv()) { + return _converse; + } else { + return init_promise; + } }; /** diff --git a/src/headless/converse-disco.js b/src/headless/converse-disco.js index bb85e3837..9d325e42e 100644 --- a/src/headless/converse-disco.js +++ b/src/headless/converse-disco.js @@ -12,7 +12,7 @@ import BrowserStorage from "backbone.browserStorage"; import converse from "./converse-core"; import sizzle from "sizzle"; -const { Backbone, Promise, Strophe, $iq, utils, _ } = converse.env; +const { Backbone, Strophe, $iq, utils, _ } = converse.env; converse.plugins.add('converse-disco', { diff --git a/src/headless/converse-muc.js b/src/headless/converse-muc.js index 7c9bd438f..560db50a9 100644 --- a/src/headless/converse-muc.js +++ b/src/headless/converse-muc.js @@ -23,7 +23,7 @@ const MUC_ROLE_WEIGHTS = { 'none': 2, }; -const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, sizzle, _ } = converse.env; +const { Strophe, Backbone, $iq, $build, $msg, $pres, sizzle, _ } = converse.env; // Add Strophe Namespaces Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC + "#admin"); diff --git a/src/headless/converse-pubsub.js b/src/headless/converse-pubsub.js index e8c88a4ca..d695c5747 100644 --- a/src/headless/converse-pubsub.js +++ b/src/headless/converse-pubsub.js @@ -9,7 +9,7 @@ import "./converse-disco"; import converse from "./converse-core"; -const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, dayjs, _ } = converse.env; +const { Strophe, Backbone, $iq, $build, $msg, $pres, dayjs, _ } = converse.env; Strophe.addNamespace('PUBSUB_ERROR', Strophe.NS.PUBSUB+"#errors"); diff --git a/src/headless/converse-roster.js b/src/headless/converse-roster.js index e2a995b51..05fbcdf08 100644 --- a/src/headless/converse-roster.js +++ b/src/headless/converse-roster.js @@ -9,7 +9,7 @@ import BrowserStorage from "backbone.browserStorage"; import converse from "@converse/headless/converse-core"; -const { Backbone, Promise, Strophe, $iq, $pres, dayjs, sizzle, _ } = converse.env; +const { Backbone, Strophe, $iq, $pres, dayjs, sizzle, _ } = converse.env; const u = converse.env.utils; diff --git a/src/headless/converse-vcard.js b/src/headless/converse-vcard.js index 1c58c809b..5662183d2 100644 --- a/src/headless/converse-vcard.js +++ b/src/headless/converse-vcard.js @@ -10,7 +10,7 @@ import BrowserStorage from "backbone.browserStorage"; import converse from "./converse-core"; import tpl_vcard from "./templates/vcard.html"; -const { Backbone, Promise, Strophe, _, $iq, $build, dayjs, sizzle } = converse.env; +const { Backbone, Strophe, _, $iq, $build, dayjs, sizzle } = converse.env; const u = converse.env.utils; diff --git a/src/headless/i18n.js b/src/headless/i18n.js index 00fc0f76a..5ec3f20a9 100644 --- a/src/headless/i18n.js +++ b/src/headless/i18n.js @@ -6,40 +6,12 @@ // Copyright (c) 2013-2017, Jan-Carel Brand // Licensed under the Mozilla Public License (MPLv2) // -import 'dayjs/locale/af'; -import 'dayjs/locale/ar'; -import 'dayjs/locale/bg'; -import 'dayjs/locale/ca'; -import 'dayjs/locale/cs'; -import 'dayjs/locale/de'; -import 'dayjs/locale/eo'; -import 'dayjs/locale/es'; -import 'dayjs/locale/eu'; -import 'dayjs/locale/fr'; -import 'dayjs/locale/gl'; -import 'dayjs/locale/he'; -import 'dayjs/locale/hi'; -import 'dayjs/locale/hu'; -import 'dayjs/locale/id'; -import 'dayjs/locale/it'; -import 'dayjs/locale/ja'; -import 'dayjs/locale/nb'; -import 'dayjs/locale/nl'; -import 'dayjs/locale/oc-lnc'; -import 'dayjs/locale/pl'; -import 'dayjs/locale/pt'; -import 'dayjs/locale/pt-br'; -import 'dayjs/locale/ro'; -import 'dayjs/locale/ru'; -import 'dayjs/locale/tr'; -import 'dayjs/locale/uk'; -import 'dayjs/locale/zh-cn'; -import 'dayjs/locale/zh-tw'; +import * as strophe from 'strophe.js/src/core'; import Jed from "jed"; -import Promise from "es6-promise/dist/es6-promise.auto"; -import _ from "./lodash.noconflict"; import dayjs from "dayjs"; +const Strophe = strophe.default.Strophe; + function detectLocale (library_check) { /* Determine which locale is supported by the user's system as well @@ -69,11 +41,11 @@ function detectLocale (library_check) { } function isConverseLocale (locale, supported_locales) { - return _.isString(locale) && _.includes(supported_locales, locale); + return typeof locale === 'string' && supported_locales.includes(locale); } function getLocale (preferred_locale, isSupportedByLibrary) { - if (_.isString(preferred_locale)) { + if (typeof preferred_locale === 'string') { if (preferred_locale === 'en' || isSupportedByLibrary(preferred_locale)) { return preferred_locale; } @@ -103,12 +75,8 @@ let jed_instance; */ export default { - setLocales (preferred_locale, _converse) { - _converse.locale = getLocale( - preferred_locale, - _.partial(isConverseLocale, _, _converse.locales) - ); - dayjs.locale(getLocale(preferred_locale, l => dayjs.locale(l))); + getLocale (preferred_locale, available_locales) { + return getLocale(preferred_locale, preferred => isConverseLocale(preferred, available_locales)); }, translate (str) { @@ -127,14 +95,16 @@ export default { * Fetch the translations for the given local at the given URL. * @private * @method i18n#fetchTranslations - * @param { String } locale -The given i18n locale - * @param { Array } supported_locales - List of locales supported + * @param { _converse } */ - async fetchTranslations (locale, supported_locales) { - if (!isConverseLocale(locale, supported_locales) || locale === 'en') { + async fetchTranslations (_converse) { + const locale = _converse.locale; + if (!isConverseLocale(locale, _converse.locales) || locale === 'en') { return; } const { default: data } = await import(/*webpackChunkName: "locales/[request]" */ `../../locale/${locale}/LC_MESSAGES/converse.po`); + await import(/*webpackChunkName: "locales/dayjs/[request]" */ `dayjs/locale/${locale.toLowerCase().replace('_', '-')}`); + dayjs.locale(getLocale(_converse.locale, l => dayjs.locale(l))); jed_instance = new Jed(data); } }; diff --git a/src/headless/package.json b/src/headless/package.json index 02e7b3c44..531d8e9c3 100644 --- a/src/headless/package.json +++ b/src/headless/package.json @@ -24,7 +24,6 @@ "devDependencies": { "backbone": "1.4", "backbone.browserStorage": "0.0.5", - "es6-promise": "^4.2.8", "filesize": "^4.1.2", "jed": "1.1.1", "lodash": "^4.17.14",