forked from srxl/akkoma-fe
Add fileTypeService
This commit is contained in:
parent
96b4997492
commit
4f8d476a2b
5 changed files with 36 additions and 17 deletions
|
@ -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: {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
</div>
|
||||
<div class="attachments">
|
||||
<div class="attachment" v-for="file in newStatus.files">
|
||||
<img class="thumbnail media-upload" :src="file.image"></img>
|
||||
<img class="thumbnail media-upload" :src="file.image" v-if="type(file) === 'image'"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div class='form-bottom'>
|
||||
|
|
27
src/services/file_type/file_type.service.js
Normal file
27
src/services/file_type/file_type.service.js
Normal file
|
@ -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
|
|
@ -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')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue