From b76ce678dfd516ae2a5ab200aca394c664ad63d8 Mon Sep 17 00:00:00 2001
From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com>
Date: Tue, 6 May 2025 01:03:40 +0200
Subject: [PATCH] feat: show errors in search when no results found feat: file
picker for subtitles in options feat: drag/drop/paste subtitle files/text
fix: hide video on seek fix: profile icon not centered
---
package.json | 3 +-
pnpm-lock.yaml | 8 -
src/app.d.ts | 1 -
src/lib/components/SearchModal.svelte | 19 +-
src/lib/components/ui/player/options.svelte | 3 +
src/lib/components/ui/player/player.svelte | 8 +-
src/lib/components/ui/player/resolver.ts | 19 +-
src/lib/components/ui/player/subtitles.ts | 232 ++++++++++--------
.../components/ui/sidebar/sidebarlist.svelte | 2 +-
src/lib/modules/anilist/graphql-turbo.d.ts | 6 +-
src/lib/modules/anilist/queries.ts | 3 +-
src/lib/modules/extensions/extensions.ts | 2 +-
src/lib/utils.ts | 9 +
src/types/events.d.ts | 53 ++++
tsconfig.json | 5 +-
15 files changed, 235 insertions(+), 138 deletions(-)
create mode 100644 src/types/events.d.ts
diff --git a/package.json b/package.json
index 0fc64b5..e520b52 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ui",
- "version": "6.1.16",
+ "version": "6.1.17",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@9.14.4",
@@ -23,7 +23,6 @@
"@sveltejs/kit": "^2.8.1",
"@sveltejs/vite-plugin-svelte": "^3.1.2",
"@types/debug": "^4.1.12",
- "@types/events": "^3.0.3",
"@types/semver": "^7.7.0",
"@urql/introspection": "^1.1.0",
"autoprefixer": "^10.4.20",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3820d0a..b7930b1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -132,9 +132,6 @@ importers:
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
- '@types/events':
- specifier: ^3.0.3
- version: 3.0.3
'@types/semver':
specifier: ^7.7.0
version: 7.7.0
@@ -664,9 +661,6 @@ packages:
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
- '@types/events@3.0.3':
- resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==}
-
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -3023,8 +3017,6 @@ snapshots:
'@types/estree@1.0.6': {}
- '@types/events@3.0.3': {}
-
'@types/json-schema@7.0.15': {}
'@types/json5@0.0.29': {}
diff --git a/src/app.d.ts b/src/app.d.ts
index 9d4fe93..f5db1fd 100644
--- a/src/app.d.ts
+++ b/src/app.d.ts
@@ -139,7 +139,6 @@ declare global {
declare module '*.svelte' {
export default SvelteComponentTyped
}
-
}
declare module '*.svelte' {
diff --git a/src/lib/components/SearchModal.svelte b/src/lib/components/SearchModal.svelte
index ea2bb75..312ee14 100644
--- a/src/lib/components/SearchModal.svelte
+++ b/src/lib/components/SearchModal.svelte
@@ -36,16 +36,16 @@
function sanitiseTerms ({ video_term: video, audio_term: audio, video_resolution: resolution, source }: AnitomyResult) {
const terms = [...new Set([...video ?? [], ...audio ?? [], ...source ?? []].map(term => termMapping[term.toUpperCase() ?? '']).filter(t => t))] as Array<{text: string, color: string}>
- if (resolution?.length) terms.unshift({ text: resolution[0]!, color: '#c6ec58' })
+ if (resolution.length) terms.unshift({ text: resolution[0]!, color: '#c6ec58' })
return terms
}
function simplifyFilename ({ video_term: video, audio_term: audio, video_resolution: resolution, file_name: name, release_group: group, file_checksum: checksum }: AnitomyResult) {
let simpleName = name[0]!
- if (group?.length) simpleName = simpleName.replace(group[0]!, '')
- if (resolution?.length) simpleName = simpleName.replace(resolution[0]!, '')
- if (checksum?.length) simpleName = simpleName.replace(checksum[0]!, '')
+ if (group.length) simpleName = simpleName.replace(group[0]!, '')
+ if (resolution.length) simpleName = simpleName.replace(resolution[0]!, '')
+ if (checksum.length) simpleName = simpleName.replace(checksum[0]!, '')
for (const term of video ?? []) simpleName = simpleName.replace(term[0]!, '')
for (const term of audio ?? []) simpleName = simpleName.replace(term[0]!, '')
return simpleName.replace(/[[{(]\s*[\]})]/g, '').replace(/\s+/g, ' ').trim()
@@ -260,6 +260,17 @@
+ {:else}
+
+
+
+ Ooops!
+
+
+ No results found.
Try specifying a torrent manually by pasting a magnet link or torrent file into the filter bar.
+
+
+
{/each}
{#each errors as error, i (i)}
diff --git a/src/lib/components/ui/player/options.svelte b/src/lib/components/ui/player/options.svelte
index 7bf2fbc..3442912 100644
--- a/src/lib/components/ui/player/options.svelte
+++ b/src/lib/components/ui/player/options.svelte
@@ -144,6 +144,9 @@
{/each}
+
{ subtitles.pickFile(); open = false }}>
+ Add Subtitle File
+
{/if}
diff --git a/src/lib/components/ui/player/player.svelte b/src/lib/components/ui/player/player.svelte
index cf47ac7..4aaf762 100644
--- a/src/lib/components/ui/player/player.svelte
+++ b/src/lib/components/ui/player/player.svelte
@@ -615,8 +615,8 @@
-
-