chore: refactor url creation

This commit is contained in:
Ramires Viana
2022-05-02 13:47:22 +00:00
parent f663237a16
commit 9734f707f0
12 changed files with 106 additions and 69 deletions

View File

@@ -104,7 +104,7 @@
</a>
</div>
<div class="share__box__element share__box__center">
<qrcode-vue :value="fullLink" size="200" level="M"></qrcode-vue>
<qrcode-vue :value="link" size="200" level="M"></qrcode-vue>
</div>
</div>
<div
@@ -173,7 +173,6 @@
<script>
import { mapState, mapMutations, mapGetters } from "vuex";
import { pub as api } from "@/api";
import { baseURL } from "@/utils/constants";
import filesize from "filesize";
import moment from "moment";
@@ -231,21 +230,10 @@ export default {
return "insert_drive_file";
},
link: function () {
let queryArg = "";
if (this.token !== "") {
queryArg = `?token=${this.token}`;
}
const path = this.$route.path.split("/").splice(2).join("/");
return `${baseURL}/api/public/dl/${path}${queryArg}`;
return api.getDownloadURL(this.req);
},
inlineLink: function () {
let url = new URL(this.fullLink);
url.searchParams.set("inline", "true");
return url.href;
},
fullLink: function () {
return window.location.origin + this.link;
return api.getDownloadURL(this.req, true);
},
humanSize: function () {
if (this.req.isDir) {
@@ -287,6 +275,7 @@ export default {
try {
let file = await api.fetch(url, this.password);
file.hash = this.hash;
this.token = file.token || "";

View File

@@ -209,6 +209,7 @@
v-bind:modified="item.modified"
v-bind:type="item.type"
v-bind:size="item.size"
v-bind:path="item.path"
>
</item>
</div>
@@ -225,6 +226,7 @@
v-bind:modified="item.modified"
v-bind:type="item.type"
v-bind:size="item.size"
v-bind:path="item.path"
>
</item>
</div>

View File

@@ -103,7 +103,7 @@
</a>
<a
target="_blank"
:href="downloadUrl + '&inline=true'"
:href="raw"
class="button button--flat"
v-if="!req.isDir"
>
@@ -145,7 +145,7 @@
<script>
import { mapState } from "vuex";
import { files as api } from "@/api";
import { baseURL, resizePreview } from "@/utils/constants";
import { resizePreview } from "@/utils/constants";
import url from "@/utils/url";
import throttle from "lodash.throttle";
import HeaderBar from "@/components/header/HeaderBar";
@@ -186,23 +186,14 @@ export default {
return this.nextLink !== "";
},
downloadUrl() {
return `${baseURL}/api/raw${url.encodePath(this.req.path)}?auth=${
this.jwt
}`;
},
previewUrl() {
// reload the image when the file is replaced
const key = Date.parse(this.req.modified);
if (this.req.type === "image" && !this.fullSize) {
return `${baseURL}/api/preview/big${url.encodePath(
this.req.path
)}?k=${key}`;
}
return `${baseURL}/api/raw${url.encodePath(this.req.path)}?k=${key}`;
return api.getDownloadURL(this.req);
},
raw() {
return `${this.previewUrl}&inline=true`;
if (this.req.type === "image" && !this.fullSize) {
return api.getPreviewURL(this.req, "big");
}
return api.getDownloadURL(this.req, true);
},
showMore() {
return this.$store.state.show === "more";
@@ -276,9 +267,7 @@ export default {
}
if (this.req.subtitles) {
this.subtitles = this.req.subtitles.map(
(sub) => `${baseURL}/api/raw${sub}?inline=true`
);
this.subtitles = api.getSubtitlesURL(this.req);
}
let dirs = this.$route.fullPath.split("/");
@@ -320,15 +309,14 @@ export default {
return;
}
},
prefetchUrl: function (item) {
const key = Date.parse(item.modified);
if (item.type === "image" && !this.fullSize) {
return `${baseURL}/api/preview/big${item.path}?k=${key}&inline=true`;
} else if (item.type === "image") {
return `${baseURL}/api/raw${item.path}?k=${key}&inline=true`;
} else {
prefetchUrl(item) {
if (item.type !== "image") {
return "";
}
return this.fullSize
? api.getDownloadURL(item, true)
: api.getPreviewURL(item, "big");
},
openMore() {
this.$store.commit("showHover", "more");
@@ -358,7 +346,7 @@ export default {
this.$router.push({ path: uri });
},
download() {
api.download(null, this.$route.path);
window.open(this.downloadUrl);
},
},
};

View File

@@ -19,9 +19,7 @@
<tr v-for="link in links" :key="link.hash">
<td>
<a :href="buildLink(link.hash)" target="_blank">{{
link.path
}}</a>
<a :href="buildLink(link)" target="_blank">{{ link.path }}</a>
</td>
<td>
<template v-if="link.expire !== 0">{{
@@ -43,7 +41,7 @@
<td class="small">
<button
class="action copy-clipboard"
:data-clipboard-text="buildLink(link.hash)"
:data-clipboard-text="buildLink(link)"
:aria-label="$t('buttons.copyToClipboard')"
:title="$t('buttons.copyToClipboard')"
>
@@ -64,7 +62,6 @@
<script>
import { share as api, users } from "@/api";
import { baseURL } from "@/utils/constants";
import { mapState, mapMutations } from "vuex";
import moment from "moment";
import Clipboard from "clipboard";
@@ -136,8 +133,8 @@ export default {
humanTime(time) {
return moment(time * 1000).fromNow();
},
buildLink(hash) {
return `${window.location.origin}${baseURL}/share/${hash}`;
buildLink(share) {
return api.getShareURL(share);
},
},
};