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>
|