diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.coffee b/packages/rocketchat-message-attachments/client/messageAttachment.coffee deleted file mode 100644 index 775a7fc8612..00000000000 --- a/packages/rocketchat-message-attachments/client/messageAttachment.coffee +++ /dev/null @@ -1,63 +0,0 @@ -import moment from 'moment' - -fixCordova = (url) -> - if url?.indexOf('data:image') is 0 - return url - - if Meteor.isCordova and url?[0] is '/' - url = Meteor.absoluteUrl().replace(/\/$/, '') + url - query = "rc_uid=#{Meteor.userId()}&rc_token=#{Meteor._localStorage.getItem('Meteor.loginToken')}" - if url.indexOf('?') is -1 - url = url + '?' + query - else - url = url + '&' + query - - if Meteor.settings.public.sandstorm or url.match /^(https?:)?\/\//i - return url - else if navigator.userAgent.indexOf('Electron') > -1 - return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url - else - return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url - -Template.messageAttachment.helpers - fixCordova: fixCordova - - parsedText: -> - renderMessageBody { msg: this.text } - - loadImage: -> - if Meteor.user()?.settings?.preferences?.autoImageLoad is false and this.downloadImages? is not true - return false - - if Meteor.Device.isPhone() and Meteor.user()?.settings?.preferences?.saveMobileBandwidth and this.downloadImages? is not true - return false - - return true - - getImageHeight: (height) -> - return height or 200 - - color: -> - switch @color - when 'good' then return '#35AC19' - 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 - - time: -> - messageDate = new Date(@ts) - today = new Date() - if messageDate.toDateString() is today.toDateString() - return moment(@ts).format(RocketChat.settings.get('Message_TimeFormat')) - else - return moment(@ts).format(RocketChat.settings.get('Message_TimeAndDateFormat')) - - injectIndex: (data, previousIndex, index) -> - data.index = previousIndex + '.attachments.' + index - return diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js new file mode 100644 index 00000000000..2b23a5d4a1c --- /dev/null +++ b/packages/rocketchat-message-attachments/client/messageAttachment.js @@ -0,0 +1,80 @@ +import moment from 'moment'; + +const fixCordova = function(url) { + let query; + if (url && url.indexOf('data:image') === 0) { + return url; + } + if (Meteor.isCordova && (url && url[0] === '/')) { + url = Meteor.absoluteUrl().replace(/\/$/, '') + url; + query = `rc_uid=${ Meteor.userId() }&rc_token=${ Meteor._localStorage.getItem('Meteor.loginToken') }`; + if (url.indexOf('?') === -1) { + url = `${ url }?${ query }`; + } else { + url = `${ url }&${ query }`; + } + } + if (Meteor.settings['public'].sandstorm || url.match(/^(https?:)?\/\//i)) { + return url; + } else if (navigator.userAgent.indexOf('Electron') > -1) { + return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; + } else { + return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url; + } +}; +/*globals renderMessageBody*/ +Template.messageAttachment.helpers({ + fixCordova, + parsedText() { + return renderMessageBody({ + msg: this.text + }); + }, + loadImage() { + const user = Meteor.user(); + if (user && user.settings && user.settings.preferences && this.downloadImages !== true) { + if (user.settings.preferences.autoImageLoad === false) { + return false; + } + if (Meteor.Device.isPhone() && user.settings.preferences.saveMobileBandwidth !== true) { + return false; + } + } + return true; + }, + getImageHeight(height) { + return height || 200; + }, + color() { + switch (this.color) { + case 'good': + return '#35AC19'; + case 'warning': + return '#FCB316'; + case 'danger': + return '#D30230'; + default: + return this.color; + } + }, + collapsed() { + if (this.collapsed != null) { + return this.collapsed; + } else { + const user = Meteor.user(); + return user && user.settings && user.settings.preferences && user.settings.preferences.collapseMediaByDefault === true; + } + }, + time() { + const messageDate = new Date(this.ts); + const today = new Date(); + if (messageDate.toDateString() === today.toDateString()) { + return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); + } else { + return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat')); + } + }, + injectIndex(data, previousIndex, index) { + data.index = `${ previousIndex }.attachments.${ index }`; + } +}); diff --git a/packages/rocketchat-message-attachments/package.js b/packages/rocketchat-message-attachments/package.js index c6282012e22..22563380d4c 100644 --- a/packages/rocketchat-message-attachments/package.js +++ b/packages/rocketchat-message-attachments/package.js @@ -16,7 +16,7 @@ Package.onUse(function(api) { ]); api.addFiles('client/messageAttachment.html', 'client'); - api.addFiles('client/messageAttachment.coffee', 'client'); + api.addFiles('client/messageAttachment.js', 'client'); // stylesheets api.addFiles('client/stylesheets/messageAttachments.less', 'client');