diff --git a/src/components/attachment/attachment.js b/src/components/attachment/attachment.js index 99958589cc..fa43c12ff4 100644 --- a/src/components/attachment/attachment.js +++ b/src/components/attachment/attachment.js @@ -1,4 +1,5 @@ import nsfwImage from '../../assets/nsfw.jpg' +import fileTypeService from '../../services/file_type/file_type.service.js' const Attachment = { props: [ @@ -9,21 +10,7 @@ const Attachment = { data: () => ({ nsfwImage }), computed: { type () { - let type = 'unknown' - - if (this.attachment.mimetype.match(/text\/html/)) { - type = 'html' - } - - if (this.attachment.mimetype.match(/image/)) { - type = 'image' - } - - if (this.attachment.mimetype.match(/video\/(webm|mp4)/)) { - type = 'video' - }; - - return type + return fileTypeService.fileType(this.attachment.mimetype) } }, methods: { diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js index 58c11fb9df..60698e6efa 100644 --- a/src/components/post_status_form/post_status_form.js +++ b/src/components/post_status_form/post_status_form.js @@ -1,5 +1,6 @@ import statusPoster from '../../services/status_poster/status_poster.service.js' import MediaUpload from '../media_upload/media_upload.vue' +import fileTypeService from '../../services/file_type/file_type.service.js' import { reject, map, uniqBy } from 'lodash' @@ -67,6 +68,9 @@ const PostStatusForm = { }, enableSubmit () { this.submitDisabled = false + }, + type (fileInfo) { + return fileTypeService.fileType(fileInfo.mimetype) } } } diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue index 3709a6f6fb..a935a9840b 100644 --- a/src/components/post_status_form/post_status_form.vue +++ b/src/components/post_status_form/post_status_form.vue @@ -6,7 +6,7 @@
- +
diff --git a/src/services/file_type/file_type.service.js b/src/services/file_type/file_type.service.js new file mode 100644 index 0000000000..f9d3b46641 --- /dev/null +++ b/src/services/file_type/file_type.service.js @@ -0,0 +1,27 @@ +const fileType = (typeString) => { + let type = 'unknown' + + if (typeString.match(/text\/html/)) { + type = 'html' + } + + if (typeString.match(/image/)) { + type = 'image' + } + + if (typeString.match(/video\/(webm|mp4)/)) { + type = 'video' + } + + if (typeString.match(/audio|ogg/)) { + type = 'audio' + } + + return type +} + +const fileTypeService = { + fileType +} + +export default fileTypeService diff --git a/src/services/status_poster/status_poster.service.js b/src/services/status_poster/status_poster.service.js index 1cc97c7a57..5b50231ab9 100644 --- a/src/services/status_poster/status_poster.service.js +++ b/src/services/status_poster/status_poster.service.js @@ -19,7 +19,8 @@ const uploadMedia = ({ store, formData }) => { return { id: xml.getElementsByTagName('media_id')[0].textContent, url: xml.getElementsByTagName('media_url')[0].textContent, - image: xml.getElementsByTagName('atom:link')[0].getAttribute('href') + image: xml.getElementsByTagName('atom:link')[0].getAttribute('href'), + mimetype: xml.getElementsByTagName('atom:link')[0].getAttribute('type') } }) }