aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPitu <[email protected]>2021-01-20 14:09:22 +0900
committerPitu <[email protected]>2021-01-20 14:09:22 +0900
commit56f38f44945d0fa0dd34da14ecec400c3016b888 (patch)
treec53c38e0dd340a15a0892d9e919cb450fcf17597
parentchore: switch to asyncData where needed (diff)
downloadhost.fuwn.me-56f38f44945d0fa0dd34da14ecec400c3016b888.tar.xz
host.fuwn.me-56f38f44945d0fa0dd34da14ecec400c3016b888.zip
feat: make public albums ssr friendly
-rw-r--r--src/site/pages/a/_identifier.vue33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/site/pages/a/_identifier.vue b/src/site/pages/a/_identifier.vue
index d0da06d..306f91d 100644
--- a/src/site/pages/a/_identifier.vue
+++ b/src/site/pages/a/_identifier.vue
@@ -102,8 +102,22 @@ export default {
watch: {
current: 'fetchPaginate'
},
- created() {
- this.fetch();
+ async asyncData({ app, params, error }) {
+ try {
+ const { data } = await axios.get(`${app.store.state.config.baseURL}/album/${params.identifier}`, { params: { limit: 50, page: 1 } });
+ const downloadLink = data.downloadEnabled ? `${app.store.state.config.baseURL}/album/${params.identifier}/zip` : null;
+ return {
+ name: data.name,
+ downloadEnabled: data.downloadEnabled,
+ files: data.files,
+ downloadLink,
+ isNsfw: data.isNsfw,
+ totalFiles: data.count
+ };
+ } catch (err) {
+ console.log('Error when retrieving album', err);
+ error({ statusCode: 404, message: 'Album not found' });
+ }
},
methods: {
async fetch(page = 1) {
@@ -130,21 +144,16 @@ export default {
this.isLoading = false;
}
},
- metaInfo() {
+ head() {
if (this.files) {
return {
title: `${this.name ? this.name : ''}`,
meta: [
- { vmid: 'theme-color', name: 'theme-color', content: '#30a9ed' },
- { vmid: 'twitter:card', name: 'twitter:card', content: 'summary' },
{ vmid: 'twitter:title', name: 'twitter:title', content: `Album: ${this.name} | Files: ${this.files.length}` },
- { vmid: 'twitter:description', name: 'twitter:description', content: 'A modern and self-hosted file upload service that can handle anything you throw at it. Fast uploads, file manager and sharing capabilities all crafted with a beautiful user experience in mind.' },
{ vmid: 'twitter:image', name: 'twitter:image', content: `${this.files.length > 0 ? this.files[0].thumbSquare : '/public/images/share.jpg'}` },
{ vmid: 'twitter:image:src', name: 'twitter:image:src', value: `${this.files.length > 0 ? this.files[0].thumbSquare : '/public/images/share.jpg'}` },
-
{ vmid: 'og:url', property: 'og:url', content: `${this.config.URL}/a/${this.$route.params.identifier}` },
{ vmid: 'og:title', property: 'og:title', content: `Album: ${this.name} | Files: ${this.files.length}` },
- { vmid: 'og:description', property: 'og:description', content: 'A modern and self-hosted file upload service that can handle anything you throw at it. Fast uploads, file manager and sharing capabilities all crafted with a beautiful user experience in mind.' },
{ vmid: 'og:image', property: 'og:image', content: `${this.files.length > 0 ? this.files[0].thumbSquare : '/public/images/share.jpg'}` },
{ vmid: 'og:image:secure_url', property: 'og:image:secure_url', content: `${this.files.length > 0 ? this.files[0].thumbSquare : '/public/images/share.jpg'}` }
]
@@ -153,13 +162,7 @@ export default {
return {
title: `${this.name ? this.name : ''}`,
meta: [
- { vmid: 'theme-color', name: 'theme-color', content: '#30a9ed' },
- { vmid: 'twitter:card', name: 'twitter:card', content: 'summary' },
- { vmid: 'twitter:title', name: 'twitter:title', content: 'chibisafe' },
- { vmid: 'twitter:description', name: 'twitter:description', content: 'A modern and self-hosted file upload service that can handle anything you throw at it. Fast uploads, file manager and sharing capabilities all crafted with a beautiful user experience in mind.' },
- { vmid: 'og:url', property: 'og:url', content: `${this.config.URL}/a/${this.$route.params.identifier}` },
- { vmid: 'og:title', property: 'og:title', content: 'chibisafe' },
- { vmid: 'og:description', property: 'og:description', content: 'A modern and self-hosted file upload service that can handle anything you throw at it. Fast uploads, file manager and sharing capabilities all crafted with a beautiful user experience in mind.' }
+ { vmid: 'og:url', property: 'og:url', content: `${this.config.URL}/a/${this.$route.params.identifier}` }
]
};
}