zero-knowledge file sharing
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

simplify routing

Juliet 9bebc727 0980e4c9

+9 -16
-3
web/bun.lock
··· 5 5 "": { 6 6 "name": "drop-web", 7 7 "dependencies": { 8 - "@solidjs/router": "^0.15.3", 9 8 "solid-js": "^1.9.5", 10 9 }, 11 10 "devDependencies": { ··· 165 164 "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA=="], 166 165 167 166 "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.59.0", "", { "os": "win32", "cpu": "x64" }, "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA=="], 168 - 169 - "@solidjs/router": ["@solidjs/router@0.15.4", "", { "peerDependencies": { "solid-js": "^1.8.6" } }, "sha512-WOpgg9a9T638cR+5FGbFi/IV4l2FpmBs1GpIMSPa0Ce9vyJN7Wts+X2PqMf9IYn0zUj2MlSJtm1gp7/HI/n5TQ=="], 170 167 171 168 "@tailwindcss/node": ["@tailwindcss/node@4.2.1", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.1" } }, "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg=="], 172 169
-1
web/package.json
··· 7 7 "build": "vite build" 8 8 }, 9 9 "dependencies": { 10 - "@solidjs/router": "^0.15.3", 11 10 "solid-js": "^1.9.5" 12 11 }, 13 12 "devDependencies": {
+4 -7
web/src/index.tsx
··· 1 - import { Router, Route } from "@solidjs/router"; 2 1 import { render } from "solid-js/web"; 3 2 4 3 import App from "./App"; ··· 7 6 8 7 import "./styles.css"; 9 8 9 + const Page = () => 10 + location.pathname === "/" ? <Upload /> : <View />; 11 + 10 12 render( 11 - () => ( 12 - <Router root={App}> 13 - <Route path="/" component={Upload} /> 14 - <Route path="/p/:id" component={View} /> 15 - </Router> 16 - ), 13 + () => <App><Page /></App>, 17 14 document.getElementById("root")!, 18 15 );
+1 -1
web/src/pages/Upload.tsx
··· 224 224 xhr.send(formData); 225 225 }); 226 226 227 - const url = `${location.origin}/p/${res.id}#${encoded}`; 227 + const url = `${location.origin}/${res.id}#${encoded}`; 228 228 setResultUrl(url); 229 229 removeFile(); 230 230 } catch (e: any) {
+4 -4
web/src/pages/View.tsx
··· 1 - import { useParams } from "@solidjs/router"; 2 1 import { createSignal, Show, onMount, onCleanup } from "solid-js"; 3 2 4 3 import { importKey } from "../lib/crypto"; ··· 23 22 type ContentType = "text" | "image" | "video" | "audio" | "binary"; 24 23 25 24 export default function View() { 26 - const params = useParams(); 25 + const parts = location.pathname.split("/").filter(Boolean); 26 + const id = parts[0] === "p" ? parts[1] : parts[0]; 27 27 28 28 const [stage, setStage] = createSignal<Stage>("loading"); 29 29 const [error, setError] = createSignal(""); ··· 52 52 onCleanup(() => worker.terminate()); 53 53 54 54 onMount(async () => { 55 - const id = params.id; 55 + 56 56 const keyEncoded = window.location.hash.slice(1); 57 57 58 58 if (!id || !keyEncoded) { ··· 95 95 96 96 try { 97 97 const xhr = new XMLHttpRequest(); 98 - xhr.open("GET", `/api/file/${params.id}`); 98 + xhr.open("GET", `/api/file/${id}`); 99 99 xhr.responseType = "arraybuffer"; 100 100 101 101 const buf = await new Promise<ArrayBuffer>((resolve, reject) => {