Просмотр исходного кода

Merge pull request #3837 from linkmauve/codespell

Run codespell on the whole codebase
JC Brand 1 неделя назад
Родитель
Сommit
9a7b9e0d6a
54 измененных файлов с 116 добавлено и 116 удалено
  1. 10 10
      CHANGES.md
  2. 10 10
      docs/source/configuration.rst
  3. 1 1
      docs/source/features.rst
  4. 1 1
      docs/source/plugin_development.rst
  5. 1 1
      docs/source/session.rst
  6. 1 1
      docs/source/setup.rst
  7. 1 1
      docs/source/setup_dev_environment.rst
  8. 1 1
      docs/source/theming.rst
  9. 2 2
      src/headless/plugins/emoji/utils.js
  10. 1 1
      src/headless/plugins/mam/utils.js
  11. 1 1
      src/headless/plugins/muc/affiliations/api.js
  12. 1 1
      src/headless/plugins/muc/message.js
  13. 3 3
      src/headless/plugins/muc/muc.js
  14. 1 1
      src/headless/plugins/roster/api.js
  15. 1 1
      src/headless/plugins/vcard/api.js
  16. 1 1
      src/headless/shared/api/promise.js
  17. 2 2
      src/headless/shared/connection/index.js
  18. 4 4
      src/headless/shared/message.js
  19. 1 1
      src/headless/shared/model-with-messages.js
  20. 1 1
      src/headless/shared/types.ts
  21. 6 6
      src/headless/tests/mock.js
  22. 1 1
      src/headless/types/plugins/emoji/utils.d.ts
  23. 1 1
      src/headless/types/plugins/mam/utils.d.ts
  24. 2 2
      src/headless/types/plugins/muc/affiliations/api.d.ts
  25. 1 1
      src/headless/types/plugins/muc/message.d.ts
  26. 2 2
      src/headless/types/plugins/muc/muc.d.ts
  27. 1 1
      src/headless/types/plugins/roster/api.d.ts
  28. 1 1
      src/headless/types/plugins/vcard/api.d.ts
  29. 2 2
      src/headless/types/shared/connection/index.d.ts
  30. 1 1
      src/headless/types/shared/message.d.ts
  31. 2 2
      src/headless/types/shared/model-with-messages.d.ts
  32. 1 1
      src/headless/types/shared/settings/constants.d.ts
  33. 1 1
      src/headless/utils/color.js
  34. 2 2
      src/headless/utils/init.js
  35. 1 1
      src/plugins/chatview/styles/chat-bottom-panel.scss
  36. 8 8
      src/plugins/chatview/tests/messages.js
  37. 1 1
      src/plugins/chatview/tests/oob.js
  38. 1 1
      src/plugins/dragresize/utils.js
  39. 1 1
      src/plugins/muc-views/templates/occupant.js
  40. 1 1
      src/plugins/muc-views/tests/mentions.js
  41. 1 1
      src/plugins/muc-views/tests/muc-mentions.js
  42. 1 1
      src/plugins/muc-views/tests/muc-registration.js
  43. 2 2
      src/plugins/muc-views/tests/muc.js
  44. 19 19
      src/plugins/rosterview/tests/roster.js
  45. 1 1
      src/shared/autocomplete/suggestion.js
  46. 1 1
      src/shared/chat/chat-content.js
  47. 1 1
      src/shared/chat/message-actions.js
  48. 1 1
      src/shared/chat/utils.js
  49. 2 2
      src/shared/components/split-resize.js
  50. 1 1
      src/shared/modals/tests/user-details-modal.js
  51. 1 1
      src/shared/tests/mock.js
  52. 1 1
      src/types/plugins/dragresize/utils.d.ts
  53. 1 1
      src/types/shared/autocomplete/suggestion.d.ts
  54. 1 1
      src/types/shared/chat/utils.d.ts

+ 10 - 10
CHANGES.md

@@ -34,7 +34,7 @@
 - #2938: Add a service discovery browser
 - #2938: Add a service discovery browser
 - #3672: Images not rendering
 - #3672: Images not rendering
 - #3676: Flyout box is not positioned correctly on mobile devices in "overlayed" mode
 - #3676: Flyout box is not positioned correctly on mobile devices in "overlayed" mode
-- #3689: Chat view not accesible for certain widths in "fullscreen" mode
+- #3689: Chat view not accessible for certain widths in "fullscreen" mode
 - Remove modal from the DOM when it's closed
 - Remove modal from the DOM when it's closed
 - Fix login form style for `classic` theme
 - Fix login form style for `classic` theme
 - Fix css for the `headlines` feed
 - Fix css for the `headlines` feed
@@ -205,7 +205,7 @@ Adding more types of chats:
 ## 10.1.2 (2023-02-17)
 ## 10.1.2 (2023-02-17)
 
 
 - #1490: Busy-loop when fetching registration form fails
 - #1490: Busy-loop when fetching registration form fails
-- #1556: Can't switch to registration form afrer logout
+- #1556: Can't switch to registration form after logout
 - #3137: Various UI/UX bugfixes regarding the registration form
 - #3137: Various UI/UX bugfixes regarding the registration form
 - XEP-0437: Room Activity Indicators (RAI) optimizations
 - XEP-0437: Room Activity Indicators (RAI) optimizations
 
 
@@ -374,7 +374,7 @@ Instead, use `api.settings.get` and `api.settings.set`.
 - Add support for pausing Gif images
 - Add support for pausing Gif images
 - Add limited support for XEP-0316 MUC notifications
 - Add limited support for XEP-0316 MUC notifications
 
 
