From 8f32fd58cafe677c07d9ed9fff84f6e255156d37 Mon Sep 17 00:00:00 2001 From: darkuss Date: Sat, 22 Aug 2026 01:58:37 +0200 Subject: holy shit i'm finally done --- src/apps/audio.tsx | 27 ++++++++++++++++++++++ src/apps/browser.tsx | 23 +++++++++++++++++++ src/apps/edit_rich.tsx | 28 +++++++++++++++++++++++ src/apps/image.tsx | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/apps/index.ts | 34 ++++++++++++++++++++++++++++ src/apps/music.tsx | 32 ++++++++++++++++++++++++++ src/apps/source.ts | 33 +++++++++++++++++++++++++++ src/apps/video.tsx | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 299 insertions(+) create mode 100644 src/apps/audio.tsx create mode 100644 src/apps/browser.tsx create mode 100644 src/apps/edit_rich.tsx create mode 100644 src/apps/image.tsx create mode 100644 src/apps/index.ts create mode 100644 src/apps/music.tsx create mode 100644 src/apps/source.ts create mode 100644 src/apps/video.tsx (limited to 'src/apps') diff --git a/src/apps/audio.tsx b/src/apps/audio.tsx new file mode 100644 index 0000000..45d8716 --- /dev/null +++ b/src/apps/audio.tsx @@ -0,0 +1,27 @@ +import { Signal, useSignalEffect } from "@preact/signals" +import { Address } from "$/apps/source"; +import { memo, Ref, useEffect } from "preact/compat"; + +const filenameRegex = /.*\/(.*)$/; + +export const Audio = memo(function Audio({ source, title, contentReady }: Image.Props) { + useEffect(() => { + contentReady.value = true + }, []) + + useSignalEffect(() => { + const filename = decodeURIComponent(source.value.link.pathname.match(filenameRegex)?.[1] ?? source.value.link.toString()); + title.value = `${filename} - tunez player`; + }) + + + return +}) + +namespace Image { + export type Props = { + source: Signal
, + title: Signal, + contentReady: Signal, + } +} diff --git a/src/apps/browser.tsx b/src/apps/browser.tsx new file mode 100644 index 0000000..71b2f4e --- /dev/null +++ b/src/apps/browser.tsx @@ -0,0 +1,23 @@ +import { Signal, useSignalEffect } from "@preact/signals" +import { Address } from "$/apps/source"; +import { memo, useEffect } from "preact/compat"; + +export const Browser = memo(function Browser({ source, title, contentReady }: Browser.Props) { + useEffect(() => { + contentReady.value = true + }, []) + + useSignalEffect(() => { + title.value = `${source.value.link} - internet exploder`; + }) + + return +}) + +export const Music = memo(function Music({ title }: Music.Props) { + const [userApproves, setUserApproves] = useState(false); + + useEffect(() => { + title.value = "Stream on BandCamp" + }, []) + + if (userApproves) { + return