47 lines
960 B
Vue
47 lines
960 B
Vue
|
<script setup lang="ts">
|
||
|
import { defineEmits, defineProps, inject } from 'vue';
|
||
|
import {
|
||
|
check_token,
|
||
|
delete_node,
|
||
|
download_file,
|
||
|
GetNodeResponse,
|
||
|
TokenInjectType
|
||
|
} from '@/api';
|
||
|
|
||
|
const jwt = inject<TokenInjectType>('jwt') as TokenInjectType;
|
||
|
const props = defineProps<{
|
||
|
node: GetNodeResponse;
|
||
|
}>();
|
||
|
|
||
|
const emit = defineEmits<{
|
||
|
(e: 'reloadNode'): void;
|
||
|
}>();
|
||
|
|
||
|
async function del() {
|
||
|
const token = await check_token(jwt);
|
||
|
if (!token) return;
|
||
|
await delete_node(token, props.node.id);
|
||
|
emit('reloadNode');
|
||
|
}
|
||
|
|
||
|
async function download() {
|
||
|
const token = await check_token(jwt);
|
||
|
if (!token) return;
|
||
|
download_file(token, props.node.id);
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<template>
|
||
|
<td>
|
||
|
<router-link :to="'/fs/' + props.node.id">{{ node.name }}</router-link>
|
||
|
</td>
|
||
|
<td>
|
||
|
<a href="#" @click="download()" v-if="props.node.isFile">Download</a>
|
||
|
</td>
|
||
|
<td>
|
||
|
<a href="#" @click="del()" v-if="props.node.name !== '..'">delete</a>
|
||
|
</td>
|
||
|
</template>
|
||
|
|
||
|
<style scoped></style>
|