components/drive-file-thumbnail.vue

This commit is contained in:
tamaina 2022-01-11 15:38:41 +09:00
parent 2f128bcd3c
commit e67b06cc4e
1 changed files with 33 additions and 62 deletions

View File

@ -14,42 +14,24 @@
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts" setup>
import { defineComponent } from 'vue'; import { computed } from 'vue';
import * as Misskey from 'misskey-js';
import ImgWithBlurhash from '@/components/img-with-blurhash.vue'; import ImgWithBlurhash from '@/components/img-with-blurhash.vue';
import { ColdDeviceStorage } from '@/store';
export default defineComponent({ const props = defineProps<{
components: { file: Misskey.entities.DriveFile;
ImgWithBlurhash fit: string;
}, }>();
props: {
file: {
type: Object,
required: true
},
fit: {
type: String,
required: false,
default: 'cover'
},
},
data() {
return {
isContextmenuShowing: false,
isDragging: false,
}; const is = computed(() => {
}, if (props.file.type.startsWith('image/')) return 'image';
computed: { if (props.file.type.startsWith('video/')) return 'video';
is(): 'image' | 'video' | 'midi' | 'audio' | 'csv' | 'pdf' | 'textfile' | 'archive' | 'unknown' { if (props.file.type === 'audio/midi') return 'midi';
if (this.file.type.startsWith('image/')) return 'image'; if (props.file.type.startsWith('audio/')) return 'audio';
if (this.file.type.startsWith('video/')) return 'video'; if (props.file.type.endsWith('/csv')) return 'csv';
if (this.file.type === 'audio/midi') return 'midi'; if (props.file.type.endsWith('/pdf')) return 'pdf';
if (this.file.type.startsWith('audio/')) return 'audio'; if (props.file.type.startsWith('text/')) return 'textfile';
if (this.file.type.endsWith('/csv')) return 'csv';
if (this.file.type.endsWith('/pdf')) return 'pdf';
if (this.file.type.startsWith('text/')) return 'textfile';
if ([ if ([
"application/zip", "application/zip",
"application/x-cpio", "application/x-cpio",
@ -60,25 +42,14 @@ export default defineComponent({
"application/x-tar", "application/x-tar",
"application/gzip", "application/gzip",
"application/x-7z-compressed" "application/x-7z-compressed"
].some(e => e === this.file.type)) return 'archive'; ].some(e => e === props.file.type)) return 'archive';
return 'unknown'; return 'unknown';
}, });
isThumbnailAvailable(): boolean {
return this.file.thumbnailUrl const isThumbnailAvailable = computed(() => {
? (this.is === 'image' || this.is === 'video') return props.file.thumbnailUrl
? (is.value === 'image' as const || is.value === 'video')
: false; : false;
},
},
mounted() {
const audioTag = this.$refs.volumectrl as HTMLAudioElement;
if (audioTag) audioTag.volume = ColdDeviceStorage.get('mediaVolume');
},
methods: {
volumechange() {
const audioTag = this.$refs.volumectrl as HTMLAudioElement;
ColdDeviceStorage.set('mediaVolume', audioTag.volume);
}
}
}); });
</script> </script>