diff --git a/app/theme/client/imports/general/base_old.css b/app/theme/client/imports/general/base_old.css index a51b0f8431ea7..e4124064da8df 100644 --- a/app/theme/client/imports/general/base_old.css +++ b/app/theme/client/imports/general/base_old.css @@ -4399,14 +4399,23 @@ rc-old select, text-align: center; - color: var(--color-blue); - - border: 4px dashed var(--color-blue); background: rgba(255, 255, 255, 0.8); font-size: 42px; align-items: center; justify-content: center; + + &--enabled { + color: var(--color-blue); + + border: 4px dashed var(--color-blue); + } + + &--disabled { + color: var(--color-red); + + border: 4px dashed var(--color-red); + } } &.over .dropzone-overlay { diff --git a/app/threads/client/flextab/thread.html b/app/threads/client/flextab/thread.html index 7bac3b0ba4078..c5378fb860829 100644 --- a/app/threads/client/flextab/thread.html +++ b/app/threads/client/flextab/thread.html @@ -11,8 +11,8 @@

{{> icon block="contextual-bar__header-close-icon" icon="plus"}} -
-
{{_ "Drop_to_upload_file"}}
+
+
{{_ dragAndDropLabel}}
    {{# with messageContext}} diff --git a/app/threads/client/flextab/thread.js b/app/threads/client/flextab/thread.js index 986bb5230974a..f04b883a3be5d 100644 --- a/app/threads/client/flextab/thread.js +++ b/app/threads/client/flextab/thread.js @@ -11,7 +11,7 @@ import { upsertMessageBulk } from '../../../ui-utils/client/lib/RoomHistoryManag import { Messages } from '../../../models'; import { lazyloadtick } from '../../../lazy-load'; import { fileUpload } from '../../../ui/client/lib/fileUpload'; -import { dropzoneEvents } from '../../../ui/client/views/app/room'; +import { dropzoneEvents, dropzoneHelpers } from '../../../ui/client/views/app/room'; import './thread.html'; const sort = { ts: 1 }; @@ -39,6 +39,7 @@ Template.thread.events({ }); Template.thread.helpers({ + ...dropzoneHelpers, threadTitle() { return normalizeThreadMessage(Template.currentData().mainMessage); }, diff --git a/app/ui/client/views/app/room.html b/app/ui/client/views/app/room.html index 3c5b3aac0013c..3092d6a9e6588 100644 --- a/app/ui/client/views/app/room.html +++ b/app/ui/client/views/app/room.html @@ -11,8 +11,8 @@ {{/headerRoom}} {{/unless}}
    -
    -
    {{_ "Drop_to_upload_file"}}
    +
    +
    {{_ dragAndDropLabel}}
    {{#unless embeddedVersion}} {{#if announcement}}
    diff --git a/app/ui/client/views/app/room.js b/app/ui/client/views/app/room.js index d86d302c4e9d4..23a2e5f463e6a 100644 --- a/app/ui/client/views/app/room.js +++ b/app/ui/client/views/app/room.js @@ -253,7 +253,28 @@ callbacks.add('enter-room', wipeFailedUploads); const ignoreReplies = getConfig('ignoreReplies') === 'true'; +export const dropzoneHelpers = { + dragAndDrop() { + return settings.get('FileUpload_Enabled') && 'dropzone--disabled'; + }, + + isDropzoneDisabled() { + return settings.get('FileUpload_Enabled') ? 'dropzone-overlay--enabled' : 'dropzone-overlay--disabled'; + }, + + dragAndDropLabel() { + if (!userCanDrop(this._id)) { + return 'error-not-allowed'; + } + if (!settings.get('FileUpload_Enabled')) { + return 'FileUpload_Disabled'; + } + return 'Drop_to_upload_file'; + }, +}; + Template.room.helpers({ + ...dropzoneHelpers, useNrr() { const useNrr = getConfig('useNrr'); return useNrr === 'true' || useNrr !== 'false'; @@ -585,6 +606,11 @@ export const dropzoneEvents = { const e = event.originalEvent || event; e.stopPropagation(); + e.preventDefault(); + + if (!userCanDrop(this._id) || !settings.get('FileUpload_Enabled')) { + return false; + } let files = (e.dataTransfer && e.dataTransfer.files) || [];