-### New configuration setings
+### New configuration settings
 
 
 - [show_tab_notifications](https://conversejs.org/docs/html/configuration.html#show-tab-notifications)
 - [show_tab_notifications](https://conversejs.org/docs/html/configuration.html#show-tab-notifications)
 - [muc_clear_messages_on_leave](https://conversejs.org/docs/html/configuration.html#muc-clear-messages-on-leave)
 - [muc_clear_messages_on_leave](https://conversejs.org/docs/html/configuration.html#muc-clear-messages-on-leave)
@@ -494,7 +494,7 @@ Soon we'll deprecate the latter, so prepare now.
 - #2300: Fix message reorder issue after message correction.
 - #2300: Fix message reorder issue after message correction.
 - #2304: Custom emojis (stickers) images not shown
 - #2304: Custom emojis (stickers) images not shown
 - #2307: BootstrapModal is not accessible to plugins
 - #2307: BootstrapModal is not accessible to plugins
-- #2308: Allow getHats method to be overriden in the `overrides` object in plugins.
+- #2308: Allow getHats method to be overridden in the `overrides` object in plugins.
 - #2321: When Converse runs inside a browser extension, enable browser sync and local storage for persistent storage
 - #2321: When Converse runs inside a browser extension, enable browser sync and local storage for persistent storage
 - #1250: Change favicon color when unread messages
 - #1250: Change favicon color when unread messages
 - Updated translations: de, es, fi, fr, gl, hu, nb_NO, oc, pl, pt, pt_BR, ru, tr, uk, zh
 - Updated translations: de, es, fi, fr, gl, hu, nb_NO, oc, pl, pt, pt_BR, ru, tr, uk, zh
@@ -548,7 +548,7 @@ Soon we'll deprecate the latter, so prepare now.
   instances. Still working out a wire protocol for compatibility with other clients.
   instances. Still working out a wire protocol for compatibility with other clients.
   To add custom emojis, edit the `emojis.json` file.
   To add custom emojis, edit the `emojis.json` file.
 
 
-- #129: Add support for [XEP-0156: Disovering Alternative XMPP Connection Methods](https://xmpp.org/extensions/xep-0156.html). Only XML is supported for now.
+- #129: Add support for [XEP-0156: Discovering Alternative XMPP Connection Methods](https://xmpp.org/extensions/xep-0156.html). Only XML is supported for now.
 - #1105: Support for storing persistent data in IndexedDB
 - #1105: Support for storing persistent data in IndexedDB
 - #1253: Show contacts with unread messages at the top of the roster
 - #1253: Show contacts with unread messages at the top of the roster
 - #1322 Display occupants’ avatars in the occupants list
 - #1322 Display occupants’ avatars in the occupants list
@@ -858,7 +858,7 @@ version 1.7.0 and below. You're advised to stay on Converse version 4.1.2 until
 - #1268 Switch from SASS variables to CSS custom properties
 - #1268 Switch from SASS variables to CSS custom properties
 - #1278 Replace the default avatar with a SVG version
 - #1278 Replace the default avatar with a SVG version
 - #1288 Add CSS classes to differentiate between incoming and outgoing messages
 - #1288 Add CSS classes to differentiate between incoming and outgoing messages
-- #1305 added value 'all' for 'show_desktop_notifications' to notifiy even if converse.js is open
+- #1305 added value 'all' for 'show_desktop_notifications' to notify even if converse.js is open
 - #1306 added option `notification_delay`
 - #1306 added option `notification_delay`
 - #1312 Error `unrecognized expression` in Safari
 - #1312 Error `unrecognized expression` in Safari
 - #1316 show version info in login dialog
 - #1316 show version info in login dialog
@@ -1225,7 +1225,7 @@ version 1.7.0 and below. You're advised to stay on Converse version 4.1.2 until
 - It wasn't possible to add or remove bookmarks via the "Open Rooms" list.
 - It wasn't possible to add or remove bookmarks via the "Open Rooms" list.
 - #879 Text in links are converted to smileys leading to non-clickable links.
 - #879 Text in links are converted to smileys leading to non-clickable links.
 - #899: Only touch `stamp-npm` if `npm install` was successful
 - #899: Only touch `stamp-npm` if `npm install` was successful
-- #902 `make build` dependends on non-existing files
+- #902 `make build` depends on non-existing files
 
 
 ## 3.1.1 (2017-07-12)
 ## 3.1.1 (2017-07-12)
 
 
@@ -1304,7 +1304,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 ## 3.0.1 (2017-04-04)
 ## 3.0.1 (2017-04-04)
 
 
 - Bugfix. Endless spinner when trying to log in after rendering the registration form. [jcbrand]
 - Bugfix. Endless spinner when trying to log in after rendering the registration form. [jcbrand]
-- #585 Duplicate contact created due to JID case sensivity [saganshul]
+- #585 Duplicate contact created due to JID case sensitivity [saganshul]
 - #628 Fixes the bug in displaying chat status during private chat. [saganshul]
 - #628 Fixes the bug in displaying chat status during private chat. [saganshul]
 - #628 Changes the message displayed while typing from a different resource of the same user. [smitbose]
 - #628 Changes the message displayed while typing from a different resource of the same user. [smitbose]
 - #675 Time format made configurable.
 - #675 Time format made configurable.
@@ -1601,7 +1601,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 - #487 Empty the resources array when the resource is null [rlanvin]
 - #487 Empty the resources array when the resource is null [rlanvin]
 - #534 Updated Russian translation [LaconicTranslator]
 - #534 Updated Russian translation [LaconicTranslator]
 - #555 The status restored from sessionStorage is never updated [jcbrand]
 - #555 The status restored from sessionStorage is never updated [jcbrand]
-- #559 Remove reconnection timer once connected succesfully [m0cs]
+- #559 Remove reconnection timer once connected successfully [m0cs]
 
 
 ## 0.10.0 (2015-11-05)
 ## 0.10.0 (2015-11-05)
 
 
@@ -1677,7 +1677,7 @@ More info here: https://github.com/LeaVerou/awesomplete/pull/17082
 
 
 - Add the ability to log in automatically. [jcbrand]
 - Add the ability to log in automatically. [jcbrand]
 - Remove `type=email` from JID field in login form. Resulting validation error confuses people. [jcbrand]
 - Remove `type=email` from JID field in login form. Resulting validation error confuses people. [jcbrand]
-- Add Ukranian translations [Andriy Kopystyansky]
+- Add Ukrainian translations [Andriy Kopystyansky]
 - #244 Add the ability to log in anonymously. [jcbrand]
 - #244 Add the ability to log in anonymously. [jcbrand]
 - #344 Enable the path to the sound files to be configured [thierrytiti and jcbrand]
 - #344 Enable the path to the sound files to be configured [thierrytiti and jcbrand]
 - #370 Unable to register a new user to ejabberd 2.1.11. [gbonvehi]
 - #370 Unable to register a new user to ejabberd 2.1.11. [gbonvehi]

+ 10 - 10
docs/source/configuration.rst

@@ -326,7 +326,7 @@ auto_fill_history_gaps
 
 
 * Default:  ``true``
 * Default:  ``true``
 
 
-Determins whether Converse automatically fills gaps in the chat history.
+Determines whether Converse automatically fills gaps in the chat history.
 If set to false, a placeholder appears which can be clicked to fetch the
 If set to false, a placeholder appears which can be clicked to fetch the
 missing messages.
 missing messages.
 
 
@@ -401,7 +401,7 @@ in to their XMPP account.
   log the user in.
   log the user in.
 
 
   If `authentication`_ set to ``login`` the situation is much more
   If `authentication`_ set to ``login`` the situation is much more
-  ambiguous, since we don't have a way to distinguish between wether we're
+  ambiguous, since we don't have a way to distinguish between whether we're
   restoring a previous session (``keepalive``) or whether we're
   restoring a previous session (``keepalive``) or whether we're
   automatically setting up a new session (``auto_login``).
   automatically setting up a new session (``auto_login``).
 
 
@@ -440,7 +440,7 @@ unexpectedly.
 
 
 This option works best when you have `authentication`_ set to ``prebind`` and have
 This option works best when you have `authentication`_ set to ``prebind`` and have
 also specified a ``prebind_url`` URL, from where Converse can fetch the BOSH
 also specified a ``prebind_url`` URL, from where Converse can fetch the BOSH
-tokens. In this case, Converse will automaticallly reconnect when the
+tokens. In this case, Converse will automatically reconnect when the
 connection drops but also reestablish earlier lost connections (due to
 connection drops but also reestablish earlier lost connections (due to
 network outages, closing your laptop etc.).
 network outages, closing your laptop etc.).
 
 
@@ -643,7 +643,7 @@ chatstate_notification_blacklist
 A list of JIDs to be ignored when showing desktop notifications of changed chat states.
 A list of JIDs to be ignored when showing desktop notifications of changed chat states.
 
 
 Some user's clients routinely connect and disconnect (likely on mobile) and
 Some user's clients routinely connect and disconnect (likely on mobile) and
-each time a chat state notificaion is received (``online`` when connecting and
+each time a chat state notification is received (``online`` when connecting and
 then ``offline`` when disconnecting).
 then ``offline`` when disconnecting).
 
 
 When desktop notifications are turned on (see `show-desktop-notifications`_),
 When desktop notifications are turned on (see `show-desktop-notifications`_),
@@ -1461,7 +1461,7 @@ muc_roomid_policy_hint
 
 
 * Default: ``null``
 * Default: ``null``
 
 
-This option can be used in conjuction with `muc_roomid_policy`_ in order to give
+This option can be used in conjunction with `muc_roomid_policy`_ in order to give
 a written explanation of the imposed room id policy. You can use the html-tags
 a written explanation of the imposed room id policy. You can use the html-tags
 ``<br>``, ``<b>``, and ``<em>`` to allow some basic styling.
 ``<br>``, ``<b>``, and ``<em>`` to allow some basic styling.
 
 
@@ -1514,7 +1514,7 @@ to build the list of desired info messages that will be shown:
 
 
 By default all info messages are shown.
 By default all info messages are shown.
 
 
-The behaviour of this setting is whitelisting, so if it is overriden all the desired
+The behaviour of this setting is whitelisting, so if it is overridden all the desired
 events must be specified.
 events must be specified.
 
 
 If an empty list is provided, no info message will be displayed at all.
 If an empty list is provided, no info message will be displayed at all.
@@ -1734,7 +1734,7 @@ The URL path at which these resources are loaded is normally set by the ``public
 setting of Webpack but this means that it's hardcoded to a particular value at
 setting of Webpack but this means that it's hardcoded to a particular value at
 compile time.
 compile time.
 
 
-This configuration seting allows this value to be set at runtime as well.
+This configuration setting allows this value to be set at runtime as well.
 
 
 .. _persistent-store:
 .. _persistent-store:
 
 
@@ -2012,7 +2012,7 @@ show_background
 
 
 * Default: ``true``
 * Default: ``true``
 
 
-Wether a background with the Converse logo should be shown.
+Whether a background with the Converse logo should be shown.
 
 
 
 
 show_chat_state_notifications
 show_chat_state_notifications
@@ -2177,7 +2177,7 @@ sounds_path
 * Default: ``${assets_path}/sounds/``
 * Default: ``${assets_path}/sounds/``
 
 
 This option only makes sense in conjunction with the `play_sounds`_ option and
 This option only makes sense in conjunction with the `play_sounds`_ option and
-specifies the URL of the sound files to be played (exluding the file names
+specifies the URL of the sound files to be played (excluding the file names
 themselves).
 themselves).
 
 
 In order to support all browsers we need both an MP3 and an Ogg file. Make sure
 In order to support all browsers we need both an MP3 and an Ogg file. Make sure
@@ -2262,7 +2262,7 @@ colorize_username
 
 
 * Default: ``false``
 * Default: ``false``
 
 
-Wether nicknames should be colorized, in compliance with `XEP-0392: Consistent Color Generation <https://xmpp.org/extensions/xep-0392.html>`_.
+Whether nicknames should be colorized, in compliance with `XEP-0392: Consistent Color Generation <https://xmpp.org/extensions/xep-0392.html>`_.
 
 
 time_format
 time_format
 -----------
 -----------

+ 1 - 1
docs/source/features.rst

@@ -156,7 +156,7 @@ Moderating chatrooms
 Here are the different commands that may be used to moderate a chatroom:
 Here are the different commands that may be used to moderate a chatroom:
 
 
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+
-| Event Type | When is it triggered?                                                                        | Example (substitue $nickname with an actual user's nickname)  |
+| Event Type | When is it triggered?                                                                        | Example (substitute $nickname with an actual user's nickname)  |
 +============+==============================================================================================+===============================================================+
 +============+==============================================================================================+===============================================================+
 | **ban**    | Ban a user from the chatroom. They will not be able to join again.                           | /ban $nickname                                                |
 | **ban**    | Ban a user from the chatroom. They will not be able to join again.                           | /ban $nickname                                                |
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+
 +------------+----------------------------------------------------------------------------------------------+---------------------------------------------------------------+

+ 1 - 1
docs/source/plugin_development.rst

@@ -550,7 +550,7 @@ as follows:
 
 
 Our plugin was able to add data to the payload without requiring any kind of
 Our plugin was able to add data to the payload without requiring any kind of
 knowledge from ``hookTriggerExample`` about ``hookListenerExample`` and
 knowledge from ``hookTriggerExample`` about ``hookListenerExample`` and
-without any kind of coupling betwee the code.
+without any kind of coupling between the code.
 
 
 A good example of a real-world hook in Converse, is the
 A good example of a real-world hook in Converse, is the
 `getMessageActionButtons <https://conversejs.org/docs/html/api/-_converse.html#event:getMessageActionButtons>`_
 `getMessageActionButtons <https://conversejs.org/docs/html/api/-_converse.html#event:getMessageActionButtons>`_

+ 1 - 1
docs/source/session.rst

@@ -183,7 +183,7 @@ which does the above. You'd have to `configure Converse.js to use SASL-EXTERNAL
 and then set up Prosody with that plugin. (Note, I haven't yet tested this setup personally).
 and then set up Prosody with that plugin. (Note, I haven't yet tested this setup personally).
 
 
 This is however not a cross-platform solution and won't work for hosters who
 This is however not a cross-platform solution and won't work for hosters who
-want to support all or multple XMPP servers.
+want to support all or multiple XMPP servers.
 
 
 Storing the password in localStorage
 Storing the password in localStorage
 ------------------------------------
 ------------------------------------

+ 1 - 1
docs/source/setup.rst

@@ -119,7 +119,7 @@ Lets say the domain under which you host Converse is *example.org:80*,
 but the domain of your connection manager or the domain of
 but the domain of your connection manager or the domain of
 your HTTP file server (for `XEP-0363 HTTP File Upload <https://xmpp.org/extensions/xep-0363.html>`_)
 your HTTP file server (for `XEP-0363 HTTP File Upload <https://xmpp.org/extensions/xep-0363.html>`_)
 is at a different domain, either a different port like *example.org:5280* or a
 is at a different domain, either a different port like *example.org:5280* or a
-different name like *elsehwere.org*.
+different name like *elsewhere.org*.
 
 
 In such a situation the same-origin security policy of the browser comes into force.
 In such a situation the same-origin security policy of the browser comes into force.
 For security purposes a browser does not by default allow a website to
 For security purposes a browser does not by default allow a website to

+ 1 - 1
docs/source/setup_dev_environment.rst

@@ -78,7 +78,7 @@ If this directory does NOT exist, something must have gone wrong.
 Double-check the output of ``make watch`` to see if there are any errors
 Double-check the output of ``make watch`` to see if there are any errors
 listed.
 listed.
 
 
-For support, you can ask in our chatroom: `dicuss@conference.conversejs.org <xmpp:discuss@conference.conversejs.org>`_.
+For support, you can ask in our chatroom: `discuss@conference.conversejs.org <xmpp:discuss@conference.conversejs.org>`_.
 
 
 If you don't have an XMPP client installed, follow this link to
 If you don't have an XMPP client installed, follow this link to
 `conversejs.org <https://conversejs.org/fullscreen#converse/room?jid=discuss@conference.conversejs.org>`_
 `conversejs.org <https://conversejs.org/fullscreen#converse/room?jid=discuss@conference.conversejs.org>`_

+ 1 - 1
docs/source/theming.rst

@@ -87,7 +87,7 @@ theme file that sets the various CSS variables (as described above).
 For other CSS-related changes, you can make a specific
 For other CSS-related changes, you can make a specific
 CSS rule with that matches the element you want to change.
 CSS rule with that matches the element you want to change.
 
 
-Sometimes it might however be neccessary to modify the core CSS files from
+Sometimes it might however be necessary to modify the core CSS files from
 Converse, for example if you're developing new features or fixing styling bugs.
 Converse, for example if you're developing new features or fixing styling bugs.
 
 
 The CSS files are generated from `Sass <http://sass-lang.com>`_ files that end in ``.scss`` and
 The CSS files are generated from `Sass <http://sass-lang.com>`_ files that end in ``.scss`` and

+ 2 - 2
src/headless/plugins/emoji/utils.js

@@ -87,7 +87,7 @@ export function convertASCII2Emoji (str) {
     // Replace ASCII smileys
     // Replace ASCII smileys
     return str.replace(ASCII_REPLACE_REGEX, (entire, _, m2, m3) => {
     return str.replace(ASCII_REPLACE_REGEX, (entire, _, m2, m3) => {
         if( (typeof m3 === 'undefined') || (m3 === '') || (!(u.unescapeHTML(m3) in ASCII_LIST)) ) {
         if( (typeof m3 === 'undefined') || (m3 === '') || (!(u.unescapeHTML(m3) in ASCII_LIST)) ) {
-            // if the ascii doesnt exist just return the entire match
+            // if the ascii doesn't exist just return the entire match
             return entire;
             return entire;
         }
         }
         m3 = u.unescapeHTML(m3);
         m3 = u.unescapeHTML(m3);
@@ -180,7 +180,7 @@ function shortnamesToUnicode (str) {
  * Determines whether the passed in string is just a single emoji shortname;
  * Determines whether the passed in string is just a single emoji shortname;
  * @namespace u
  * @namespace u
  * @method u.isOnlyEmojis
  * @method u.isOnlyEmojis
- * @param { String } text - A string which migh be just an emoji shortname
+ * @param { String } text - A string which might be just an emoji shortname
  * @returns { Boolean }
  * @returns { Boolean }
  */
  */
 export function isOnlyEmojis (text) {
 export function isOnlyEmojis (text) {

+ 1 - 1
src/headless/plugins/mam/utils.js

@@ -44,7 +44,7 @@ export async function onMAMError(e, iq) {
  * currently not supported in converse.js.
  * currently not supported in converse.js.
  *
  *
  * Per JID preferences will be set in chat boxes, so it'll
  * Per JID preferences will be set in chat boxes, so it'll
- * probbaly be handled elsewhere in any case.
+ * probably be handled elsewhere in any case.
  *
  *
  * @param {Element} iq
  * @param {Element} iq
  * @param {Model} feature
  * @param {Model} feature

+ 1 - 1
src/headless/plugins/muc/affiliations/api.js

@@ -14,7 +14,7 @@ export default {
      */
      */
     affiliations: {
     affiliations: {
         /**
         /**
-         * Set the given affliation for the given JIDs in the specified MUCs
+         * Set the given affiliation for the given JIDs in the specified MUCs
          * @typedef {Object} User
          * @typedef {Object} User
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {Array} User.affiliation - The new affiliation for this user
          * @property {Array} User.affiliation - The new affiliation for this user

+ 1 - 1
src/headless/plugins/muc/message.js

@@ -33,7 +33,7 @@ class MUCMessage extends BaseMessage {
     }
     }
 
 
     /**
     /**
-     * Determines whether this messsage may be moderated,
+     * Determines whether this message may be moderated,
      * based on configuration settings and server support.
      * based on configuration settings and server support.
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @returns {Promise<boolean>}
      * @returns {Promise<boolean>}

+ 3 - 3
src/headless/plugins/muc/muc.js

@@ -1312,7 +1312,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
 
 
     /**
     /**
      * Use converse-disco to populate the features {@link Model} which
      * Use converse-disco to populate the features {@link Model} which
-     * is stored as an attibute on this {@link MUC}.
+     * is stored as an attribute on this {@link MUC}.
      * The results may be cached. If you want to force fetching the features from the
      * The results may be cached. If you want to force fetching the features from the
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * @returns {Promise}
      * @returns {Promise}
@@ -1589,7 +1589,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
      * @param {MUCOccupant} occupant
      * @param {MUCOccupant} occupant
      * @param {string} role
      * @param {string} role
      * @param {string} reason
      * @param {string} reason
-     * @param {function} onSuccess - callback for a succesful response
+     * @param {function} onSuccess - callback for a successful response
      * @param {function} onError - callback for an error response
      * @param {function} onError - callback for an error response
      */
      */
     setRole(occupant, role, reason, onSuccess, onError) {
     setRole(occupant, role, reason, onSuccess, onError) {
@@ -2587,7 +2587,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
                 !['owner', 'admin'].includes(occupant.get('affiliation')) &&
                 !['owner', 'admin'].includes(occupant.get('affiliation')) &&
                 isInfoVisible(converse.MUC_ROLE_CHANGES.OP)
                 isInfoVisible(converse.MUC_ROLE_CHANGES.OP)
             ) {
             ) {
-                // Oly show this message if the user isn't already
+                // Only show this message if the user isn't already
                 // an admin or owner, otherwise this isn't new information.
                 // an admin or owner, otherwise this isn't new information.
                 this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.OP);
                 this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.OP);
             }
             }

+ 1 - 1
src/headless/plugins/roster/api.js

@@ -74,7 +74,7 @@ export default {
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {string} [message=''] - An optional message to include with the presence subscription
          * @param {string} [message=''] - An optional message to include with the presence subscription
-         * @param {boolean} subscribe - Whether a presense subscription should
+         * @param {boolean} subscribe - Whether a presence subscription should
          *      be sent out to the contact being added.
          *      be sent out to the contact being added.
          * @returns {Promise<RosterContact>}
          * @returns {Promise<RosterContact>}
          * @example
          * @example

+ 1 - 1
src/headless/plugins/vcard/api.js

@@ -35,7 +35,7 @@ export default {
          *     'fn': 'John Doe',
          *     'fn': 'John Doe',
          *     'nickname': 'jdoe'
          *     'nickname': 'jdoe'
          * }).then(() => {
          * }).then(() => {
-         *     // Succes
+         *     // Success
          * }).catch((e) => {
          * }).catch((e) => {
          *     // Failure, e is your error object
          *     // Failure, e is your error object
          * }).
          * }).

+ 1 - 1
src/headless/shared/api/promise.js

@@ -10,7 +10,7 @@ export default {
      *
      *
      * Some of these events are also available as [ES2015 Promises](http://es6-features.org/#PromiseUsage)
      * Some of these events are also available as [ES2015 Promises](http://es6-features.org/#PromiseUsage)
      * although not all of them could logically act as promises, since some events
      * although not all of them could logically act as promises, since some events
-     * might be fired multpile times whereas promises are to be resolved (or
+     * might be fired multiple times whereas promises are to be resolved (or
      * rejected) only once.
      * rejected) only once.
      *
      *
      * Events which are also promises include:
      * Events which are also promises include:

+ 2 - 2
src/headless/shared/connection/index.js

@@ -74,11 +74,11 @@ export class Connection extends Strophe.Connection {
     }
     }
 
 
     /**
     /**
-     * Adds support for XEP-0156 by quering the XMPP server for alternate
+     * Adds support for XEP-0156 by querying the XMPP server for alternate
      * connection methods. This allows users to use the websocket or BOSH
      * connection methods. This allows users to use the websocket or BOSH
      * connection of their own XMPP server instead of a proxy provided by the
      * connection of their own XMPP server instead of a proxy provided by the
      * host of Converse.js.
      * host of Converse.js.
-     * @method Connnection.discoverConnectionMethods
+     * @method Connection.discoverConnectionMethods
      * @param {string} domain
      * @param {string} domain
      */
      */
     async discoverConnectionMethods (domain) {
     async discoverConnectionMethods (domain) {

+ 4 - 4
src/headless/shared/message.js

@@ -145,7 +145,7 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
     }
     }
 
 
     /**
     /**
-     * Determines whether this messsage may be retracted by the current user.
+     * Determines whether this message may be retracted by the current user.
      * @returns { Boolean }
      * @returns { Boolean }
      */
      */
     mayBeRetracted() {
     mayBeRetracted() {
@@ -191,7 +191,7 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
     getUploadRequestMetadata(stanza) {
     getUploadRequestMetadata(stanza) {
         const headers = sizzle(`slot[xmlns="${Strophe.NS.HTTPUPLOAD}"] put header`, stanza);
         const headers = sizzle(`slot[xmlns="${Strophe.NS.HTTPUPLOAD}"] put header`, stanza);
         // https://xmpp.org/extensions/xep-0363.html#request
         // https://xmpp.org/extensions/xep-0363.html#request
-        // TODO: Can't set the Cookie header in JavaScipt, instead cookies need
+        // TODO: Can't set the Cookie header in JavaScript, instead cookies need
         // to be manually set via document.cookie, so we're leaving it out here.
         // to be manually set via document.cookie, so we're leaving it out here.
         return {
         return {
             headers: headers
             headers: headers
@@ -271,11 +271,11 @@ class BaseMessage extends ModelWithVCard(ModelWithContact(ColorAwareModel(Model)
             let message;
             let message;
             if (xhr.responseText) {
             if (xhr.responseText) {
                 message = __(
                 message = __(
-                    'Sorry, could not succesfully upload your file. Your server’s response: "%1$s"',
+                    'Sorry, could not successfully upload your file. Your server’s response: "%1$s"',
                     xhr.responseText
                     xhr.responseText
                 );
                 );
             } else {
             } else {
-                message = __('Sorry, could not succesfully upload your file.');
+                message = __('Sorry, could not successfully upload your file.');
             }
             }
             this.save({
             this.save({
                 is_ephemeral: true,
                 is_ephemeral: true,

+ 1 - 1
src/headless/shared/model-with-messages.js

@@ -598,7 +598,7 @@ export default function ModelWithMessages(BaseModel) {
         }
         }
 
 
         /**
         /**
-         * Used by sub-classes to indicate wether a message is a chat
+         * Used by sub-classes to indicate whether a message is a chat
          * message, as opposed to error or info messages.
          * message, as opposed to error or info messages.
          * @param {BaseMessage} _message
          * @param {BaseMessage} _message
          * @returns {boolean}
          * @returns {boolean}

+ 1 - 1
src/headless/shared/types.ts

@@ -210,7 +210,7 @@ export type MessageAttributes = EncryptionAttrs &
         retracted_id: string; // The `id` attribute of a XEP-424 <retracted> element
         retracted_id: string; // The `id` attribute of a XEP-424 <retracted> element
         sender: 'me' | 'them'; // Whether the message was sent by the current user or someone else
         sender: 'me' | 'them'; // Whether the message was sent by the current user or someone else
         spoiler_hint: string; //  The XEP-0382 spoiler hint
         spoiler_hint: string; //  The XEP-0382 spoiler hint
-        stanza_id: string; // The XEP-0359 Stanza ID. Note: the key is actualy `stanza_id ${by_jid}` and there can be multiple.
+        stanza_id: string; // The XEP-0359 Stanza ID. Note: the key is actually `stanza_id ${by_jid}` and there can be multiple.
         subject: string; // The <subject> element value
         subject: string; // The <subject> element value
         thread: string; // The <thread> element value
         thread: string; // The <thread> element value
         time: string; // The time (in ISO8601 format), either given by the XEP-0203 <delay> element, or of receipt.
         time: string; // The time (in ISO8601 format), either given by the XEP-0203 <delay> element, or of receipt.

+ 6 - 6
src/headless/tests/mock.js

@@ -47,19 +47,19 @@ jasmine.toEqualStanza = function toEqualStanza() {
 export const domain = 'montague.lit';
 export const domain = 'montague.lit';
 
 
 export const current_contacts_map = {
 export const current_contacts_map = {
-    'Mercutio': ['Colleagues', 'friends & acquaintences'],
-    'Juliet Capulet': ['friends & acquaintences'],
+    'Mercutio': ['Colleagues', 'friends & acquaintances'],
+    'Juliet Capulet': ['friends & acquaintances'],
     'Lady Montague': ['Colleagues', 'Family'],
     'Lady Montague': ['Colleagues', 'Family'],
     'Lord Montague': ['Family'],
     'Lord Montague': ['Family'],
-    'Friar Laurence': ['friends & acquaintences'],
-    'Tybalt': ['friends & acquaintences'],
+    'Friar Laurence': ['friends & acquaintances'],
+    'Tybalt': ['friends & acquaintances'],
     'Lady Capulet': ['ænemies'],
     'Lady Capulet': ['ænemies'],
-    'Benviolo': ['friends & acquaintences'],
+    'Benviolo': ['friends & acquaintances'],
     'Balthasar': ['Colleagues'],
     'Balthasar': ['Colleagues'],
     'Peter': ['Colleagues'],
     'Peter': ['Colleagues'],
     'Abram': ['Colleagues'],
     'Abram': ['Colleagues'],
     'Sampson': ['Colleagues'],
     'Sampson': ['Colleagues'],
-    'Gregory': ['friends & acquaintences'],
+    'Gregory': ['friends & acquaintances'],
     'Potpan': [],
     'Potpan': [],
     'Friar John': [],
     'Friar John': [],
 };
 };

+ 1 - 1
src/headless/types/plugins/emoji/utils.d.ts

@@ -20,7 +20,7 @@ export function getCodePointReferences(text: string): any[];
  * Determines whether the passed in string is just a single emoji shortname;
  * Determines whether the passed in string is just a single emoji shortname;
  * @namespace u
  * @namespace u
  * @method u.isOnlyEmojis
  * @method u.isOnlyEmojis
- * @param { String } text - A string which migh be just an emoji shortname
+ * @param { String } text - A string which might be just an emoji shortname
  * @returns { Boolean }
  * @returns { Boolean }
  */
  */
 export function isOnlyEmojis(text: string): boolean;
 export function isOnlyEmojis(text: string): boolean;

+ 1 - 1
src/headless/types/plugins/mam/utils.d.ts

@@ -12,7 +12,7 @@ export function onMAMError(e: Element | Error, iq: Element): Promise<void>;
  * currently not supported in converse.js.
  * currently not supported in converse.js.
  *
  *
  * Per JID preferences will be set in chat boxes, so it'll
  * Per JID preferences will be set in chat boxes, so it'll
- * probbaly be handled elsewhere in any case.
+ * probably be handled elsewhere in any case.
  *
  *
  * @param {Element} iq
  * @param {Element} iq
  * @param {Model} feature
  * @param {Model} feature

+ 2 - 2
src/headless/types/plugins/muc/affiliations/api.d.ts

@@ -1,7 +1,7 @@
 declare namespace _default {
 declare namespace _default {
     namespace affiliations {
     namespace affiliations {
         /**
         /**
-         * Set the given affliation for the given JIDs in the specified MUCs
+         * Set the given affiliation for the given JIDs in the specified MUCs
          * @typedef {Object} User
          * @typedef {Object} User
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {string} User.jid - The JID of the user whose affiliation will change
          * @property {Array} User.affiliation - The new affiliation for this user
          * @property {Array} User.affiliation - The new affiliation for this user
@@ -54,4 +54,4 @@ declare namespace _default {
 }
 }
 export default _default;
 export default _default;
 export type MemberListItem = any;
 export type MemberListItem = any;
-//# sourceMappingURL=api.d.ts.map
+//# sourceMappingURL=api.d.ts.map

+ 1 - 1
src/headless/types/plugins/muc/message.d.ts

@@ -3,7 +3,7 @@ declare class MUCMessage extends BaseMessage {
     get occupants(): any;
     get occupants(): any;
     getDisplayName(): any;
     getDisplayName(): any;
     /**
     /**
-     * Determines whether this messsage may be moderated,
+     * Determines whether this message may be moderated,
      * based on configuration settings and server support.
      * based on configuration settings and server support.
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @method _converse.ChatRoomMessages#mayBeModerated
      * @returns {Promise<boolean>}
      * @returns {Promise<boolean>}

+ 2 - 2
src/headless/types/plugins/muc/muc.d.ts

@@ -558,7 +558,7 @@ declare class MUC extends MUC_base {
     getDiscoInfoFields(): Promise<any>;
     getDiscoInfoFields(): Promise<any>;
     /**
     /**
      * Use converse-disco to populate the features {@link Model} which
      * Use converse-disco to populate the features {@link Model} which
-     * is stored as an attibute on this {@link MUC}.
+     * is stored as an attribute on this {@link MUC}.
      * The results may be cached. If you want to force fetching the features from the
      * The results may be cached. If you want to force fetching the features from the
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * server, call {@link MUC#refreshDiscoInfo} instead.
      * @returns {Promise}
      * @returns {Promise}
@@ -625,7 +625,7 @@ declare class MUC extends MUC_base {
      * @param {MUCOccupant} occupant
      * @param {MUCOccupant} occupant
      * @param {string} role
      * @param {string} role
      * @param {string} reason
      * @param {string} reason
-     * @param {function} onSuccess - callback for a succesful response
+     * @param {function} onSuccess - callback for a successful response
      * @param {function} onError - callback for an error response
      * @param {function} onError - callback for an error response
      */
      */
     setRole(occupant: import("./occupant.js").default, role: string, reason: string, onSuccess: Function, onError: Function): any;
     setRole(occupant: import("./occupant.js").default, role: string, reason: string, onSuccess: Function, onError: Function): any;

+ 1 - 1
src/headless/types/plugins/roster/api.d.ts

@@ -45,7 +45,7 @@ declare namespace _default {
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [persist=true] - Whether the contact should be persisted to the user's roster.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {boolean} [subscribe=true] - Whether we should subscribe to the contacts presence updates.
          * @param {string} [message=''] - An optional message to include with the presence subscription
          * @param {string} [message=''] - An optional message to include with the presence subscription
-         * @param {boolean} subscribe - Whether a presense subscription should
+         * @param {boolean} subscribe - Whether a presence subscription should
          *      be sent out to the contact being added.
          *      be sent out to the contact being added.
          * @returns {Promise<RosterContact>}
          * @returns {Promise<RosterContact>}
          * @example
          * @example

+ 1 - 1
src/headless/types/plugins/vcard/api.d.ts

@@ -16,7 +16,7 @@ declare namespace _default {
          *     'fn': 'John Doe',
          *     'fn': 'John Doe',
          *     'nickname': 'jdoe'
          *     'nickname': 'jdoe'
          * }).then(() => {
          * }).then(() => {
-         *     // Succes
+         *     // Success
          * }).catch((e) => {
          * }).catch((e) => {
          *     // Failure, e is your error object
          *     // Failure, e is your error object
          * }).
          * }).

+ 2 - 2
src/headless/types/shared/connection/index.d.ts

@@ -13,11 +13,11 @@ export class Connection extends Connection_base {
     bind(): Promise<void>;
     bind(): Promise<void>;
     onDomainDiscovered(response: any): Promise<void>;
     onDomainDiscovered(response: any): Promise<void>;
     /**
     /**
-     * Adds support for XEP-0156 by quering the XMPP server for alternate
+     * Adds support for XEP-0156 by querying the XMPP server for alternate
      * connection methods. This allows users to use the websocket or BOSH
      * connection methods. This allows users to use the websocket or BOSH
      * connection of their own XMPP server instead of a proxy provided by the
      * connection of their own XMPP server instead of a proxy provided by the
      * host of Converse.js.
      * host of Converse.js.
-     * @method Connnection.discoverConnectionMethods
+     * @method Connection.discoverConnectionMethods
      * @param {string} domain
      * @param {string} domain
      */
      */
     discoverConnectionMethods(domain: string): Promise<void>;
     discoverConnectionMethods(domain: string): Promise<void>;

+ 1 - 1
src/headless/types/shared/message.d.ts

@@ -261,7 +261,7 @@ declare class BaseMessage extends BaseMessage_base {
      */
      */
     isFollowup(): boolean;
     isFollowup(): boolean;
     /**
     /**
-     * Determines whether this messsage may be retracted by the current user.
+     * Determines whether this message may be retracted by the current user.
      * @returns { Boolean }
      * @returns { Boolean }
      */
      */
     mayBeRetracted(): boolean;
     mayBeRetracted(): boolean;

+ 2 - 2
src/headless/types/shared/model-with-messages.d.ts

@@ -134,7 +134,7 @@ export default function ModelWithMessages<T extends import("./types").ModelExten
         editEarlierMessage(): void;
         editEarlierMessage(): void;
         editLaterMessage(): any;
         editLaterMessage(): any;
         /**
         /**
-         * Used by sub-classes to indicate wether a message is a chat
+         * Used by sub-classes to indicate whether a message is a chat
          * message, as opposed to error or info messages.
          * message, as opposed to error or info messages.
          * @param {BaseMessage} _message
          * @param {BaseMessage} _message
          * @returns {boolean}
          * @returns {boolean}
@@ -309,4 +309,4 @@ export default function ModelWithMessages<T extends import("./types").ModelExten
     };
     };
 } & T;
 } & T;
 import { Model } from '@converse/skeletor';
 import { Model } from '@converse/skeletor';
-//# sourceMappingURL=model-with-messages.d.ts.map
+//# sourceMappingURL=model-with-messages.d.ts.map

+ 1 - 1
src/headless/types/shared/settings/constants.d.ts

@@ -63,7 +63,7 @@ export type ConfigurationSettings = {
     i18n?: string;
     i18n?: string;
     jid?: string;
     jid?: string;
     keepalive?: boolean;
     keepalive?: boolean;
-    loglevel?: ("debug" | "info" | "eror");
+    loglevel?: ("debug" | "info" | "error");
     locales?: Array<string>;
     locales?: Array<string>;
     nickname?: string;
     nickname?: string;
     password?: string;
     password?: string;

+ 1 - 1
src/headless/utils/color.js

@@ -10,7 +10,7 @@ const cache = new Map();
  * @returns {Promise<string>}
  * @returns {Promise<string>}
  */
  */
 export async function colorize(s) {
 export async function colorize(s) {
-    // We cache results in `cache`, to avoid unecessary computing (as it can be called very often)
+    // We cache results in `cache`, to avoid unnecessary computing (as it can be called very often)
     const v = cache.get(s);
     const v = cache.get(s);
     if (v) return v;
     if (v) return v;
 
 

+ 2 - 2
src/headless/utils/init.js

@@ -162,7 +162,7 @@ function saveJIDtoSession(_converse, jid) {
         domain,
         domain,
         // We use the `active` flag to determine whether we should use the values from sessionStorage.
         // We use the `active` flag to determine whether we should use the values from sessionStorage.
         // When "cloning" a tab (e.g. via middle-click), the `active` flag will be set and we'll create
         // When "cloning" a tab (e.g. via middle-click), the `active` flag will be set and we'll create
-        // a new empty user session, otherwise it'll be false and we can re-use the user session.
+        // a new empty user session, otherwise it'll be false and we can reuse the user session.
         // When the tab is reloaded, the `active` flag is set to `false`.
         // When the tab is reloaded, the `active` flag is set to `false`.
         "active": true,
         "active": true,
     });
     });
@@ -379,7 +379,7 @@ export async function attemptNonPreboundSession(credentials, automatic) {
         const jid = _converse.session.get("jid");
         const jid = _converse.session.get("jid");
         // XXX: If EITHER ``keepalive`` or ``auto_login`` is ``true`` and
         // XXX: If EITHER ``keepalive`` or ``auto_login`` is ``true`` and
         // ``authentication`` is set to ``login``, then Converse will try to log the user in,
         // ``authentication`` is set to ``login``, then Converse will try to log the user in,
-        // since we don't have a way to distinguish between wether we're
+        // since we don't have a way to distinguish between whether we're
         // restoring a previous session (``keepalive``) or whether we're
         // restoring a previous session (``keepalive``) or whether we're
         // automatically setting up a new session (``auto_login``).
         // automatically setting up a new session (``auto_login``).
         // So we can't do the check (!automatic || _converse.api.settings.get("auto_login")) here.
         // So we can't do the check (!automatic || _converse.api.settings.get("auto_login")) here.

+ 1 - 1
src/plugins/chatview/styles/chat-bottom-panel.scss

@@ -62,7 +62,7 @@
                     width: 100%;
                     width: 100%;
                     border: none;
                     border: none;
                     min-height: var(--chat-textarea-height);
                     min-height: var(--chat-textarea-height);
-                    margin-bottom: -4px; // Not clear why this is necessar :(
+                    margin-bottom: -4px; // Not clear why this is necessary :(
                     resize: none;
                     resize: none;
                     &.spoiler {
                     &.spoiler {
                         height: 42px;
                         height: 42px;

+ 8 - 8
src/plugins/chatview/tests/messages.js

@@ -116,7 +116,7 @@ describe("A Chat Message", function () {
                      to="${_converse.bare_jid}"
                      to="${_converse.bare_jid}"
                      from="${sender_jid}"
                      from="${sender_jid}"
                      type="chat">
                      type="chat">
-                <body>Inbetween message</body>
+                <body>In between message</body>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
             </message>`;
             </message>`;
         _converse.handleMessageStanza(msg);
         _converse.handleMessageStanza(msg);
@@ -128,7 +128,7 @@ describe("A Chat Message", function () {
                      to="${_converse.bare_jid}"
                      to="${_converse.bare_jid}"
                      from="${sender_jid}"
                      from="${sender_jid}"
                      type="chat">
                      type="chat">
-                <body>another inbetween message</body>
+                <body>another in between message</body>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
                 <delay xmlns="urn:xmpp:delay" stamp="2018-01-01T13:18:23Z"/>
             </message>`;
             </message>`;
         _converse.handleMessageStanza(msg);
         _converse.handleMessageStanza(msg);
@@ -206,14 +206,14 @@ describe("A Chat Message", function () {
 
 
         day = sizzle('.date-separator:eq(1)', view).pop();
         day = sizzle('.date-separator:eq(1)', view).pop();
         expect(day.getAttribute('data-isodate')).toEqual(dayjs('2018-01-01T00:00:00').toISOString());
         expect(day.getAttribute('data-isodate')).toEqual(dayjs('2018-01-01T00:00:00').toISOString());
-        expect(day.nextElementSibling.querySelector('.chat-msg__text').textContent).toBe('Inbetween message');
+        expect(day.nextElementSibling.querySelector('.chat-msg__text').textContent).toBe('In between message');
 
 
         el = sizzle('.chat-msg:eq(1)', view).pop();
         el = sizzle('.chat-msg:eq(1)', view).pop();
-        expect(el.querySelector('.chat-msg__text').textContent).toEqual('Inbetween message');
-        expect(el.parentElement.nextElementSibling.querySelector('.chat-msg__text').textContent).toEqual('another inbetween message');
+        expect(el.querySelector('.chat-msg__text').textContent).toEqual('In between message');
+        expect(el.parentElement.nextElementSibling.querySelector('.chat-msg__text').textContent).toEqual('another in between message');
         el = sizzle('.chat-msg:eq(2)', view).pop();
         el = sizzle('.chat-msg:eq(2)', view).pop();
         expect(el.querySelector('.chat-msg__text').textContent)
         expect(el.querySelector('.chat-msg__text').textContent)
-            .toEqual('another inbetween message');
+            .toEqual('another in between message');
         expect(u.hasClass('chat-msg--followup', el)).toBe(true);
         expect(u.hasClass('chat-msg--followup', el)).toBe(true);
 
 
         time = sizzle('time.separator-text:nth(2)', view).pop();
         time = sizzle('time.separator-text:nth(2)', view).pop();
@@ -415,7 +415,7 @@ describe("A Chat Message", function () {
         let chatbox = await _converse.api.chats.get(impersonated_jid);
         let chatbox = await _converse.api.chats.get(impersonated_jid);
         expect(chatbox).toBe(null);
         expect(chatbox).toBe(null);
 
 
-        // Check that the chatbox for the malicous user is not created
+        // Check that the chatbox for the malicious user is not created
         chatbox = await _converse.api.chats.get(sender_jid);
         chatbox = await _converse.api.chats.get(sender_jid);
         expect(chatbox).toBe(null);
         expect(chatbox).toBe(null);
     }));
     }));
@@ -774,7 +774,7 @@ describe("A Chat Message", function () {
         expect(view.querySelector(`${nth_child(6)} .chat-msg__text`).textContent).toBe(
         expect(view.querySelector(`${nth_child(6)} .chat-msg__text`).textContent).toBe(
             "Another message within 10 minutes, but from a different person");
             "Another message within 10 minutes, but from a different person");
 
 
-        // Let's add a delayed, inbetween message
+        // Let's add a delayed, in between message
         _converse.handleMessageStanza(
         _converse.handleMessageStanza(
             $msg({
             $msg({
                 'xmlns': 'jabber:client',
                 'xmlns': 'jabber:client',

+ 1 - 1
src/plugins/chatview/tests/oob.js

@@ -50,7 +50,7 @@ describe("A Chat Message", function () {
 
 
             await new Promise(resolve => view.model.messages.once('rendered', resolve));
             await new Promise(resolve => view.model.messages.once('rendered', resolve));
             msg = view.querySelector('.chat-msg .chat-msg__text');
             msg = view.querySelector('.chat-msg .chat-msg__text');
-            expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you heard this funny audio?'); // Emtpy
+            expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you heard this funny audio?'); // Empty
 
 
             // We don't render the OOB data
             // We don't render the OOB data
             expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);
             expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);

+ 1 - 1
src/plugins/dragresize/utils.js

@@ -13,7 +13,7 @@ export function unregisterGlobalEventHandlers() {
 }
 }
 
 
 /**
 /**
- * This function registers mousedown and mouseup events hadlers to
+ * This function registers mousedown and mouseup events handlers to
  * all iframes in the DOM when converse UI resizing events are called
  * all iframes in the DOM when converse UI resizing events are called
  * to prevent mouse drag stutter effect which is bad user experience.
  * to prevent mouse drag stutter effect which is bad user experience.
  * @param {Element} e - dragging node element.
  * @param {Element} e - dragging node element.

+ 1 - 1
src/plugins/muc-views/templates/occupant.js

@@ -17,7 +17,7 @@ let badges_definitions; // will be initialized at first call (to be sure that th
 
 
 /**
 /**
  * Inits badges definitions.
  * Inits badges definitions.
- * For short labels, it will use the label first letter. If there is ambigous short labels, it will try to add up to 4 letters.
+ * For short labels, it will use the label first letter. If there is ambiguous short labels, it will try to add up to 4 letters.
  * Letters will be uppercase.
  * Letters will be uppercase.
  */
  */
 function initBadgesDefinitions() {
 function initBadgesDefinitions() {

+ 1 - 1
src/plugins/muc-views/tests/mentions.js

@@ -324,7 +324,7 @@ describe("A sent groupchat message", function () {
                     </presence>`))
                     </presence>`))
             });
             });
 
 
-            // Test that we don't match @nick in email adresses.
+            // Test that we don't match @nick in email addresses.
             let [text, references] = view.model.parseTextForReferences('contact contact@NotAnAdress.eu');
             let [text, references] = view.model.parseTextForReferences('contact contact@NotAnAdress.eu');
             expect(references.length).toBe(0);
             expect(references.length).toBe(0);
             expect(text).toBe('contact contact@NotAnAdress.eu');
             expect(text).toBe('contact contact@NotAnAdress.eu');

+ 1 - 1
src/plugins/muc-views/tests/muc-mentions.js

@@ -4,7 +4,7 @@ const { dayjs, stx, u } = converse.env;
 
 
 // See: https://xmpp.org/rfcs/rfc3921.html
 // See: https://xmpp.org/rfcs/rfc3921.html
 
 
-describe("MUC Mention Notfications", function () {
+describe("MUC Mention Notifications", function () {
 
 
     it("may be received from a MUC in which the user is not currently present",
     it("may be received from a MUC in which the user is not currently present",
         mock.initConverse([], {
         mock.initConverse([], {

+ 1 - 1
src/plugins/muc-views/tests/muc-registration.js

@@ -4,7 +4,7 @@ const { Strophe, sizzle, u, stx } = converse.env;
 
 
 describe("Chatrooms", function () {
 describe("Chatrooms", function () {
 
 
-    describe("The /register commmand", function () {
+    describe("The /register command", function () {
 
 
         it("allows you to register your nickname in a room",
         it("allows you to register your nickname in a room",
                 mock.initConverse(['chatBoxesFetched'], {'auto_register_muc_nickname': true},
                 mock.initConverse(['chatBoxesFetched'], {'auto_register_muc_nickname': true},

+ 2 - 2
src/plugins/muc-views/tests/muc.js

@@ -64,7 +64,7 @@ describe("Groupchats", function () {
             const csntext = await u.waitUntil(() => view.querySelector('.chat-content__notifications').textContent);
             const csntext = await u.waitUntil(() => view.querySelector('.chat-content__notifications').textContent);
             expect(csntext.trim()).toEqual("nicky has entered the groupchat");
             expect(csntext.trim()).toEqual("nicky has entered the groupchat");
 
 
-            // An instant room is created by saving the default configuratoin.
+            // An instant room is created by saving the default configuration.
             const selector = `query[xmlns="${Strophe.NS.MUC_OWNER}"]`;
             const selector = `query[xmlns="${Strophe.NS.MUC_OWNER}"]`;
             IQ_stanzas = _converse.api.connection.get().IQ_stanzas;
             IQ_stanzas = _converse.api.connection.get().IQ_stanzas;
             const iq = await u.waitUntil(() => IQ_stanzas.filter((s) => sizzle(selector, s).length).pop());
             const iq = await u.waitUntil(() => IQ_stanzas.filter((s) => sizzle(selector, s).length).pop());
@@ -1763,7 +1763,7 @@ describe("Groupchats", function () {
                     `iq[to="${muc_jid}"] query[xmlns="http://jabber.org/protocol/disco#info"]`
                     `iq[to="${muc_jid}"] query[xmlns="http://jabber.org/protocol/disco#info"]`
                 )).pop());
                 )).pop());
 
 
-            // Check that the groupchat queried for the feautures.
+            // Check that the groupchat queried for the features.
             expect(stanza).toEqualStanza(stx`
             expect(stanza).toEqualStanza(stx`
                 <iq from="romeo@montague.lit/orchard"
                 <iq from="romeo@montague.lit/orchard"
                         id="${stanza.getAttribute("id")}"
                         id="${stanza.getAttribute("id")}"

+ 19 - 19
src/plugins/rosterview/tests/roster.js

@@ -183,7 +183,7 @@ describe("The Contacts Roster", function () {
                         <group>Friends</group>
                         <group>Friends</group>
                     </item>
                     </item>
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="none">
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="none">
-                        <group>Acquaintences</group>
+                        <group>Acquaintances</group>
                     </item>
                     </item>
                 </query>
                 </query>
             </iq>
             </iq>
@@ -240,7 +240,7 @@ describe("The Contacts Roster", function () {
                         <group>Friends</group>
                         <group>Friends</group>
                     </item>
                     </item>
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="from">
                     <item jid="lord.capulet@example.net" name="Lord Capulet" subscription="from">
-                        <group>Acquaintences</group>
+                        <group>Acquaintances</group>
                     </item>
                     </item>
                 </query>
                 </query>
             </iq>
             </iq>
@@ -275,7 +275,7 @@ describe("The Contacts Roster", function () {
         expect(visible_groups.length).toBe(4);
         expect(visible_groups.length).toBe(4);
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
-        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintences');
+        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintances');
         expect(visible_groups[3].textContent.trim()).toBe('ænemies');
         expect(visible_groups[3].textContent.trim()).toBe('ænemies');
 
 
         _converse.roster.create({
         _converse.roster.create({
@@ -290,7 +290,7 @@ describe("The Contacts Roster", function () {
         expect(visible_groups.length).toBe(5);
         expect(visible_groups.length).toBe(5);
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[0].textContent.trim()).toBe('Colleagues');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
         expect(visible_groups[1].textContent.trim()).toBe('Family');
-        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintences');
+        expect(visible_groups[2].textContent.trim()).toBe('friends & acquaintances');
         expect(visible_groups[3].textContent.trim()).toBe('newgroup');
         expect(visible_groups[3].textContent.trim()).toBe('newgroup');
         expect(visible_groups[4].textContent.trim()).toBe('ænemies');
         expect(visible_groups[4].textContent.trim()).toBe('ænemies');
         expect(roster.querySelectorAll('.roster-group').length).toBe(5);
         expect(roster.querySelectorAll('.roster-group').length).toBe(5);
@@ -347,7 +347,7 @@ describe("The Contacts Roster", function () {
             // Only one foster group is still visible
             // Only one foster group is still visible
             expect(sizzle('.roster-group', roster).filter(u.isVisible).length).toBe(1);
             expect(sizzle('.roster-group', roster).filter(u.isVisible).length).toBe(1);
             const visible_group = sizzle('.roster-group', roster).filter(u.isVisible).pop();
             const visible_group = sizzle('.roster-group', roster).filter(u.isVisible).pop();
-            expect(visible_group.querySelector('a.group-toggle').textContent.trim()).toBe('friends & acquaintences');
+            expect(visible_group.querySelector('a.group-toggle').textContent.trim()).toBe('friends & acquaintances');
 
 
             filter = rosterview.querySelector('.items-filter');
             filter = rosterview.querySelector('.items-filter');
             filter.value = "j";
             filter.value = "j";
@@ -359,7 +359,7 @@ describe("The Contacts Roster", function () {
 
 
             let visible_groups = sizzle('.roster-group', roster).filter(u.isVisible).map(el => el.querySelector('a.group-toggle'));
             let visible_groups = sizzle('.roster-group', roster).filter(u.isVisible).map(el => el.querySelector('a.group-toggle'));
             expect(visible_groups.length).toBe(2);
             expect(visible_groups.length).toBe(2);
-            expect(visible_groups[0].textContent.trim()).toBe('friends & acquaintences');
+            expect(visible_groups[0].textContent.trim()).toBe('friends & acquaintances');
             expect(visible_groups[1].textContent.trim()).toBe('Ungrouped');
             expect(visible_groups[1].textContent.trim()).toBe('Ungrouped');
 
 
             filter = rosterview.querySelector('.items-filter');
             filter = rosterview.querySelector('.items-filter');
@@ -485,7 +485,7 @@ describe("The Contacts Roster", function () {
 
 
             await u.waitUntil(() => sizzle('li', roster).filter(u.isVisible).pop().querySelector('.contact-name').textContent.trim() === 'Friar Laurence', 900);
             await u.waitUntil(() => sizzle('li', roster).filter(u.isVisible).pop().querySelector('.contact-name').textContent.trim() === 'Friar Laurence', 900);
             const ul = sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).pop();
             const ul = sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).pop();
-            expect(ul.parentElement.firstElementChild.textContent.trim()).toBe('friends & acquaintences');
+            expect(ul.parentElement.firstElementChild.textContent.trim()).toBe('friends & acquaintances');
             expect(sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).length).toBe(1);
             expect(sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).length).toBe(1);
         }));
         }));
     });
     });
@@ -510,7 +510,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Contact requests",
                 "Colleagues",
                 "Colleagues",
                 "Family",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "ænemies",
                 "Ungrouped",
                 "Ungrouped",
                 "Pending contacts",
                 "Pending contacts",
@@ -528,7 +528,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Contact requests",
                 "Colleagues",
                 "Colleagues",
                 "Family",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "ænemies",
                 "Ungrouped",
                 "Ungrouped",
                 "Pending contacts",
                 "Pending contacts",
@@ -545,7 +545,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Contact requests",
                 "Colleagues",
                 "Colleagues",
                 "Family",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "ænemies",
                 "Ungrouped",
                 "Ungrouped",
                 "Pending contacts",
                 "Pending contacts",
@@ -567,7 +567,7 @@ describe("The Contacts Roster", function () {
                 "Contact requests",
                 "Contact requests",
                 "Colleagues",
                 "Colleagues",
                 "Family",
                 "Family",
-                "friends & acquaintences",
+                "friends & acquaintances",
                 "ænemies",
                 "ænemies",
                 "Ungrouped",
                 "Ungrouped",
                 "Pending contacts",
                 "Pending contacts",
@@ -659,7 +659,7 @@ describe("The Contacts Roster", function () {
             let i=0, j=0;
             let i=0, j=0;
             const groups = {
             const groups = {
                 'Colleagues': 3,
                 'Colleagues': 3,
-                'friends & acquaintences': 3,
+                'friends & acquaintances': 3,
                 'Ungrouped': 2
                 'Ungrouped': 2
             };
             };
             Object.keys(groups).forEach(function (name) {
             Object.keys(groups).forEach(function (name) {
@@ -1059,7 +1059,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'online');
                 _converse.roster.get(jid).presence.set('show', 'online');
@@ -1085,7 +1085,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'dnd');
                 _converse.roster.get(jid).presence.set('show', 'dnd');
@@ -1111,7 +1111,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'away');
                 _converse.roster.get(jid).presence.set('show', 'away');
@@ -1137,7 +1137,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'xa');
                 _converse.roster.get(jid).presence.set('show', 'xa');
@@ -1163,7 +1163,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
             for (let i=0; i<mock.cur_names.length; i++) {
             for (let i=0; i<mock.cur_names.length; i++) {
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 const jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@montague.lit';
                 _converse.roster.get(jid).presence.set('show', 'unavailable');
                 _converse.roster.get(jid).presence.set('show', 'unavailable');
@@ -1212,7 +1212,7 @@ describe("The Contacts Roster", function () {
             const roster = rosterview;
             const roster = rosterview;
             const groups = roster.querySelectorAll('.roster-group');
             const groups = roster.querySelectorAll('.roster-group');
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
             const groupnames = Array.from(groups).map(g => g.getAttribute('data-group'));
-            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintences ænemies Ungrouped");
+            expect(groupnames.join(' ')).toBe("Colleagues Family friends & acquaintances ænemies Ungrouped");
 
 
             const group = groups[0];
             const group = groups[0];
             const els = Array.from(group.querySelectorAll('.current-xmpp-contact'));
             const els = Array.from(group.querySelectorAll('.current-xmpp-contact'));
@@ -1233,7 +1233,7 @@ describe("The Contacts Roster", function () {
                     expect(status_classes.join(" ")).toBe("online online away xa xa xa");
                     expect(status_classes.join(" ")).toBe("online online away xa xa xa");
                     expect(subscription_classes.join(" ")).toBe("both both both both both both");
                     expect(subscription_classes.join(" ")).toBe("both both both both both both");
 
 
-                } else if (groupname === "friends & acquaintences") {
+                } else if (groupname === "friends & acquaintances") {
                     const statuses = els.map(e => e.getAttribute('data-status'));
                     const statuses = els.map(e => e.getAttribute('data-status'));
                     const subscription_classes = els.map(e => e.classList[4]);
                     const subscription_classes = els.map(e => e.classList[4]);
                     const status_classes = els.map(e => e.classList[5]);
                     const status_classes = els.map(e => e.classList[5]);

+ 1 - 1
src/shared/autocomplete/suggestion.js

@@ -21,7 +21,7 @@ class Suggestion extends String {
         this.data = data;
         this.data = data;
     }
     }
 
 
-    get lenth() {
+    get length() {
         return this.label.length;
         return this.label.length;
     }
     }
 
 

+ 1 - 1
src/shared/chat/chat-content.js

@@ -117,7 +117,7 @@ export default class ChatContent extends CustomElement {
              */
              */
             api.trigger("chatBoxScrolledUp", el);
             api.trigger("chatBoxScrolledUp", el);
         }
         }
-        if (this.model.get("scolled") !== scrolled) {
+        if (this.model.get("scrolled") !== scrolled) {
             this.model.ui.set({ scrolled });
             this.model.ui.set({ scrolled });
         }
         }
     }
     }

+ 1 - 1
src/shared/chat/message-actions.js

@@ -100,7 +100,7 @@ class MessageActions extends CustomElement {
     async onMessageEditButtonClicked (ev) {
     async onMessageEditButtonClicked (ev) {
         ev.preventDefault();
         ev.preventDefault();
         const currently_correcting = this.model.collection.findWhere('correcting');
         const currently_correcting = this.model.collection.findWhere('correcting');
-        // TODO: Use state intead of DOM querying
+        // TODO: Use state instead of DOM querying
         // Then this code can also be put on the model
         // Then this code can also be put on the model
         const unsent_text = u.ancestor(this, '.chatbox')?.querySelector('.chat-textarea')?.value;
         const unsent_text = u.ancestor(this, '.chatbox')?.querySelector('.chat-textarea')?.value;
         if (unsent_text && (!currently_correcting || currently_correcting.getMessageText() !== unsent_text)) {
         if (unsent_text && (!currently_correcting || currently_correcting.getMessageText() !== unsent_text)) {

+ 1 - 1
src/shared/chat/utils.js

@@ -250,7 +250,7 @@ export function addEmojisMarkup(text, options) {
  *
  *
  * @namespace u
  * @namespace u
  * @method u.shortnamesToEmojis
  * @method u.shortnamesToEmojis
- * @param {String} str - String containg the shortname(s)
+ * @param {String} str - String containing the shortname(s)
  * @param {Object} options
  * @param {Object} options
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  *  unicode codepoints. If so, the returned result will be an array
  *  unicode codepoints. If so, the returned result will be an array

+ 2 - 2
src/shared/components/split-resize.js

@@ -206,7 +206,7 @@ export default class SplitResize extends CustomElement {
         // Actually adjust the size.
         // Actually adjust the size.
         this.adjust(offset);
         this.adjust(offset);
 
 
-        // Call the drag callback continously. Don't do anything too intensive
+        // Call the drag callback continuously. Don't do anything too intensive
         // in pair callback.
         // in pair callback.
         this.getOption(options, 'onDrag', NOOP)(this.getSizes());
         this.getOption(options, 'onDrag', NOOP)(this.getSizes());
     }
     }
@@ -297,7 +297,7 @@ export default class SplitResize extends CustomElement {
             );
             );
             const elementMinSize = this.minSizes[i] + elementGutterSize;
             const elementMinSize = this.minSizes[i] + elementGutterSize;
 
 
-            // If element is too smal, increase excess pixels by the difference
+            // If element is too small, increase excess pixels by the difference
             // and mark that it has no pixels to spare
             // and mark that it has no pixels to spare
             if (pixelSize < elementMinSize) {
             if (pixelSize < elementMinSize) {
                 excessPixels += elementMinSize - pixelSize;
                 excessPixels += elementMinSize - pixelSize;

+ 1 - 1
src/shared/modals/tests/user-details-modal.js

@@ -26,7 +26,7 @@ describe('The User Details Modal', function () {
             expect(name_input.value).toBe('Mercutio');
             expect(name_input.value).toBe('Mercutio');
 
 
             const groups_input = modal.querySelector('input[name="groups"]');
             const groups_input = modal.querySelector('input[name="groups"]');
-            expect(groups_input.value).toBe('Colleagues,friends & acquaintences');
+            expect(groups_input.value).toBe('Colleagues,friends & acquaintances');
 
 
             const sent_stanzas = _converse.api.connection.get().sent_stanzas;
             const sent_stanzas = _converse.api.connection.get().sent_stanzas;
             while (sent_stanzas.length) sent_stanzas.pop();
             while (sent_stanzas.length) sent_stanzas.pop();

+ 1 - 1
src/shared/tests/mock.js

@@ -263,7 +263,7 @@ const cur_jids = cur_names.map((name) => `${name.replace(/ /g, '.').toLowerCase(
 
 
 const groups = {
 const groups = {
     'colleagues': 3,
     'colleagues': 3,
-    'friends & acquaintences': 3,
+    'friends & acquaintances': 3,
     'Family': 4,
     'Family': 4,
     'ænemies': 3,
     'ænemies': 3,
     'Ungrouped': 2
     'Ungrouped': 2

+ 1 - 1
src/types/plugins/dragresize/utils.d.ts

@@ -1,7 +1,7 @@
 export function registerGlobalEventHandlers(): void;
 export function registerGlobalEventHandlers(): void;
 export function unregisterGlobalEventHandlers(): void;
 export function unregisterGlobalEventHandlers(): void;
 /**
 /**
- * This function registers mousedown and mouseup events hadlers to
+ * This function registers mousedown and mouseup events handlers to
  * all iframes in the DOM when converse UI resizing events are called
  * all iframes in the DOM when converse UI resizing events are called
  * to prevent mouse drag stutter effect which is bad user experience.
  * to prevent mouse drag stutter effect which is bad user experience.
  * @param {Element} e - dragging node element.
  * @param {Element} e - dragging node element.

+ 1 - 1
src/types/shared/autocomplete/suggestion.d.ts

@@ -13,6 +13,6 @@ declare class Suggestion extends String {
     value: any;
     value: any;
     query: string;
     query: string;
     data: any;
     data: any;
-    get lenth(): any;
+    get length(): any;
 }
 }
 //# sourceMappingURL=suggestion.d.ts.map
 //# sourceMappingURL=suggestion.d.ts.map

+ 1 - 1
src/types/shared/chat/utils.d.ts

@@ -65,7 +65,7 @@ export function addEmojisMarkup(text: string, options: object): string[];
  *
  *
  * @namespace u
  * @namespace u
  * @method u.shortnamesToEmojis
  * @method u.shortnamesToEmojis
- * @param {String} str - String containg the shortname(s)
+ * @param {String} str - String containing the shortname(s)
  * @param {Object} options
  * @param {Object} options
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  * @param {Boolean} options.unicode_only - Whether emojis are rendered as
  *  unicode codepoints. If so, the returned result will be an array
  *  unicode codepoints. If so, the returned result will be an array