Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/components/AvatarWrapper/AvatarWrapper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ export default {
top: 0;
width: var(--avatar-size);
height: var(--avatar-size);
max-height: var(--avatar-size);
max-width: var(--avatar-size);
line-height: var(--avatar-size);
font-size: calc(var(--avatar-size) / 2);
border-radius: 50%;
Expand Down
7 changes: 6 additions & 1 deletion src/components/ConversationSettings/BasicInfo.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
:loading="isNameLoading"
:placeholder="t('spreed', 'Enter a name for this conversation')"
:edit-button-aria-label="t('spreed', 'Edit conversation name')"
:max-length="CONVERSATION.MAX_NAME_LENGTH"
@submit-text="handleUpdateName"
@update:editing="handleEditName" />
<template v-if="!isOneToOne">
Expand All @@ -42,6 +43,7 @@
:loading="isDescriptionLoading"
:edit-button-aria-label="t('spreed', 'Edit conversation description')"
:placeholder="t('spreed', 'Enter a description for this conversation')"
:max-length="CONVERSATION.MAX_DESCRIPTION_LENGTH"
multiline
use-markdown
@submit-text="handleUpdateDescription"
Expand Down Expand Up @@ -92,7 +94,10 @@ export default {
},

setup() {
return { supportsAvatar }
return {
supportsAvatar,
CONVERSATION,
}
},

data() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ export default {
// Controls the disabled/enabled state of the first page's button.
disabled() {
return this.conversationName === '' || (this.newConversation.hasPassword && this.password === '')
|| this.conversationName.length > CONVERSATION.MAX_NAME_LENGTH
|| this.newConversation.description.length > CONVERSATION.MAX_DESCRIPTION_LENGTH
},
},

Expand Down
26 changes: 26 additions & 0 deletions src/components/NewConversationDialog/NewConversationSetupPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,20 @@
v-model="conversationName"
:placeholder="t('spreed', 'Enter a name for this conversation')"
:label="t('spreed', 'Name')"
:error="!!nameErrorLabel"
label-visible
@keydown.enter="$emit('handle-enter')" />
<span v-if="nameErrorLabel" class="new-group-conversation__error">
{{ nameErrorLabel }}
</span>
<NcTextArea v-model="conversationDescription"
:placeholder="t('spreed', 'Enter a description for this conversation')"
:label="t('spreed', 'Description')"
:error="!!descriptionErrorLabel"
label-visible />
<span v-if="descriptionErrorLabel" class="new-group-conversation__error">
{{ descriptionErrorLabel }}
</span>

<template v-if="supportsAvatar">
<label class="avatar-editor__label">
Expand Down Expand Up @@ -136,6 +144,20 @@ export default {
},
},

nameErrorLabel() {
if (this.conversationName.length <= CONVERSATION.MAX_NAME_LENGTH) {
return
}
return t('spreed', 'Maximum length exceeded ({maxlength} characters)', { maxlength: CONVERSATION.MAX_NAME_LENGTH })
},

descriptionErrorLabel() {
if (this.conversationDescription.length <= CONVERSATION.MAX_DESCRIPTION_LENGTH) {
return
}
return t('spreed', 'Maximum length exceeded ({maxlength} characters)', { maxlength: CONVERSATION.MAX_DESCRIPTION_LENGTH })
},

isPublic: {
get() {
return this.newConversation.type === CONVERSATION.TYPE.PUBLIC
Expand Down Expand Up @@ -206,5 +228,9 @@ export default {
margin-top: 10px;
padding: 4px 0;
}

&__error {
color: var(--color-error);
}
}
</style>
9 changes: 6 additions & 3 deletions src/components/RightSidebar/SharedItems/SharedItemsTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -185,9 +185,12 @@ export default {
},

watch: {
sharedItemsIdentifier() {
if (this.token && this.active && this.isSidebarOpen) {
this.sharedItemsStore.getSharedItemsOverview(this.token)
sharedItemsIdentifier: {
immediate: true,
handler() {
if (this.token && this.active && this.isSidebarOpen) {
this.sharedItemsStore.getSharedItemsOverview(this.token)
}
}
},
},
Expand Down
5 changes: 4 additions & 1 deletion src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,10 @@ export const CONVERSATION = {
VIDEO_VERIFICATION: 'share:password',
BREAKOUT_ROOM: 'room',
DEFAULT: '',
}
},

MAX_NAME_LENGTH: 255,
MAX_DESCRIPTION_LENGTH: 500,
}
export const ATTENDEE = {
ACTOR_TYPE: {
Expand Down
4 changes: 2 additions & 2 deletions src/services/conversationsService.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ const setConversationPassword = async function(token, password) {
* Set a conversation's name
*
* @param {string} token the conversation's token
* @param {string} name the name to be set
* @param {string} name the name to be set (max 255 characters)
*/
const setConversationName = async function(token, name) {
return axios.put(generateOcsUrl('apps/spreed/api/v4/room/{token}', { token }), {
Expand All @@ -188,7 +188,7 @@ const setConversationName = async function(token, name) {
* Set a conversation's description
*
* @param {string} token the conversation's token
* @param {string} description the description to be set
* @param {string} description the description to be set (max 500 characters)
*/
const setConversationDescription = async function(token, description) {
return axios.put(generateOcsUrl('apps/spreed/api/v4/room/{token}/description', { token }), {
Expand Down