From e7ffebbb30d312422808bcf1d9739ecdc23eea95 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Sun, 26 Apr 2026 21:56:21 +0200 Subject: [PATCH] Add upload indicator to UI --- .../src/lib/components/AnalysisView.svelte | 31 ++++++++++++++----- daemon/web/src/lib/manifest.svelte.ts | 5 +++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/daemon/web/src/lib/components/AnalysisView.svelte b/daemon/web/src/lib/components/AnalysisView.svelte index 3ffd8bc..bc6d1bb 100644 --- a/daemon/web/src/lib/components/AnalysisView.svelte +++ b/daemon/web/src/lib/components/AnalysisView.svelte @@ -13,6 +13,11 @@ manager: AnalysisManager; current: boolean; } = $props(); + + const date_formatter = new Intl.DateTimeFormat(undefined, { + timeStyle: 'long', + dateStyle: 'short', + });
@@ -49,20 +54,30 @@ {:else}

No warnings to display!

{/if} - {#if metadata !== undefined && metadata.rayhunter !== undefined} -
-

Metadata

-

Analysis by Rayhunter version {metadata.rayhunter.rayhunter_version}

+
+

Metadata

+ {#if metadata !== undefined && metadata.rayhunter !== undefined} +

Rayhunter version: {metadata.rayhunter.rayhunter_version}

Device system OS: {metadata.rayhunter.system_os}

-
+ {:else} +

N/A (analysis generated by an older version of rayhunter)

+ {/if} + {#if entry.upload_time} +

+ WebDAV uploaded at: + {date_formatter.format(entry.upload_time)} +

+ {/if} +
+ {#if metadata && metadata.analyzers}
-

Analyzers

+

Enabled Analyzers

{#each metadata.analyzers as analyzer}

{analyzer.name}: {analyzer.description}

{/each}
- {:else} -

N/A (analysis generated by an older version of rayhunter)

{/if}
{/if} diff --git a/daemon/web/src/lib/manifest.svelte.ts b/daemon/web/src/lib/manifest.svelte.ts index ec5d1cb..fdb1b32 100644 --- a/daemon/web/src/lib/manifest.svelte.ts +++ b/daemon/web/src/lib/manifest.svelte.ts @@ -12,6 +12,7 @@ interface JsonManifestEntry { last_message_time: string; qmdl_size_bytes: number; stop_reason: string | null; + upload_time: string | null; } export class Manifest { @@ -59,6 +60,7 @@ export class ManifestEntry { public analysis_status: AnalysisStatus | undefined = $state(undefined); public analysis_report: AnalysisReport | string | undefined = $state(undefined); public stop_reason: string | undefined = $state(undefined); + public upload_time: Date | undefined = $state(undefined); constructor(json: JsonManifestEntry) { this.name = json.name; @@ -70,6 +72,9 @@ export class ManifestEntry { if (json.stop_reason) { this.stop_reason = json.stop_reason; } + if (json.upload_time) { + this.upload_time = new Date(json.upload_time); + } } get_readable_qmdl_size(): string {