- Encrypted messages of encrypted rooms will not be found by search operations.
- The mobile apps may not support the encypted messages (they are implementing it).
- Bots may not be able to see encrypted messages until they implement support for it.
- Uploads will not be encrypted in this version.", @@ -2499,7 +2499,7 @@ "No_Limit": "No Limit", "No_available_agents_to_transfer": "No available agents to transfer", "No_channel_with_name_%s_was_found": "No channel with name \"%s\" was found!", - "No_channels_yet": "You aren't part of any channel yet", + "No_channels_yet": "You aren't part of any channels yet", "No_direct_messages_yet": "No Direct Messages.", "No_emojis_found": "No emojis found", "No_Encryption": "No Encryption", @@ -2536,12 +2536,10 @@ "Nothing_found": "Nothing found", "Not_Imported_Messages_Title": "The following messages were not imported successfully", "Notification_Desktop_Default_For": "Show Desktop Notifications For", - "Notification_Duration": "Notification Duration", "Notification_RequireInteraction": "Require Interaction to Dismiss Desktop Notification", "Notification_RequireInteraction_Description": "Works only with Chrome browser versions > 50. Utilizes the parameter requireInteraction to show the desktop notification to indefinite until the user interacts with it.", "Notification_Mobile_Default_For": "Push Mobile Notifications For", "Notifications": "Notifications", - "Notifications_Duration": "Notifications Duration", "Notifications_Max_Room_Members": "Max Room Members Before Disabling All Message Notifications", "Notifications_Max_Room_Members_Description": "Max number of members in room when notifications for all messages gets disabled. Users can still change per room setting to receive all notifications on an individual basis. (0 to disable)", "Notifications_Muted_Description": "If you choose to mute everything, you won't see the room highlight in the list when there are new messages, except for mentions. Muting notifications will override notifications settings.", @@ -3479,6 +3477,7 @@ "Unarchive": "Unarchive", "unarchive-room": "Unarchive Room", "unarchive-room_description": "Permission to unarchive channels", + "Unavailable": "Unavailable", "Unblock_User": "Unblock User", "Uncheck_All": "Uncheck All", "Undefined": "Undefined", @@ -3813,4 +3812,4 @@ "Your_server_link": "Your server link", "Your_temporary_password_is_password": "Your temporary password is [password].", "Your_workspace_is_ready": "Your workspace is ready to use 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/it.i18n.json b/packages/rocketchat-i18n/i18n/it.i18n.json index cf93796c15a2..7c96af8a2699 100644 --- a/packages/rocketchat-i18n/i18n/it.i18n.json +++ b/packages/rocketchat-i18n/i18n/it.i18n.json @@ -831,6 +831,7 @@ "Created_at_s_by_s_triggered_by_s": "Creato alle %s da %s scatenato da %s", "CRM_Integration": "Integrazione CRM", "CROWD_Reject_Unauthorized": "Rifiuta non autorizzati", + "Crowd_Remove_Orphaned_Users": "Rimuovi utenti orfani", "Crowd_sync_interval_Description": "L'intervallo tra le sincronizzazioni. Esempio \"ogni 24 ore\" o \"il primo giorno della settimana\", altri esempi su [Cron Text Parser] (http://bunkat.github.io/later/parsers.html#text)", "Current_Chats": "Chat attuali", "Current_Status": "Stato attuale", @@ -2888,4 +2889,4 @@ "Your_push_was_sent_to_s_devices": "La tua richiesta è stata inviata ai %s dispositivi.", "Your_server_link": "Il tuo collegamento al server", "Your_workspace_is_ready": "Il tuo spazio di lavoro è pronto per l'uso 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index 81d4439d78a9..f4bdd6bf0d33 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -1000,6 +1000,7 @@ "CRM_Integration": "Integração de CRM", "CROWD_Allow_Custom_Username": "Permitir nome de usuário personalizado no Rocket.Chat", "CROWD_Reject_Unauthorized": "Rejeitar não autorizado", + "Crowd_Remove_Orphaned_Users": "Remover usuários órfãos", "Crowd_sync_interval_Description": "O intervalo entre as sincronizações. Exemplo de \"todas as 24 horas\" ou \"no primeiro dia da semana\", mais exemplos em [Cron Text Parser] (http://bunkat.github.io/later/parsers.html#text)", "Current_Chats": "Bate-papos atuais", "Current_File": "Arquivo atual", @@ -3122,6 +3123,7 @@ "Unarchive": "Desarquivar", "unarchive-room": "Desarquivar Sala", "unarchive-room_description": "Permissão para desarchivar canais", + "Unavailable": "IndisponÃvel", "Unblock_User": "Desbloquear Usuário", "Undefined": "Não definido", "Unfavorite": "Remover dos Favoritos", diff --git a/server/importPackages.js b/server/importPackages.js index 96073ce4fa3f..aa56233f2bf5 100644 --- a/server/importPackages.js +++ b/server/importPackages.js @@ -1,14 +1,14 @@ import '../app/cors/server'; import '../app/sms'; import '../app/2fa/server'; -import '../app/accounts'; +import '../app/accounts/server'; import '../app/analytics/server'; -import '../app/api'; -import '../app/assets'; +import '../app/api/server'; +import '../app/assets/server'; import '../app/authorization'; import '../app/autolinker/server'; import '../app/autotranslate/server'; -import '../app/bot-helpers'; +import '../app/bot-helpers/server'; import '../app/cas/server'; import '../app/channel-settings'; import '../app/channel-settings-mail-messages/server'; @@ -98,7 +98,7 @@ import '../app/version-check/server'; import '../app/search/server'; import '../app/chatpal-search/server'; import '../app/discussion/server'; -import '../app/bigbluebutton'; +import '../app/bigbluebutton/server'; import '../app/mail-messages/server'; import '../app/user-status'; import '../app/utils'; @@ -109,6 +109,6 @@ import '../app/callbacks'; import '../app/notifications'; import '../app/promises/server'; import '../app/ui-utils'; -import '../app/action-links'; +import '../app/action-links/server'; import '../app/reactions/server'; import '../app/livechat/server'; diff --git a/server/methods/saveUserPreferences.js b/server/methods/saveUserPreferences.js index 6d24205a6666..4feee329219a 100644 --- a/server/methods/saveUserPreferences.js +++ b/server/methods/saveUserPreferences.js @@ -22,7 +22,6 @@ Meteor.methods({ mobileNotifications: Match.Optional(String), enableAutoAway: Match.Optional(Boolean), highlights: Match.Optional([String]), - desktopNotificationDuration: Match.Optional(Number), messageViewMode: Match.Optional(Number), hideUsernames: Match.Optional(Boolean), hideRoles: Match.Optional(Boolean), diff --git a/server/publications/spotlight.js b/server/publications/spotlight.js index 0da321b49dfd..702ed843d139 100644 --- a/server/publications/spotlight.js +++ b/server/publications/spotlight.js @@ -19,7 +19,7 @@ function fetchRooms(userId, rooms) { } Meteor.methods({ - spotlight(text, usernames, type = { users: true, rooms: true }, rid) { + spotlight(text, usernames = [], type = { users: true, rooms: true }, rid) { const searchForChannels = text[0] === '#'; const searchForDMs = text[0] === '@'; if (searchForChannels) { @@ -72,7 +72,12 @@ Meteor.methods({ if (hasPermission(userId, 'view-outside-room')) { if (type.users === true && hasPermission(userId, 'view-d-room')) { - result.users = Users.findByActiveUsersExcept(text, usernames, userOptions).fetch(); + const exactUser = Users.findOneByUsernameIgnoringCase(text, userOptions); + if (exactUser && !usernames.includes(exactUser.username)) { + result.users.push(exactUser); + usernames.push(exactUser.username); + } + result.users = result.users.concat(Users.findByActiveUsersExcept(text, usernames, userOptions).fetch()); } if (type.rooms === true && hasPermission(userId, 'view-c-room')) { @@ -81,7 +86,13 @@ Meteor.methods({ .map((roomType) => roomType[0]); const roomIds = Subscriptions.findByUserIdAndTypes(userId, searchableRoomTypes, { fields: { rid: 1 } }).fetch().map((s) => s.rid); - result.rooms = fetchRooms(userId, Rooms.findByNameAndTypesNotInIds(regex, searchableRoomTypes, roomIds, roomOptions).fetch()); + const exactRoom = Rooms.findOneByNameAndType(text, searchableRoomTypes, roomOptions); + if (exactRoom) { + result.exactRoom.push(exactRoom); + roomIds.push(exactRoom.rid); + } + + result.rooms = result.rooms.concat(fetchRooms(userId, Rooms.findByNameAndTypesNotInIds(regex, searchableRoomTypes, roomIds, roomOptions).fetch())); } } else if (type.users === true && rid) { const subscriptions = Subscriptions.find({ diff --git a/server/publications/subscription/index.js b/server/publications/subscription/index.js index 8001eb21eeaf..59a080202fdc 100644 --- a/server/publications/subscription/index.js +++ b/server/publications/subscription/index.js @@ -24,7 +24,6 @@ export const fields = { audioNotifications: 1, audioNotificationValue: 1, desktopNotifications: 1, - desktopNotificationDuration: 1, mobilePushNotifications: 1, emailNotifications: 1, unreadAlert: 1, diff --git a/server/startup/migrations/index.js b/server/startup/migrations/index.js index c32aef2646df..d4353ab9d79c 100644 --- a/server/startup/migrations/index.js +++ b/server/startup/migrations/index.js @@ -187,4 +187,5 @@ import './v187'; import './v188'; import './v189'; import './v190'; +import './v191'; import './xrun'; diff --git a/server/startup/migrations/v036.js b/server/startup/migrations/v036.js index a4f97e7bf80f..ba22dbdfa8db 100644 --- a/server/startup/migrations/v036.js +++ b/server/startup/migrations/v036.js @@ -5,7 +5,7 @@ import { HTTP } from 'meteor/http'; import { Migrations } from '../../../app/migrations'; import { Settings } from '../../../app/models'; -import { RocketChatAssets } from '../../../app/assets'; +import { RocketChatAssets } from '../../../app/assets/server'; Migrations.add({ version: 36, diff --git a/server/startup/migrations/v042.js b/server/startup/migrations/v042.js index dc95a49cbae2..d17a90026692 100644 --- a/server/startup/migrations/v042.js +++ b/server/startup/migrations/v042.js @@ -2,7 +2,7 @@ import { Mongo } from 'meteor/mongo'; import { Migrations } from '../../../app/migrations'; import { settings } from '../../../app/settings'; -import { RocketChatAssets } from '../../../app/assets'; +import { RocketChatAssets } from '../../../app/assets/server'; Migrations.add({ version: 42, diff --git a/server/startup/migrations/v105.js b/server/startup/migrations/v105.js index d68b1bdda5e4..39615b89bf79 100644 --- a/server/startup/migrations/v105.js +++ b/server/startup/migrations/v105.js @@ -15,7 +15,6 @@ Migrations.add({ Desktop_Notifications_Default_Alert: 'Accounts_Default_User_Preferences_desktopNotifications', Mobile_Notifications_Default_Alert: 'Accounts_Default_User_Preferences_mobileNotifications', Audio_Notifications_Default_Alert: 'Accounts_Default_User_Preferences_audioNotifications', - Desktop_Notifications_Duration: 'Accounts_Default_User_Preferences_desktopNotificationDuration', Audio_Notifications_Value: undefined, }; Settings.find({ _id: { $in: Object.keys(settingsMap) } }).forEach((oldSetting) => { diff --git a/server/startup/migrations/v190.js b/server/startup/migrations/v190.js index 33fe26570579..8c4da9b206b2 100644 --- a/server/startup/migrations/v190.js +++ b/server/startup/migrations/v190.js @@ -1,9 +1,19 @@ -import { Migrations } from '../../../app/migrations/server'; -import { Settings } from '../../../app/models/server'; +import { Migrations } from '../../../app/migrations'; +import { Settings, Subscriptions } from '../../../app/models/server/raw'; Migrations.add({ version: 190, up() { - Settings.remove({ _id: /theme-color-status/ }, { multi: true }); + // Remove unused settings + Promise.await(Settings.col.deleteOne({ _id: 'Accounts_Default_User_Preferences_desktopNotificationDuration' })); + Promise.await(Subscriptions.col.updateMany({ + desktopNotificationDuration: { + $exists: true, + }, + }, { + $unset: { + desktopNotificationDuration: 1, + }, + })); }, }); diff --git a/server/startup/migrations/v191.js b/server/startup/migrations/v191.js new file mode 100644 index 000000000000..10f5af6a62ce --- /dev/null +++ b/server/startup/migrations/v191.js @@ -0,0 +1,9 @@ +import { Migrations } from '../../../app/migrations/server'; +import { Settings } from '../../../app/models/server'; + +Migrations.add({ + version: 191, + up() { + Settings.remove({ _id: /theme-color-status/ }, { multi: true }); + }, +}); diff --git a/tests/cypress/integration/11-admin.js b/tests/cypress/integration/11-admin.js index 333d54514ed1..51fc46af08e1 100644 --- a/tests/cypress/integration/11-admin.js +++ b/tests/cypress/integration/11-admin.js @@ -683,15 +683,6 @@ describe('[Administration]', () => { admin.accountsidleTimeLimit.should('have.value', '300'); }); - it('it should show the notifications durations field', () => { - admin.accountsNotificationDuration.click(); - admin.accountsNotificationDuration.should('be.visible'); - }); - - it('the notification duration field value should be 0', () => { - admin.accountsNotificationDuration.should('have.value', '0'); - }); - it('it should show the audio notifications select field', () => { admin.accountsAudioNotifications.scrollIntoView(); admin.accountsAudioNotifications.should('be.visible'); diff --git a/tests/cypress/pageobjects/administration.page.js b/tests/cypress/pageobjects/administration.page.js index d2d30530be67..b34f3e83f2b2 100644 --- a/tests/cypress/pageobjects/administration.page.js +++ b/tests/cypress/pageobjects/administration.page.js @@ -231,10 +231,6 @@ class Administration extends Page { get accountsidleTimeLimitReset() { return browser.element('[data-qa-reset-setting-id="Accounts_Default_User_Preferences_idleTimeLimit"]'); } - get accountsNotificationDuration() { return browser.element('[data-qa-setting-id="Accounts_Default_User_Preferences_desktopNotificationDuration"]'); } - - get accountsNotificationDurationReset() { return browser.element('[data-qa-reset-setting-id="Accounts_Default_User_Preferences_desktopNotificationDuration"]'); } - get accountsAudioNotifications() { return browser.element('[data-qa-setting-id="Accounts_Default_User_Preferences_audioNotifications"]'); } get accountsAudioNotificationsReset() { return browser.element('[data-qa-reset-setting-id="Accounts_Default_User_Preferences_audioNotifications"]'); } diff --git a/tests/data/user.js b/tests/data/user.js index 02d805b138d8..6fb74b9862f7 100644 --- a/tests/data/user.js +++ b/tests/data/user.js @@ -23,7 +23,6 @@ export const preferences = { mobileNotifications: 'default', enableAutoAway: true, highlights: [], - desktopNotificationDuration: 0, desktopNotificationRequireInteraction: false, messageViewMode: 0, hideUsernames: false, diff --git a/tests/end-to-end/api/00-miscellaneous.js b/tests/end-to-end/api/00-miscellaneous.js index a514b3cd7b7c..9ddb510d9704 100644 --- a/tests/end-to-end/api/00-miscellaneous.js +++ b/tests/end-to-end/api/00-miscellaneous.js @@ -126,7 +126,6 @@ describe('miscellaneous', function() { 'mobileNotifications', 'enableAutoAway', // 'highlights', - 'desktopNotificationDuration', 'desktopNotificationRequireInteraction', 'messageViewMode', 'hideUsernames', diff --git a/tests/end-to-end/api/09-rooms.js b/tests/end-to-end/api/09-rooms.js index 841b9b0a4b88..38fa9a246146 100644 --- a/tests/end-to-end/api/09-rooms.js +++ b/tests/end-to-end/api/09-rooms.js @@ -58,7 +58,6 @@ describe('[Rooms]', function() { emailNotifications: 'nothing', audioNotificationValue: 'beep', desktopNotifications: 'nothing', - desktopNotificationDuration: '2', audioNotifications: 'all', mobilePushNotifications: 'mentions', },