From 84b2637d7d1177ed2bdb9240946db464c03c9bb3 Mon Sep 17 00:00:00 2001
From: fk <2378306+fkrull@users.noreply.github.com>
Date: Wed, 13 Mar 2024 17:49:40 +0100
Subject: [PATCH] feat: allow setting API, proxy, and frontend URLs at build
time (#3284)
---
.env | 3 +++
index.html | 1 +
src/components/LoginPage.vue | 4 ++--
src/components/NavBar.vue | 2 +-
src/components/PageNotFound.vue | 6 +++++-
src/components/PreferencesPage.vue | 8 ++++----
src/components/RegisterPage.vue | 4 ++--
src/components/TrendingPage.vue | 9 +++++++--
src/main.js | 6 +++---
9 files changed, 28 insertions(+), 15 deletions(-)
create mode 100644 .env
diff --git a/.env b/.env
new file mode 100644
index 00000000..ddba8b7a
--- /dev/null
+++ b/.env
@@ -0,0 +1,3 @@
+VITE_PIPED_API=https://pipedapi.kavin.rocks
+VITE_PIPED_PROXY=https://pipedproxy.kavin.rocks
+VITE_PIPED_INSTANCES=https://piped-instances.kavin.rocks/
diff --git a/index.html b/index.html
index abc042ea..fecbdd50 100644
--- a/index.html
+++ b/index.html
@@ -1,6 +1,7 @@
+
diff --git a/src/components/LoginPage.vue b/src/components/LoginPage.vue
index 55588f76..b7d4f1ba 100644
--- a/src/components/LoginPage.vue
+++ b/src/components/LoginPage.vue
@@ -51,7 +51,7 @@ export default {
mounted() {
//TODO: Add Server Side check
if (this.getAuthToken()) {
- this.$router.push("/");
+ this.$router.push(import.meta.env.BASE_URL);
}
},
activated() {
@@ -69,7 +69,7 @@ export default {
}).then(resp => {
if (resp.token) {
this.setPreference("authToken" + this.hashCode(this.authApiUrl()), resp.token);
- window.location = "/"; // done to bypass cache
+ window.location = import.meta.env.BASE_URL; // done to bypass cache
} else alert(resp.error);
});
},
diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue
index 73f4f09f..85764d1e 100644
--- a/src/components/NavBar.vue
+++ b/src/components/NavBar.vue
@@ -131,7 +131,7 @@ export default {
searchText: "",
suggestionsVisible: false,
showTopNav: false,
- homePagePath: "/",
+ homePagePath: import.meta.env.BASE_URL,
registrationDisabled: false,
};
},
diff --git a/src/components/PageNotFound.vue b/src/components/PageNotFound.vue
index e1dc267a..d3b458eb 100644
--- a/src/components/PageNotFound.vue
+++ b/src/components/PageNotFound.vue
@@ -1,7 +1,11 @@
+
+
diff --git a/src/components/PreferencesPage.vue b/src/components/PreferencesPage.vue
index 82a817c3..b70eed5e 100644
--- a/src/components/PreferencesPage.vue
+++ b/src/components/PreferencesPage.vue
@@ -504,7 +504,7 @@ export default {
async mounted() {
if (Object.keys(this.$route.query).length > 0) this.$router.replace({ query: {} });
- this.fetchJson("https://piped-instances.kavin.rocks/").then(resp => {
+ this.fetchJson(import.meta.env.VITE_PIPED_INSTANCES).then(resp => {
this.instances = resp;
if (!this.instances.some(instance => instance.api_url == this.apiUrl()))
this.instances.push({
@@ -517,7 +517,7 @@ export default {
});
if (this.testLocalStorage) {
- this.selectedInstance = this.getPreferenceString("instance", "https://pipedapi.kavin.rocks");
+ this.selectedInstance = this.getPreferenceString("instance", import.meta.env.VITE_PIPED_API);
this.authInstance = this.getPreferenceBoolean("authInstance", false);
this.selectedAuthInstance = this.getPreferenceString("auth_instance_url", this.selectedInstance);
@@ -655,14 +655,14 @@ export default {
// reset the auth token
localStorage.removeItem("authToken" + this.hashCode(this.authApiUrl()));
// redirect to trending page
- window.location = "/";
+ window.location = import.meta.env.BASE_URL;
},
resetPreferences() {
this.showConfirmResetPrefsDialog = false;
// clear the local storage
localStorage.clear();
// redirect to the home page
- window.location = "/";
+ window.location = import.meta.env.BASE_URL;
},
async invalidateSession() {
this.fetchJson(this.authApiUrl() + "/logout", null, {
diff --git a/src/components/RegisterPage.vue b/src/components/RegisterPage.vue
index 1798e973..a9da9310 100644
--- a/src/components/RegisterPage.vue
+++ b/src/components/RegisterPage.vue
@@ -83,7 +83,7 @@ export default {
mounted() {
//TODO: Add Server Side check
if (this.getAuthToken()) {
- this.$router.push("/");
+ this.$router.push(import.meta.env.BASE_URL);
}
},
activated() {
@@ -109,7 +109,7 @@ export default {
}).then(resp => {
if (resp.token) {
this.setPreference("authToken" + this.hashCode(this.authApiUrl()), resp.token);
- window.location = "/"; // done to bypass cache
+ window.location = import.meta.env.BASE_URL; // done to bypass cache
} else alert(resp.error);
});
},
diff --git a/src/components/TrendingPage.vue b/src/components/TrendingPage.vue
index f50042db..34d0bf22 100644
--- a/src/components/TrendingPage.vue
+++ b/src/components/TrendingPage.vue
@@ -23,7 +23,12 @@ export default {
};
},
mounted() {
- if (this.$route.path == "/" && this.getPreferenceString("homepage", "trending") == "feed") return;
+ if (
+ this.$route.path == import.meta.env.BASE_URL &&
+ this.getPreferenceString("homepage", "trending") == "feed"
+ ) {
+ return;
+ }
let region = this.getPreferenceString("region", "US");
this.fetchTrending(region).then(videos => {
@@ -35,7 +40,7 @@ export default {
activated() {
document.title = this.$t("titles.trending") + " - Piped";
if (this.videos.length > 0) this.updateWatched(this.videos);
- if (this.$route.path == "/") {
+ if (this.$route.path == import.meta.env.BASE_URL) {
let homepage = this.getHomePage(this);
if (homepage !== undefined) this.$router.push(homepage);
}
diff --git a/src/main.js b/src/main.js
index da46d9c1..fa469fdc 100644
--- a/src/main.js
+++ b/src/main.js
@@ -117,7 +117,7 @@ const mixin = {
} else return defaultVal;
},
apiUrl() {
- return this.getPreferenceString("instance", "https://pipedapi.kavin.rocks");
+ return this.getPreferenceString("instance", import.meta.env.VITE_PIPED_API);
},
authApiUrl() {
if (this.getPreferenceBoolean("authInstance", false)) {
@@ -347,7 +347,7 @@ const mixin = {
id: playlistId,
name: name,
description: "",
- thumbnail: "https://pipedproxy.kavin.rocks/?host=i.ytimg.com",
+ thumbnail: import.meta.env.VITE_PIPED_PROXY + "/?host=i.ytimg.com",
videoIds: "[]", // empty list
});
return { playlistId: playlistId };
@@ -471,7 +471,7 @@ const mixin = {
const videoIds = JSON.parse(playlist.videoIds);
videoIds.splice(index, 1);
playlist.videoIds = JSON.stringify(videoIds);
- if (videoIds.length == 0) playlist.thumbnail = "https://pipedproxy.kavin.rocks/?host=i.ytimg.com";
+ if (videoIds.length == 0) playlist.thumbnail = import.meta.env.VITE_PIPED_PROXY + "/?host=i.ytimg.com";
this.createOrUpdateLocalPlaylist(playlist);
return { message: "ok" };
}