forked from AkkomaGang/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 nsfwImage from '../../assets/nsfw.jpg'
|
||||||
|
import fileTypeService from '../../services/file_type/file_type.service.js'
|
||||||
|
|
||||||
const Attachment = {
|
const Attachment = {
|
||||||
props: [
|
props: [
|
||||||
|
@ -9,21 +10,7 @@ const Attachment = {
|
||||||
data: () => ({ nsfwImage }),
|
data: () => ({ nsfwImage }),
|
||||||
computed: {
|
computed: {
|
||||||
type () {
|
type () {
|
||||||
let type = 'unknown'
|
return fileTypeService.fileType(this.attachment.mimetype)
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import statusPoster from '../../services/status_poster/status_poster.service.js'
|
import statusPoster from '../../services/status_poster/status_poster.service.js'
|
||||||
import MediaUpload from '../media_upload/media_upload.vue'
|
import MediaUpload from '../media_upload/media_upload.vue'
|
||||||
|
import fileTypeService from '../../services/file_type/file_type.service.js'
|
||||||
|
|
||||||
import { reject, map, uniqBy } from 'lodash'
|
import { reject, map, uniqBy } from 'lodash'
|
||||||
|
|
||||||
|
@ -67,6 +68,9 @@ const PostStatusForm = {
|
||||||
},
|
},
|
||||||
enableSubmit () {
|
enableSubmit () {
|
||||||
this.submitDisabled = false
|
this.submitDisabled = false
|
||||||
|
},
|
||||||
|
type (fileInfo) {
|
||||||
|
return fileTypeService.fileType(fileInfo.mimetype)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="attachments">
|
<div class="attachments">
|
||||||
<div class="attachment" v-for="file in newStatus.files">
|
<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>
|
</div>
|
||||||
<div class='form-bottom'>
|
<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 {
|
return {
|
||||||
id: xml.getElementsByTagName('media_id')[0].textContent,
|
id: xml.getElementsByTagName('media_id')[0].textContent,
|
||||||
url: xml.getElementsByTagName('media_url')[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