Merge branch 'composition-work' into swn

This commit is contained in:
tamaina 2022-01-11 15:59:26 +09:00
commit 0b42c5e75e
3 changed files with 73 additions and 132 deletions

View File

@ -14,71 +14,42 @@
</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 ([
if (this.file.type.endsWith('/pdf')) return 'pdf'; "application/zip",
if (this.file.type.startsWith('text/')) return 'textfile'; "application/x-cpio",
if ([ "application/x-bzip",
"application/zip", "application/x-bzip2",
"application/x-cpio", "application/java-archive",
"application/x-bzip", "application/x-rar-compressed",
"application/x-bzip2", "application/x-tar",
"application/java-archive", "application/gzip",
"application/x-rar-compressed", "application/x-7z-compressed"
"application/x-tar", ].some(e => e === props.file.type)) return 'archive';
"application/gzip", return 'unknown';
"application/x-7z-compressed" });
].some(e => e === this.file.type)) return 'archive';
return 'unknown'; const isThumbnailAvailable = computed(() => {
}, return props.file.thumbnailUrl
isThumbnailAvailable(): boolean { ? (is.value === 'image' as const || is.value === 'video')
return this.file.thumbnailUrl : false;
? (this.is === 'image' || this.is === 'video')
: 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>

View File

@ -17,54 +17,40 @@
</XModalWindow> </XModalWindow>
</template> </template>
<script lang="ts"> <script lang="ts" setup>
import { defineComponent } from 'vue'; import { ref } from 'vue';
import * as Misskey from 'misskey-js';
import XDrive from './drive.vue'; import XDrive from './drive.vue';
import XModalWindow from '@/components/ui/modal-window.vue'; import XModalWindow from '@/components/ui/modal-window.vue';
import number from '@/filters/number'; import number from '@/filters/number';
export default defineComponent({ withDefaults(defineProps<{
components: { type?: 'file' | 'folder';
XDrive, multiple: boolean;
XModalWindow, }>(), {
}, type: 'file',
props: {
type: {
type: String,
required: false,
default: 'file'
},
multiple: {
type: Boolean,
default: false
}
},
emits: ['done', 'closed'],
data() {
return {
selected: []
};
},
methods: {
ok() {
this.$emit('done', this.selected);
this.$refs.dialog.close();
},
cancel() {
this.$emit('done');
this.$refs.dialog.close();
},
onChangeSelection(xs) {
this.selected = xs;
},
number
}
}); });
const emit = defineEmits<{
(e: 'done', r?: Misskey.entities.DriveFile[]): void;
(e: 'closed'): void;
}>();
const dialog = ref<InstanceType<typeof XModalWindow>>();
const selected = ref<Misskey.entities.DriveFile[]>([]);
function ok() {
emit('done', selected.value);
dialog.value?.close();
}
function cancel() {
emit('done');
dialog.value?.close();
}
function onChangeSelection(files: Misskey.entities.DriveFile[]) {
selected.value = files;
}
</script> </script>

View File

@ -12,33 +12,17 @@
</XWindow> </XWindow>
</template> </template>
<script lang="ts"> <script lang="ts" setup>
import { defineComponent } from 'vue'; import { } from 'vue';
import * as Misskey from 'misskey-js';
import XDrive from './drive.vue'; import XDrive from './drive.vue';
import XWindow from '@/components/ui/window.vue'; import XWindow from '@/components/ui/window.vue';
export default defineComponent({ defineProps<{
components: { initialFolder?: Misskey.entities.DriveFolder;
XDrive, }>();
XWindow,
},
props: { defineEmits<{
initialFolder: { (e: 'closed'): void;
type: Object, }>();
required: false
},
},
emits: ['closed'],
data() {
return {
};
},
methods: {
}
});
</script> </script>