Merge remote-tracking branch 'origin/master'

This commit is contained in:
Yukino Song
2024-10-26 21:04:50 +08:00
32 changed files with 679 additions and 96 deletions

View File

@@ -1,8 +1,8 @@
<template>
<nav class="navbar navbar-light navbar-expand-lg navbar-background header">
<div class="container">
<a class="navbar-brand" href="/" title="Apollo">
<img src="/images/logo-apollo-45.png" height="45" alt="Apollo">
<a class="navbar-brand" href="./" title="Apollo">
<img src="./images/logo-apollo-45.png" height="45" alt="Apollo">
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
@@ -11,22 +11,22 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="/"><i class="fas fa-fw fa-home"></i> {{ $t('navbar.home') }}</a>
<a class="nav-link" href="./"><i class="fas fa-fw fa-home"></i> {{ $t('navbar.home') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/pin"><i class="fas fa-fw fa-unlock"></i> {{ $t('navbar.pin') }}</a>
<a class="nav-link" href="./pin"><i class="fas fa-fw fa-unlock"></i> {{ $t('navbar.pin') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/apps"><i class="fas fa-fw fa-stream"></i> {{ $t('navbar.applications') }}</a>
<a class="nav-link" href="./apps"><i class="fas fa-fw fa-stream"></i> {{ $t('navbar.applications') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/config"><i class="fas fa-fw fa-cog"></i> {{ $t('navbar.configuration') }}</a>
<a class="nav-link" href="./config"><i class="fas fa-fw fa-cog"></i> {{ $t('navbar.configuration') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/password"><i class="fas fa-fw fa-user-shield"></i> {{ $t('navbar.password') }}</a>
<a class="nav-link" href="./password"><i class="fas fa-fw fa-user-shield"></i> {{ $t('navbar.password') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/troubleshooting"><i class="fas fa-fw fa-info"></i> {{ $t('navbar.troubleshoot') }}</a>
<a class="nav-link" href="./troubleshooting"><i class="fas fa-fw fa-info"></i> {{ $t('navbar.troubleshoot') }}</a>
</li>
<li class="nav-item">
<ThemeToggle/>

View File

@@ -436,7 +436,7 @@
created() {
this.loadApps();
fetch("/api/config", {
fetch("./api/config", {
credentials: 'include'
})
.then(r => r.json())
@@ -444,7 +444,7 @@
},
methods: {
loadApps() {
fetch("/api/apps", {
fetch("./api/apps", {
credentials: 'include'
})
.then(r => r.json())
@@ -459,7 +459,7 @@
launchApp(app) {
if (confirm(this.$t('apps.launch_warning'))) {
app.launching = true;
fetch("/api/apps/launch?uuid=" + app.uuid, {
fetch("./api/apps/launch?uuid=" + app.uuid, {
credentials: 'include',
method: "POST",
})
@@ -483,7 +483,7 @@
"Are you sure to delete " + app.name + "?"
);
if (resp) {
fetch("/api/apps/delete?uuid=" + app.uuid, {
fetch("./api/apps/delete?uuid=" + app.uuid, {
credentials: 'include',
method: "POST"
}).then((r) => {
@@ -584,7 +584,7 @@
},
useCover(cover) {
this.coverFinderBusy = true;
fetch("/api/covers/upload", {
fetch("./api/covers/upload", {
credentials: 'include',
method: "POST",
body: JSON.stringify({
@@ -602,7 +602,7 @@
this.editForm["image-path"] = this.editForm["image-path"].toString().replace(/"/g, '');
delete this.editForm["launching"];
delete this.editForm["id"];
fetch("/api/apps", {
fetch("./api/apps", {
credentials: 'include',
method: "POST",
body: JSON.stringify(this.editForm),

View File

@@ -291,7 +291,7 @@
}
},
created() {
fetch("/api/config", {
fetch("./api/config", {
credentials: 'include'
})
.then((r) => r.json())
@@ -393,7 +393,7 @@
});
});
return fetch("/api/config", {
return fetch("./api/config", {
credentials: 'include',
method: "POST",
body: JSON.stringify(config),
@@ -417,7 +417,7 @@
setTimeout(() => {
this.saved = this.restarted = false;
}, 5000);
fetch("/api/restart", {
fetch("./api/restart", {
method: "POST"
})
.then((resp) => {

View File

@@ -19,7 +19,7 @@
<ul>
<li v-for="v in fancyLogs.filter(x => x.level === 'Fatal')">{{v.value}}</li>
</ul>
<a class="btn btn-danger" href="/troubleshooting/#logs">View Logs</a>
<a class="btn btn-danger" href="./troubleshooting/#logs">View Logs</a>
</div>
<!-- Version -->
<div class="card p-2 my-4">
@@ -101,7 +101,7 @@
},
async created() {
try {
let config = await fetch("/api/config").then((r) => r.json());
let config = await fetch("./api/config").then((r) => r.json());
this.notifyPreReleases = config.notify_pre_releases;
this.version = new ApolloVersion(null, config.version);
console.log("Version: ", this.version.version)
@@ -115,7 +115,7 @@
console.error(e);
}
try {
this.logs = (await fetch("/api/logs").then(r => r.text()))
this.logs = (await fetch("./api/logs").then(r => r.text()))
} catch (e) {
console.error(e);
}

View File

@@ -4,7 +4,7 @@ import {createI18n} from "vue-i18n";
import en from './public/assets/locale/en.json'
export default async function() {
let r = await (await fetch("/api/configLocale", { credentials: 'include' })).json();
let r = await (await fetch("./api/configLocale", { credentials: 'include' })).json();
let locale = r.locale ?? "en";
document.querySelector('html').setAttribute('lang', locale);
let messages = {
@@ -12,7 +12,7 @@ export default async function() {
};
try {
if (locale !== 'en') {
let r = await (await fetch(`/assets/locale/${locale}.json`, { credentials: 'include' })).json();
let r = await (await fetch(`./assets/locale/${locale}.json`, { credentials: 'include' })).json();
messages[locale] = r;
}
} catch (e) {

View File

@@ -94,7 +94,7 @@
return;
};
this.error = null;
fetch("/api/password", {
fetch("./api/password", {
credentials: 'include',
method: "POST",
body: JSON.stringify(this.passwordData),

View File

@@ -330,7 +330,7 @@
let name = document.querySelector("#name-input").value;
document.querySelector("#status").innerHTML = "";
let b = JSON.stringify({pin: pin, name: name});
fetch("/api/pin", {
fetch("./api/pin", {
credentials: 'include',
method: "POST",
body: b
@@ -355,7 +355,7 @@
requestOTP() {
if (this.editingHost) return;
fetch(`/api/otp?passphrase=${this.passphrase}${this.deviceName && `&deviceName=${this.deviceName}` || ''}`, {
fetch(`./api/otp?passphrase=${this.passphrase}${this.deviceName && `&deviceName=${this.deviceName}` || ''}`, {
credentials: 'include'
})
.then(resp => resp.json())
@@ -434,7 +434,7 @@
name: client.editName,
perm: client.editPerm & permissionMapping._all
}
fetch("/api/clients/update", {
fetch("./api/clients/update", {
credentials: 'include',
method: "POST",
body: JSON.stringify(editedClient)
@@ -470,7 +470,7 @@
client.editPerm ^= permissionMapping[permission];
},
disconnectClient(uuid) {
fetch("/api/clients/disconnect", {
fetch("./api/clients/disconnect", {
credentials: 'include',
method: "POST",
body: JSON.stringify({ uuid })
@@ -482,7 +482,7 @@
},
unpairAll() {
this.unpairAllPressed = true;
fetch("/api/clients/unpair-all", {
fetch("./api/clients/unpair-all", {
credentials: 'include',
method: "POST"
})
@@ -497,7 +497,7 @@
});
},
unpairSingle(uuid) {
fetch("/api/clients/unpair", {
fetch("./api/clients/unpair", {
credentials: 'include',
method: "POST",
body: JSON.stringify({ uuid })
@@ -510,7 +510,7 @@
if (currentEditingClient) {
this.cancelEdit(currentEditingClient);
}
fetch("/api/clients/list", { credentials: 'include' })
fetch("./api/clients/list", { credentials: 'include' })
.then((response) => response.json())
.then((response) => {
const clientList = document.querySelector("#client-list");

View File

@@ -26,7 +26,7 @@
"apps": {
"actions": "Actions",
"add_cmds": "Ajouter des commandes",
"add_new": "Ajouter une autre",
"add_new": "Ajouter une application",
"app_name": "Nom de l'application",
"app_name_desc": "Nom de l'application, affiché dans Moonlight",
"applications_desc": "Les applications ne sont actualisées qu'au redémarrage du client",

View File

@@ -3,7 +3,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Apollo</title>
<link rel="icon" type="image/x-icon" href="/images/apollo.ico">
<link rel="icon" type="image/x-icon" href="./images/apollo.ico">
<link href="@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet">
<link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="/assets/css/apollo.css" rel="stylesheet" />
<link href="./assets/css/apollo.css" rel="stylesheet" />

View File

@@ -154,7 +154,7 @@
},
methods: {
refreshLogs() {
fetch("/api/logs", { credentials: 'include' })
fetch("./api/logs", { credentials: 'include' })
.then((r) => r.text())
.then((r) => {
this.logs = r;
@@ -162,7 +162,7 @@
},
closeApp() {
this.closeAppPressed = true;
fetch("/api/apps/close", {
fetch("./api/apps/close", {
credentials: 'include',
method: "POST"
})
@@ -183,7 +183,7 @@
setTimeout(() => {
this.serverRestarting = false;
}, 5000);
fetch("/api/restart", {
fetch("./api/restart", {
credentials: 'include',
method: "POST",
})
@@ -207,7 +207,7 @@
quit() {
if (window.confirm(this.i18n.t('troubleshooting.quit_apollo_confirm'))) {
this.serverQuitting = true;
fetch("/api/quit", {
fetch("./api/quit", {
credentials: 'include',
method: "POST",
})

View File

@@ -11,7 +11,7 @@
<div class="card p-2">
<header>
<h1 class="mb-0">
<img src="/images/logo-apollo-45.png" height="45" alt="">
<img src="./images/logo-apollo-45.png" height="45" alt="">
{{ $t('welcome.greeting') }}
</h1>
</header>
@@ -80,7 +80,7 @@
};
this.error = null;
this.loading = true;
fetch("/api/password", {
fetch("./api/password", {
method: "POST",
body: JSON.stringify(this.passwordData),
}).then((r) => {