feat: add software licenses
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
onboarding: "onboarding/OnboardingSidebar",
|
||||
"onboarding-vehicles": "onboarding/OnboardingVehiclesSidebar",
|
||||
"nearby-poi": "NearbyPOISidebar",
|
||||
licenses: "settings/LicensesSidebar",
|
||||
};
|
||||
|
||||
const fullscreen: Record<string, boolean> = {
|
||||
@@ -57,6 +58,7 @@
|
||||
onboarding: true,
|
||||
"onboarding-vehicles": true,
|
||||
"nearby-poi": false,
|
||||
licenses: true,
|
||||
};
|
||||
|
||||
let isDragging = false;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<script>
|
||||
import { m } from "$lang/messages";
|
||||
import { ScaleIcon } from "@lucide/svelte";
|
||||
import SidebarHeader from "../SidebarHeader.svelte";
|
||||
import { getDeveloperToggle } from "./developer.svelte";
|
||||
import SettingsButton from "./SettingsButton.svelte";
|
||||
|
||||
let count = 5;
|
||||
const dev = getDeveloperToggle();
|
||||
@@ -33,3 +35,9 @@
|
||||
<li>Photon</li>
|
||||
<li>Overpass</li>
|
||||
</ul>
|
||||
|
||||
<SettingsButton
|
||||
icon={ScaleIcon}
|
||||
text={m["sidebar.about.licenses"]()}
|
||||
view="licenses"
|
||||
/>
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from "svelte";
|
||||
import SidebarHeader from "../SidebarHeader.svelte";
|
||||
import { m } from "$lang/messages";
|
||||
|
||||
let licenses: License[] = $state([]);
|
||||
let loading = $state(true);
|
||||
|
||||
interface License {
|
||||
name: string;
|
||||
licenseType: string;
|
||||
link: string;
|
||||
installedFrom?: string;
|
||||
remoteVersion: string;
|
||||
installedVersion: string;
|
||||
definedVersion: string;
|
||||
latestRemoteVersion?: string;
|
||||
latestRemoteModified?: string;
|
||||
author: string;
|
||||
}
|
||||
|
||||
onMount(async () => {
|
||||
const res = await fetch("/licenses.json");
|
||||
licenses = await res.json();
|
||||
loading = false;
|
||||
});
|
||||
</script>
|
||||
|
||||
<SidebarHeader>{m["sidebar.about.licenses"]()}</SidebarHeader>
|
||||
|
||||
{#if loading}
|
||||
<p>Loading...</p>
|
||||
{:else if licenses.length == 0}
|
||||
<p>No licenses found.</p>
|
||||
{:else}
|
||||
<ul
|
||||
style="display: flex; flex-direction: column; gap: 1em; padding: 0; list-style: none;"
|
||||
>
|
||||
{#each licenses as license (license.name)}
|
||||
<li>
|
||||
<strong>{license.name}</strong> - {license.installedVersion}
|
||||
<p
|
||||
style="white-space: pre-wrap; background: #0e0e0e; padding: 1em; border-radius: 0.5em; overflow-x: scroll;"
|
||||
>
|
||||
{#await fetch("/licenses/" + license.name + ".LICENSE.txt").then( (res) => res.text(), ) then text}
|
||||
{text.startsWith("<!doctype html>") ? license.licenseType : text}
|
||||
{:catch _error}
|
||||
{license.licenseType}
|
||||
{/await}
|
||||
</p>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{/if}
|
||||
Reference in New Issue
Block a user