Age | Commit message (Collapse) | Author |
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Add autocompletion for mentions
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
nextcloud/fix-getting-messages-in-messageslist-in-talk-sidebar
Fix getting messages in MessagesList in Talk sidebar
|
|
The vue-at library only searches in the display name by default.
But luckily our server responds already only with matching items,
so we just filter none and show them all.
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
In order to show the user label in the autocompletion panel but set the
user id in the content editable both attributes need to be included for
every vue-at member. When the members are objects instead of a string
the "name-key" property needs to be used so vue-at knows which attribute
to use to filter the panel based on the text after the "@". However, the
default embedded item uses that attribute, so a custom template is
needed to set the user id in the content editable. In turn, this causes
the content editable contents to be set as HTML elements instead of
plain text, so the HTML element of the mentions need to be converted to
plain "@userId" before sending them to the server.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
The vue-at component is used to provide the autocompletion UI. This
component handles the edition in its wrapped contenteditable, so the
"vue-contenteditable-directive" is no longer needed. As the new message
form hides its overflowing children (and it can not be removed, as it
breaks the layout when typing long (tall) messages) the
"vue-at-reparenter" helper is used.
In this initial version the candidate mentions show the id of the user
or guest that matches the current "@" mention being written and, when
selected, adds that id as plain text to the editable content.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
By default the "vue-contenteditable-directive" sets the text of a
contenteditable div using the "innerText" property, which causes any
HTML markup to become escaped plain text inside the div. In order to
provide rich text messages with mentions real HTML elements are needed,
so the "dangerousHTML" option needs to be enabled so the text is set to
the "innerHTML" property instead.
When real HTML elements are used the browser adds new lines using "<br>"
and spaces that would otherwise be collapsed into one (like several
white spaces in a row) using " ". Therefore now the raw text of the
contenteditable div needs to be converted to the format expected by the
server (that is, "\n" and regular white spaces).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
The panel of the vue-at component is a child of the root element of the
component. In some cases a different parent may be needed, but the
component does not provide any way to change that, so a helper mixin
that works around that limitation was added.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Correctly register the chat tab
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
The UserBubble component currently does not provide a way to set an
arbitrary letter on the avatar, only the first letter of the display
name or an icon. Therefore, for the time being, a user icon is used for
the avatar instead of the "?" character.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Due to the changes in the message list it is no longer needed to reset
the height of the chat view. Moreover, the chat view now needs to have a
height of 100% (which was the reset value before) in order to be
properly shown in Chromium.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
The MessagesList starts getting messages once the current participant
has been set, so it needs to be fetched and set after joining the
conversation (as if the current user is not a participant of the
conversation yet only a limited data about the conversation will be
received). Getting the conversation automatically sets the current
participant, and as both the conversation and the participant will be
needed for the CallButton, which will be added later, the participant is
now set implicitly through the conversation.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
join/leaveConversation are marked as asynchronous, so it is expected
that invoking them with await will wait until the conversation is joined
or left before continuing.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Prevent empty messages and pasting HTML
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
When the current participant is in the lobby the messages and
participants can not be fetched.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Ref https://github.com/nextcloud/spreed/pull/1018
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
As "getNewMessages" is enqueued to be executed in the next tick it could
happen (even if it is extremely rare) that the MessagesList component is
destroyed in the meantime. If that happens the component is disconnected
from the store, so it can access only those values already known. Due to
this the last known message ID is never updated, so when a new message
is sent the MessagesList enters in a infinite loop trying to get the new
messages again and again always using an old message ID.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
The MessagesList component only started getting the messages after a
conversation was joined. Due to this the messages were not updated after
joining a call, as the original MessageList component was removed from
the main view and a new component was added to the sidebar, but as the
conversation was not changed the new MessagesList component did not
fetch new messages and only showed those that were already in the store.
Now getting the messages is done based on the conversation token and
whether the current participant is a participant of the conversation or
not. Both checks are needed and independent; when "token" changes that
signals a change in the current conversation, and when "isParticipant"
changes that signals that the current participant is now a participant
or not any longer of the conversation.
Note that getting the messages can not be done on 'routeChange' events,
as the token might not have been updated yet when the event is handled,
which would cause the messages for the new conversation to be got with
the token of the previous conversation (and with that all sort of
problems).
Finally, when scrolling to bottom it is necessary to check that there is
any message in the conversation. Otherwise "beforeUpdate" could be
triggered by some property change before the first batch of messages is
received, which would clear the "initiated" flag and thus no scrolling
would happen once the messages are finally got (although the scrolling
code need a revamp, this is just a small adjustment).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
|
|
Bugfix/noid/combine empty sources
|
|
nextcloud/bugfix/2675/missing-guest-placeholder-name-on-quotes
Fix missing "Guests" placeholder on quotes
|
|
Fix scrolling issues
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Cleanup: fixes on the ConversationIcon design
|
|
Make all text bold for unread conversations
|
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
|
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
|
|
Make links clickable again
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|
|
nextcloud/followup/2649/translate-placeholder-for-new-messages
Translate placeholder for new messages
|
|
- Fix alignment and proper sizing of the elements
- Reduced star size for better antialiasing
|
|
Signed-off-by: Joas Schilling <coding@schilljs.com>
|