From 6cb4d56e3db5c483d2d7730622ccd7f2009070f5 Mon Sep 17 00:00:00 2001 From: rrryfoo Date: Tue, 10 Mar 2026 01:59:47 +0800 Subject: [PATCH] Avoid repeated appearances of parse_date_string to reduce the amount of data downloaded --- favicon.ico | Bin 0 -> 4286 bytes package.json | 2 +- src/components/header.ts | 14 +++++++++ src/pages/posts.ts | 13 ++++++-- src/pages/register.ts | 18 +++++------ src/pages/upload.ts | 17 ++++++++--- src/pages/uploads.ts | 1 + src/strings.ts | 64 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 112 insertions(+), 17 deletions(-) create mode 100644 favicon.ico create mode 100644 src/components/header.ts create mode 100644 src/strings.ts diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9be32da69fa44680d59f2f35d79ed9d9d57314f3 GIT binary patch literal 4286 zcmcIoYfzL`7(QIou!}f0+4uu5;fz{p<7DDE4r+pO5wh$eh?hb%%pA2WFPTWfq@!6W zU}Z^`itTa<3rx|Cu?vV;Q;}&CG&ZG(T9T!r`}RC%_glW*b{DW(=i$8HIq&;C=RN2B z&UZ$o0`RX-AH~0FSEy3ADWwJg=u%?<_Uj+UBAOg1 z$AFVS6VMF&1+)NmK%Ah>K913czKmfkImnd{WC7H;51=Nsw*V)Ai-4Ka;Qp^$YEbJ3 zfZA~Y=k)EcQ(=laTav8z0Y2R??@kQMttd^)sH|?RD_Jb$B5F%l$mpOH6T{IS zi-*Re9{PLAb0h)W@zvL4#Ex&IZ$^QHJ-bbVHv2e6ANrd0$wf|b1NS<$TvKp9_d@## zpnbjRCnCp)UEj*h_b-*Zv1PwX$b(BnjZc-p zsJR-nL#8azWAtfb{|%iVo!ax!wzNwhwLR&uUBWZ1T3jkNl!-ze}&hZ%ANFx(03bajXOSoP!1UzC-%lC+Ng{`lo*9`QFoJA9*^c zPwfj{^$)wBf5!QveW}G0XG-D56v@oZmLZ!C%IynsBy`pq8S~LE!dfS2htA59p7URmJ2&o=RhzS<_>~md zx^|{K_Ds5T2iL&$Wv)Fk&4b!*>(BKZwzW!bocg>3On5>9P}`lNAD7_hRMh-z35uPk zb;j>M>(Zy)^Qlb|95>(L6O}5R5fg}5g?F^;Bg-|X-mBK!jrDJ>Kjad1;Jl1@?`s)d z(xBTx8}>@S)$hw4nHIV0)e0G9IUzBhU2@L_ak1zdU0g3iax0}j&cS{eyJf)I4`q0M zt&A?J*IZEt&bh}qYTxz#aemYbh@K<2OwW|Tn`|=i&_zi++FEN~axnJNRgd&x3}Xjx zwn?`cnVOT_9`SttTF)QkF|Pcy^j*1Ax=el=Yd>3h%w8uW3%-K}-hKDA^Yd)iF+I}O zX%2GrS-At;r_A{q=a1X@%X*?#!G%;N|CoaTV9K`qisvk{9P1A?##u&zi zEzOt6(vzCg!R@Mjy|$BWsEmJCpW*p)HJ^TZubwf zK5g=h+*K#H&fS1JPMud?`b6w>_|VsnHuGN#==%pRL9hwe{R_6SMyA#-v7cXdKleQS za1Lr8|F!CN|1#-w4!j$-o(G=%|NhzQ{nKL(WB;c)FfVfJ^`@rh&lp3?dw3;a2TXf# zT{bz$MNXgE##{^^w5$i-QyYQnodaXZq3_#h4VgAu`T{%~cu(cKS`WD0)9~zVUi4`I z@&Lw?qfI?u4vYnYfq?+eYJM-cm(76j{ib~!;23>)rZUDCt=E2=QbE5d)vZCPF0@zS gzYYj>oj)Vq2CfEhlKYZUy{{@2X; { + return ` + + ${notitle ? "" : `${process.env.servicename || "File Server"}${page_title ? ` | ${page_title}` : ""}`} + ${/**/""} + ${add ? add : ""} + + ` +} + +export default header_string; \ No newline at end of file diff --git a/src/pages/posts.ts b/src/pages/posts.ts index 0b8bd22..aadc440 100644 --- a/src/pages/posts.ts +++ b/src/pages/posts.ts @@ -162,13 +162,22 @@ async function posts_string(user?: UserSession): Promise { out += `
${title} ${p.visibility == "public" ? "" : `(${p.visibility})`}
- by ${await getUsernameById(p.user_id)} ()

+ by ${await getUsernameById(p.user_id)} ()

${content}
` }; - resolve(out || "No posts yet."); + resolve(out + ` + + ` || "No posts yet."); }); }); } diff --git a/src/pages/register.ts b/src/pages/register.ts index 37bf30c..3990102 100644 --- a/src/pages/register.ts +++ b/src/pages/register.ts @@ -78,20 +78,20 @@ export async function Main(app: Express) { db.run( `INSERT INTO users (username, password_hash) VALUES (?, ?)`, [username, passwordHash], - (err: any) => { - var isnameerror = false; + function (err: any) { if (err) { if (err.message.includes("UNIQUE")) { - isnameerror = true; + return res.send(register_string(`The username ${username} is already taken!`)) } } - if (!isnameerror) - c.log(`User registered: ${username}`); - if (isnameerror) - res.send(register_string(`The username ${username} is already taken!`)) - else - res.redirect(req.query?.next?.toString() ?? "/"); + req.session.user = { + id: this.lastID, + username: username + } + + c.log(`User registered: ${username}`); + res.redirect(req.query?.next?.toString() ?? "/"); } ); } catch (err) { diff --git a/src/pages/upload.ts b/src/pages/upload.ts index d93f3a4..b217dfb 100644 --- a/src/pages/upload.ts +++ b/src/pages/upload.ts @@ -72,11 +72,7 @@ async function files_string(user: UserSession): Promise { out += `
${filect}) ${f.original_name} - uploaded on - - + |
@@ -84,6 +80,17 @@ async function files_string(user: UserSession): Promise { filect++; }); + out += ` + + ` + resolve(out); } ); diff --git a/src/pages/uploads.ts b/src/pages/uploads.ts index 9001984..2cf357b 100644 --- a/src/pages/uploads.ts +++ b/src/pages/uploads.ts @@ -31,6 +31,7 @@ function getUploadByFilename(filename: string): Promise { }) } catch (err) { // if the cb fails somehow + // its not actually somehow it IS possible, like when a user is deleted from the users table or when a file is manually placed in the /uploads directory return null } } diff --git a/src/strings.ts b/src/strings.ts new file mode 100644 index 0000000..17dce8a --- /dev/null +++ b/src/strings.ts @@ -0,0 +1,64 @@ +const p_404 = { + page: "The file you were looking for does not exist on the server." +} + +const p_login = { + title: "Log in", + login: "Log in", + missing_credentials: "Missing username or password!", + wrong_credentials: "Invalid username or password." +} + +const p_posts = { + title: "Posts", + by_user: "by", + new: { + post_title: "Post title:", + post_content: "Post content:", + new_post: "New Post", + visibility: "Visibility:", + public: "Public", + unlisted: "Unlisted", + private: "Private", + font: "Font:", + login: "You must be logged in to create a post.", + + content_placeholder: "...", + post: "Post" + }, + + not_found: "Post not found.", + no_visible: "No posts yet.", + login: `Log in to create posts.`, + delete_post: "Delete Post" +} + +const p_register = { + title: "Registration", + register: "Register", + + name_taken: "The username $(var) is already taken!", + register_disabled: "$(var) does not support account registration." +} + +const p_root = { + existing_session: "Logged in as $(var).", + logout_confirm: "Are you sure you want to log out of $(var)?" +} + +const loc = { + username: "Username", + password: "Password", + + default_title: "File Server", + default_description: "A simple file server built with Express.", + unknown_user: "Unknown", + log_in: "Login", + log_out: "Log out", + register: "Register", + back: "Back", + + p_404, p_login, p_posts, p_register, p_root +} + +export default loc \ No newline at end of file