upend/ui/src/views/Home.vue

90 lines
1.8 KiB
Vue
Raw Normal View History

2021-03-24 21:23:07 +01:00
<template>
<div class="home">
2021-05-06 20:26:03 +02:00
<h1>
Welcome to
<em v-if="infoData?.name"> "{{ infoData.name }}" </em>
<template v-else> UpEnd </template>
</h1>
2021-05-06 20:57:52 +02:00
<section class="latest" v-if="latestFiles">
<h2>Most recently added files</h2>
<ul>
<li v-for="file in latestFiles" :key="file.hash">
<div class="file-added">{{ file.added }}</div>
<router-link
:to="{ name: 'inspect', params: { address: file.hash } }"
>
<div class="file-path">{{ file.path }}</div>
</router-link>
</li>
</ul>
</section>
2021-03-24 21:23:07 +01:00
</div>
</template>
<script lang="ts">
2021-05-06 20:26:03 +02:00
import { IFile, VaultInfo } from "@/types/base";
2021-03-24 21:23:07 +01:00
import useSWRV from "swrv";
import { computed, defineComponent } from "vue";
import { fetcher } from "../utils";
2021-05-06 20:57:52 +02:00
import { formatRelative, parseISO } from "date-fns";
2021-03-24 21:23:07 +01:00
export default defineComponent({
name: "Home",
setup() {
2021-05-06 20:26:03 +02:00
const { data: infoData } = useSWRV<VaultInfo, unknown>(
"/api/info",
fetcher
);
2021-03-24 21:23:07 +01:00
const { data: latestFilesRaw } = useSWRV<IFile[], unknown>(
"/api/files/latest",
fetcher
);
const latestFiles = computed(() => {
if (latestFilesRaw?.value) {
return latestFilesRaw.value.map((file) => {
return {
...file,
2021-05-06 20:57:52 +02:00
added: formatRelative(parseISO(file.added), new Date()),
2021-03-24 21:23:07 +01:00
mtime: parseISO(file.added),
};
});
}
});
return {
2021-05-06 20:26:03 +02:00
infoData,
2021-03-24 21:23:07 +01:00
latestFiles,
};
},
});
</script>
2021-05-06 20:26:03 +02:00
<style lang="scss">
h1 {
text-align: center;
font-weight: normal;
}
2021-05-06 20:57:52 +02:00
.latest {
ul {
list-style: none;
padding: 0;
}
li {
display: flex;
& > * {
margin: .1em .25em;
}
}
.file-added {
opacity: .77;
}
}
2021-05-06 20:26:03 +02:00
</style>