diff --git a/packages/rocketchat-lib/i18n/de.i18n.json b/packages/rocketchat-lib/i18n/de.i18n.json
index eb63c53bde0..b468b8efd2a 100644
--- a/packages/rocketchat-lib/i18n/de.i18n.json
+++ b/packages/rocketchat-lib/i18n/de.i18n.json
@@ -183,6 +183,7 @@
"Client_Secret" : "Client-Secret",
"close" : "Schließen",
"Closed" : "Geschlossen",
+ "Collapse_Embedded_Media_By_Default": "Eingebettete Medien standardmäßig ausblenden",
"coming_soon" : "kommt bald",
"Commands" : "Befehle",
"Compact_View" : "Kompaktansicht",
@@ -1017,4 +1018,4 @@
"Your_Open_Source_solution" : "Deine eigene Open-Source-Chat-Lösung.",
"Your_password_is_wrong" : "Falsches Passwort",
"Your_push_was_sent_to_s_devices" : "Die Push-Nachricht wurde an %s Geräte gesendet."
-}
\ No newline at end of file
+}
diff --git a/packages/rocketchat-lib/i18n/en.i18n.json b/packages/rocketchat-lib/i18n/en.i18n.json
index 47cad58a453..2b1f3439156 100644
--- a/packages/rocketchat-lib/i18n/en.i18n.json
+++ b/packages/rocketchat-lib/i18n/en.i18n.json
@@ -189,6 +189,7 @@
"Clients_will_refresh_in_a_few_seconds" : "Clients will refresh in a few seconds",
"close" : "close",
"Closed" : "Closed",
+ "Collapse_Embedded_Media_By_Default": "Collapse embedded media by default",
"coming_soon" : "coming soon",
"Commands" : "Commands",
"Compact_View" : "Compact View",
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.coffee b/packages/rocketchat-message-attachments/client/messageAttachment.coffee
index a7c9876ca9a..ef64e4365d4 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.coffee
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.coffee
@@ -13,7 +13,7 @@ Template.messageAttachment.helpers
parsedText: ->
renderMessageBody { msg: this.text }
- showImage: ->
+ loadImage: ->
if Meteor.user()?.settings?.preferences?.autoImageLoad is false and this.downloadImages? is not true
return false
@@ -31,3 +31,9 @@ Template.messageAttachment.helpers
when 'warning' then return '#FCB316'
when 'danger' then return '#D30230'
else return @color
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.html b/packages/rocketchat-message-attachments/client/messageAttachment.html
index d7b8a365c4a..8105c024eb4 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.html
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.html
@@ -22,20 +22,23 @@
{{/if}}
{{/if}}
-
{{#if title}}
- {{#if title_link}}
-
{{#if thumb_url}}
@@ -51,8 +54,9 @@
{{#if image_url}}
-
- {{#if showImage}}
+ {{#unless collapsed}}
+
+
+ {{/unless}}
{{/if}}
{{#if audio_url}}
-
-
-
+ {{#unless collapsed}}
+
+
+
+ {{/unless}}
{{/if}}
{{#if video_url}}
-
-
-
+ {{#unless collapsed}}
+
+
+
+ {{/unless}}
{{/if}}
{{#if fields}}
diff --git a/packages/rocketchat-oembed/client/oembedAudioWidget.coffee b/packages/rocketchat-oembed/client/oembedAudioWidget.coffee
new file mode 100644
index 00000000000..03756dc6da5
--- /dev/null
+++ b/packages/rocketchat-oembed/client/oembedAudioWidget.coffee
@@ -0,0 +1,7 @@
+Template.oembedAudioWidget.helpers
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedAudioWidget.html b/packages/rocketchat-oembed/client/oembedAudioWidget.html
index 9130198ede8..1b5ef1da923 100644
--- a/packages/rocketchat-oembed/client/oembedAudioWidget.html
+++ b/packages/rocketchat-oembed/client/oembedAudioWidget.html
@@ -1,12 +1,17 @@
{{#if parsedUrl}}
-
-
-
+ {{#if collapsed}}
+
+ {{else}}
+
+
+
+
+ {{/if}}
{{/if}}
diff --git a/packages/rocketchat-oembed/client/oembedFrameWidget.coffee b/packages/rocketchat-oembed/client/oembedFrameWidget.coffee
new file mode 100644
index 00000000000..d589454c1e8
--- /dev/null
+++ b/packages/rocketchat-oembed/client/oembedFrameWidget.coffee
@@ -0,0 +1,7 @@
+Template.oembedFrameWidget.helpers
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedFrameWidget.html b/packages/rocketchat-oembed/client/oembedFrameWidget.html
index de1f2d79534..a9d9bb8e6ad 100644
--- a/packages/rocketchat-oembed/client/oembedFrameWidget.html
+++ b/packages/rocketchat-oembed/client/oembedFrameWidget.html
@@ -1,25 +1,32 @@
- {{#if parsedUrl}}
-
- {{#if meta.oembedProviderName}}
- {{#if meta.oembedProviderUrl}}
- {{meta.oembedProviderName}}
- {{/if}}
+{{#if parsedUrl}}
+
+ {{#if meta.oembedProviderName}}
+ {{#if meta.oembedProviderUrl}}
+ {{meta.oembedProviderName}}
{{/if}}
- {{#if meta.oembedAuthorName}}
- {{#if meta.oembedAuthorUrl}}
- {{meta.oembedAuthorName}}
- {{/if}}
+ {{/if}}
+ {{#if meta.oembedAuthorName}}
+ {{#if meta.oembedAuthorUrl}}
+
+ {{meta.oembedAuthorName}}
{{/if}}
- {{#if meta.oembedTitle}}
- {{#if meta.oembedUrl}}
- {{meta.oembedTitle}}
- {{/if}}
+ {{/if}}
+ {{#if meta.oembedTitle}}
+ {{#if meta.oembedUrl}}
+
+ {{meta.oembedTitle}}
{{/if}}
+ {{/if}}
+ {{#if collapsed}}
+
+ {{else}}
+
{{#if meta.oembedDescription}}
{{meta.oembedDescription}}
{{/if}}
{{{meta.oembedHtml}}}
-
- {{/if}}
+ {{/if}}
+
+{{/if}}
diff --git a/packages/rocketchat-oembed/client/oembedImageWidget.coffee b/packages/rocketchat-oembed/client/oembedImageWidget.coffee
index 5a89715dc17..79444211117 100644
--- a/packages/rocketchat-oembed/client/oembedImageWidget.coffee
+++ b/packages/rocketchat-oembed/client/oembedImageWidget.coffee
@@ -1,5 +1,5 @@
Template.oembedImageWidget.helpers
- showImage: ->
+ loadImage: ->
if Meteor.user()?.settings?.preferences?.autoImageLoad is false and this.downloadImages? is not true
return false
@@ -8,3 +8,10 @@ Template.oembedImageWidget.helpers
return false
return true
+
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedImageWidget.html b/packages/rocketchat-oembed/client/oembedImageWidget.html
index 144dd766521..e6722a760ce 100644
--- a/packages/rocketchat-oembed/client/oembedImageWidget.html
+++ b/packages/rocketchat-oembed/client/oembedImageWidget.html
@@ -1,20 +1,23 @@
- {{#if showImage}}
- {{#if parsedUrl}}
-
- {{/if}}
- {{else}}
- {{#if parsedUrl}}
-
+ {{#if parsedUrl}}
+ {{#if collapsed}}
+
+ {{else}}
+
+ {{#if loadImage}}
+
+ {{else}}
+
+ {{/if}}
{{/if}}
{{/if}}
diff --git a/packages/rocketchat-oembed/client/oembedUrlWidget.coffee b/packages/rocketchat-oembed/client/oembedUrlWidget.coffee
index af25e7464ed..b9effa91f1d 100644
--- a/packages/rocketchat-oembed/client/oembedUrlWidget.coffee
+++ b/packages/rocketchat-oembed/client/oembedUrlWidget.coffee
@@ -34,3 +34,9 @@ Template.oembedUrlWidget.helpers
show: ->
return getDescription(this)? or getTitle(this)?
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedVideoWidget.coffee b/packages/rocketchat-oembed/client/oembedVideoWidget.coffee
index 65a616e4a02..399e57e57de 100644
--- a/packages/rocketchat-oembed/client/oembedVideoWidget.coffee
+++ b/packages/rocketchat-oembed/client/oembedVideoWidget.coffee
@@ -14,3 +14,9 @@ Template.oembedVideoWidget.helpers
title: ->
return getTitle @
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedVideoWidget.html b/packages/rocketchat-oembed/client/oembedVideoWidget.html
index 5377b5bf837..9d2c3dc9701 100644
--- a/packages/rocketchat-oembed/client/oembedVideoWidget.html
+++ b/packages/rocketchat-oembed/client/oembedVideoWidget.html
@@ -2,11 +2,16 @@
{{#if parsedUrl}}
- {{title}}
-
+ {{title}}
+ {{#if collapsed}}
+
+ {{else}}
+
+
+ {{/if}}
{{/if}}
diff --git a/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee b/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee
new file mode 100644
index 00000000000..c848a17f455
--- /dev/null
+++ b/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee
@@ -0,0 +1,7 @@
+Template.oembedYoutubeWidget.helpers
+
+ collapsed: ->
+ if this.collapsed?
+ return this.collapsed
+ else
+ return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true
diff --git a/packages/rocketchat-oembed/client/oembedYoutubeWidget.html b/packages/rocketchat-oembed/client/oembedYoutubeWidget.html
index b4007b8301a..f96719583b0 100644
--- a/packages/rocketchat-oembed/client/oembedYoutubeWidget.html
+++ b/packages/rocketchat-oembed/client/oembedYoutubeWidget.html
@@ -1,9 +1,14 @@
{{#if parsedUrl}}
- {{parsedUrl.host}}
-
- {{{meta.description}}}
+ {{parsedUrl.host}}
+ {{#if collapsed}}
+
+ {{else}}
+
+
+ {{{meta.description}}}
+ {{/if}}
{{/if}}
-
\ No newline at end of file
+
diff --git a/packages/rocketchat-oembed/package.js b/packages/rocketchat-oembed/package.js
index e93c20f9d4a..2ab26579052 100644
--- a/packages/rocketchat-oembed/package.js
+++ b/packages/rocketchat-oembed/package.js
@@ -28,16 +28,19 @@ Package.onUse(function(api) {
api.addFiles('client/oembedImageWidget.coffee', 'client');
api.addFiles('client/oembedAudioWidget.html', 'client');
+ api.addFiles('client/oembedAudioWidget.coffee', 'client');
api.addFiles('client/oembedVideoWidget.html', 'client');
api.addFiles('client/oembedVideoWidget.coffee', 'client');
api.addFiles('client/oembedYoutubeWidget.html', 'client');
+ api.addFiles('client/oembedYoutubeWidget.coffee', 'client');
api.addFiles('client/oembedUrlWidget.html', 'client');
api.addFiles('client/oembedUrlWidget.coffee', 'client');
api.addFiles('client/oembedFrameWidget.html', 'client');
+ api.addFiles('client/oembedFrameWidget.coffee', 'client');
api.addFiles('server/server.coffee', 'server');
api.addFiles('server/providers.coffee', 'server');
diff --git a/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html b/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html
index aefa8172fd8..d11214b612e 100644
--- a/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html
+++ b/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html
@@ -3,11 +3,16 @@
Spotify
{{#if match meta.ogAudio "spotify:artist:\\S+"}}
- {{{meta.ogTitle}}}
+ {{{meta.ogTitle}}}
{{else}}
- {{{replace meta.ogDescription ", an? (?:song|album) by (.+?) on Spotify" " - $1" regex=true}}}
+ {{{replace meta.ogDescription ", an? (?:song|album) by (.+?) on Spotify" " - $1" regex=true}}}
+ {{/if}}
+ {{#if collapsed}}
+
+ {{else}}
+
+
{{/if}}
-
{{/if}}
diff --git a/packages/rocketchat-theme/assets/stylesheets/base.less b/packages/rocketchat-theme/assets/stylesheets/base.less
index 6f25e83346d..9b3d88c108a 100644
--- a/packages/rocketchat-theme/assets/stylesheets/base.less
+++ b/packages/rocketchat-theme/assets/stylesheets/base.less
@@ -2817,8 +2817,8 @@ a.github-fork {
}
// .message-dropdown {
- // top: 100%;
- // left: 0;
+ // top: 100%;
+ // left: 0;
// }
&:hover {
@@ -4765,3 +4765,16 @@ body:not(.is-cordova) {
top: -5px;
opacity: .6;
}
+
+.collapse-switch {
+ cursor: pointer;
+}
+
+// kinda hacky, needed in oembedFrageWidget.html
+br.only-after-a {
+ display: none;
+}
+
+a + br.only-after-a {
+ display: block;
+}
\ No newline at end of file
diff --git a/packages/rocketchat-ui-account/account/accountPreferences.coffee b/packages/rocketchat-ui-account/account/accountPreferences.coffee
index dcee173ddf4..91a328eef8a 100644
--- a/packages/rocketchat-ui-account/account/accountPreferences.coffee
+++ b/packages/rocketchat-ui-account/account/accountPreferences.coffee
@@ -67,6 +67,7 @@ Template.accountPreferences.onCreated ->
data.useEmojis = $('input[name=useEmojis]:checked').val()
data.convertAsciiEmoji = $('input[name=convertAsciiEmoji]:checked').val()
data.saveMobileBandwidth = $('input[name=saveMobileBandwidth]:checked').val()
+ data.collapseMediaByDefault = $('input[name=collapseMediaByDefault]:checked').val()
data.compactView = $('input[name=compactView]:checked').val()
data.unreadRoomsMode = $('input[name=unreadRoomsMode]:checked').val()
data.autoImageLoad = $('input[name=autoImageLoad]:checked').val()
diff --git a/packages/rocketchat-ui-account/account/accountPreferences.html b/packages/rocketchat-ui-account/account/accountPreferences.html
index a361d811259..ab267d83428 100644
--- a/packages/rocketchat-ui-account/account/accountPreferences.html
+++ b/packages/rocketchat-ui-account/account/accountPreferences.html
@@ -70,6 +70,13 @@
+