diff --git a/.eslintignore b/.eslintignore index 984ba1d5dc35..4c21ff058f7a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -18,4 +18,5 @@ packages/rocketchat-videobridge/client/public/external_api.js packages/rocketchat-theme/client/vendor/ private/moment-locales/ public/livechat/ -public/recorderWorker.js +public/mp3-realtime-worker.js +public/lame.min.js diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 743ec575c97e..66b1518df8b2 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1262,8 +1262,10 @@ "Message_Attachments": "Message Attachments", "Message_Attachments_GroupAttach": "Group Attachment Buttons", "Message_Attachments_GroupAttachDescription": "This groups the icons under an expandable menu. Takes up less screen space.", + "Message_Audio": "Audio Message", + "Message_Audio_bitRate": "Audio Message Bit Rate", "Message_AudioRecorderEnabled": "Audio Recorder Enabled", - "Message_AudioRecorderEnabledDescription": "Requires 'audio/wav' files to be an accepted media type within 'File Upload' settings.", + "Message_AudioRecorderEnabled_Description": "Requires 'audio/mp3' files to be an accepted media type within 'File Upload' settings.", "Message_BadWordsFilterList": "Add Bad Words to the Blacklist", "Message_BadWordsFilterListDescription": "Add List of Comma-separated list of bad words to filter", "Message_DateFormat": "Date Format", diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index 42f4bb23f84b..ca292b13daf9 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -1177,11 +1177,17 @@ RocketChat.settings.addGroup('Message', function() { 'public': true, i18nDescription: 'Message_Attachments_GroupAttachDescription' }); + }); + this.section('Message_Audio', function() { this.add('Message_AudioRecorderEnabled', true, { type: 'boolean', 'public': true, i18nDescription: 'Message_AudioRecorderEnabledDescription' }); + this.add('Message_Audio_bitRate', 32, { + type: 'int', + 'public': true + }); }); this.add('Message_AllowEditing', true, { type: 'boolean', diff --git a/packages/rocketchat-theme/client/imports/components/message-box.css b/packages/rocketchat-theme/client/imports/components/message-box.css index 5cb83c9ac6c2..df01615e11d0 100644 --- a/packages/rocketchat-theme/client/imports/components/message-box.css +++ b/packages/rocketchat-theme/client/imports/components/message-box.css @@ -138,6 +138,26 @@ & .rc-input__icon-svg--plus { transition: transform 0.1s linear; } + + &.cross { + color: red; + } + + &.loading { + cursor: pointer; + display: none; + &.active { + display: flex; + } + } + + &.mic { + display: none; + &.active { + display: flex; + } + } + } &__action-menu { @@ -151,6 +171,33 @@ & [data-small] { display: none; } + + &__audio-recording { + display: none; + position: relative; + z-index: -1; + &.active{ + display: flex; + z-index: 2; + } + } + + &__audio-message{ + &.hidden{ + z-index: -1; + } + } + + &__timer-box{ + display: flex; + width: 50px; + } + + &__timer-dot{ + font-size: 1.5em; + color: #d60000; + line-height: 0.8em; + } } @media (width <= 500px) { diff --git a/packages/rocketchat-ui-message/client/messageBox.html b/packages/rocketchat-ui-message/client/messageBox.html index 4f4a0039c063..37ec7b476fd0 100644 --- a/packages/rocketchat-ui-message/client/messageBox.html +++ b/packages/rocketchat-ui-message/client/messageBox.html @@ -31,6 +31,7 @@ {{> icon block="rc-input__icon-svg" icon="send"}} {{else}} + {{> messageBox__audioMessage}} {{> messageBox__actions}} {{/unless}} {{# messageBox__actionsSmall}} @@ -90,6 +91,29 @@ {{/if}} + +