From d173e6ea73b01ab204e44c47a6f4e4f9dccb06c2 Mon Sep 17 00:00:00 2001 From: roxwize Date: Thu, 26 Dec 2024 16:24:04 -0500 Subject: [PATCH] :( Signed-off-by: roxwize --- .TODO | 4 - TODO.md | 8 + db/schema.ts | 1 + drizzle/0001_messy_fallen_one.sql | 1 + drizzle/0002_special_ben_parker.sql | 1 + drizzle/meta/0001_snapshot.json | 415 +++++++++++++++++++++++++++ drizzle/meta/0002_snapshot.json | 415 +++++++++++++++++++++++++++ drizzle/meta/_journal.json | 14 + main.ts | 5 +- routes/admin.ts | 2 +- routes/login.ts | 36 +-- routes/updates.ts | 424 +++++++++++++++------------- routes/users.ts | 350 +++++++++++++---------- routes/util.ts | 165 ++++++----- static/css/main.css | 3 + static/img/bg.png | Bin 0 -> 132105 bytes views/404.pug | 5 + views/_feed.pug | 2 +- views/journal.pug | 3 + views/journal_view.pug | 11 +- views/site.pug | 2 +- views/user.pug | 38 ++- 22 files changed, 1433 insertions(+), 472 deletions(-) delete mode 100644 .TODO create mode 100644 TODO.md create mode 100644 drizzle/0001_messy_fallen_one.sql create mode 100644 drizzle/0002_special_ben_parker.sql create mode 100644 drizzle/meta/0001_snapshot.json create mode 100644 drizzle/meta/0002_snapshot.json create mode 100644 static/img/bg.png create mode 100644 views/404.pug diff --git a/.TODO b/.TODO deleted file mode 100644 index e2ff786..0000000 --- a/.TODO +++ /dev/null @@ -1,4 +0,0 @@ -[ ] An audit log -[ ] Invite code pruning -[ ] Make the journal work (i dont really remember what was left out though) -[ ] Write a 404 page diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..8416870 --- /dev/null +++ b/TODO.md @@ -0,0 +1,8 @@ +- [ ] An audit log +- [ ] Invite code pruning +- [ ] Make the journal work (i dont really remember what was left out though) +- [x] Write a 404 page +- [ ] Make better login pages +- [ ] You do realize using toLocaleString on the server only makes it use your locale right +- [ ] Make recent updates also account for new journal entries +- [ ] View all previous moods and journal entries diff --git a/db/schema.ts b/db/schema.ts index 5cfb5b5..ad9ef68 100644 --- a/db/schema.ts +++ b/db/schema.ts @@ -32,6 +32,7 @@ export const journalEntries = pgTable("journal_entries", { .references(() => users.id, { onDelete: "cascade" }) .notNull(), moodChange: integer("mood-change").default(0).notNull(), + title: varchar({ length: 64 }).default("").notNull(), entry: varchar({ length: 4096 }).default("").notNull(), visibility: integer().default(1).notNull(), date: timestamp().notNull() diff --git a/drizzle/0001_messy_fallen_one.sql b/drizzle/0001_messy_fallen_one.sql new file mode 100644 index 0000000..51f99ea --- /dev/null +++ b/drizzle/0001_messy_fallen_one.sql @@ -0,0 +1 @@ +ALTER TABLE "journal_entries" ADD COLUMN "title" varchar(128) DEFAULT '' NOT NULL; \ No newline at end of file diff --git a/drizzle/0002_special_ben_parker.sql b/drizzle/0002_special_ben_parker.sql new file mode 100644 index 0000000..ee22776 --- /dev/null +++ b/drizzle/0002_special_ben_parker.sql @@ -0,0 +1 @@ +ALTER TABLE "journal_entries" ALTER COLUMN "title" SET DATA TYPE varchar(64); \ No newline at end of file diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..e4d9fb8 --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,415 @@ +{ + "id": "a5d70822-0a93-4193-9115-c41b2ee9f5d8", + "prevId": "05baee8f-73c9-4001-b69d-ba7c46dadf5c", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.follows": { + "name": "follows", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "follower_id": { + "name": "follower_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "follows_user_id_users_id_fk": { + "name": "follows_user_id_users_id_fk", + "tableFrom": "follows", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "follows_follower_id_users_id_fk": { + "name": "follows_follower_id_users_id_fk", + "tableFrom": "follows", + "tableTo": "users", + "columnsFrom": [ + "follower_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "follows_user_id_follower_id_pk": { + "name": "follows_user_id_follower_id_pk", + "columns": [ + "user_id", + "follower_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.invite_codes": { + "name": "invite_codes", + "schema": "", + "columns": { + "token": { + "name": "token", + "type": "varchar(22)", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "granted": { + "name": "granted", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "'1970-01-01 00:00:00.000'" + }, + "confers": { + "name": "confers", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "invite_codes_user_id_users_id_fk": { + "name": "invite_codes_user_id_users_id_fk", + "tableFrom": "invite_codes", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.journal_entries": { + "name": "journal_entries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "journal_entries_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mood-change": { + "name": "mood-change", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "title": { + "name": "title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "entry": { + "name": "entry", + "type": "varchar(4096)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "visibility": { + "name": "visibility", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "date": { + "name": "date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "journal_entries_user_users_id_fk": { + "name": "journal_entries_user_users_id_fk", + "tableFrom": "journal_entries", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.profiles": { + "name": "profiles", + "schema": "", + "columns": { + "user": { + "name": "user", + "type": "integer", + "primaryKey": true, + "notNull": true + }, + "bio": { + "name": "bio", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "website": { + "name": "website", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": { + "profiles_user_users_id_fk": { + "name": "profiles_user_users_id_fk", + "tableFrom": "profiles", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.updates": { + "name": "updates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "updates_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mood": { + "name": "mood", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "description": { + "name": "description", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "date": { + "name": "date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "updates_user_users_id_fk": { + "name": "updates_user_users_id_fk", + "tableFrom": "updates", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "users_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(26)", + "primaryKey": false, + "notNull": true + }, + "pass": { + "name": "pass", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "registered": { + "name": "registered", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + }, + "users_name_unique": { + "name": "users_name_unique", + "nullsNotDistinct": false, + "columns": [ + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0002_snapshot.json b/drizzle/meta/0002_snapshot.json new file mode 100644 index 0000000..b98b82e --- /dev/null +++ b/drizzle/meta/0002_snapshot.json @@ -0,0 +1,415 @@ +{ + "id": "f8e1fcdc-dfa2-41cd-886a-5f29a1c091df", + "prevId": "a5d70822-0a93-4193-9115-c41b2ee9f5d8", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.follows": { + "name": "follows", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "follower_id": { + "name": "follower_id", + "type": "integer", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "follows_user_id_users_id_fk": { + "name": "follows_user_id_users_id_fk", + "tableFrom": "follows", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "follows_follower_id_users_id_fk": { + "name": "follows_follower_id_users_id_fk", + "tableFrom": "follows", + "tableTo": "users", + "columnsFrom": [ + "follower_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "follows_user_id_follower_id_pk": { + "name": "follows_user_id_follower_id_pk", + "columns": [ + "user_id", + "follower_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.invite_codes": { + "name": "invite_codes", + "schema": "", + "columns": { + "token": { + "name": "token", + "type": "varchar(22)", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "granted": { + "name": "granted", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "'1970-01-01 00:00:00.000'" + }, + "confers": { + "name": "confers", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": { + "invite_codes_user_id_users_id_fk": { + "name": "invite_codes_user_id_users_id_fk", + "tableFrom": "invite_codes", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.journal_entries": { + "name": "journal_entries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "journal_entries_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mood-change": { + "name": "mood-change", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "title": { + "name": "title", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "entry": { + "name": "entry", + "type": "varchar(4096)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "visibility": { + "name": "visibility", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "date": { + "name": "date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "journal_entries_user_users_id_fk": { + "name": "journal_entries_user_users_id_fk", + "tableFrom": "journal_entries", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.profiles": { + "name": "profiles", + "schema": "", + "columns": { + "user": { + "name": "user", + "type": "integer", + "primaryKey": true, + "notNull": true + }, + "bio": { + "name": "bio", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "website": { + "name": "website", + "type": "varchar", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": { + "profiles_user_users_id_fk": { + "name": "profiles_user_users_id_fk", + "tableFrom": "profiles", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.updates": { + "name": "updates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "updates_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "user": { + "name": "user", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "mood": { + "name": "mood", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "description": { + "name": "description", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "date": { + "name": "date", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "updates_user_users_id_fk": { + "name": "updates_user_users_id_fk", + "tableFrom": "updates", + "tableTo": "users", + "columnsFrom": [ + "user" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "identity": { + "type": "always", + "name": "users_id_seq", + "schema": "public", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": "1", + "cycle": false + } + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(26)", + "primaryKey": false, + "notNull": true + }, + "pass": { + "name": "pass", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "registered": { + "name": "registered", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + }, + "users_name_unique": { + "name": "users_name_unique", + "nullsNotDistinct": false, + "columns": [ + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index c4adb34..a018abb 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -8,6 +8,20 @@ "when": 1733952034836, "tag": "0000_hard_leader", "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1735184859424, + "tag": "0001_messy_fallen_one", + "breakpoints": true + }, + { + "idx": 2, + "version": "7", + "when": 1735185254730, + "tag": "0002_special_ben_parker", + "breakpoints": true } ] } \ No newline at end of file diff --git a/main.ts b/main.ts index 949c21a..4447de6 100644 --- a/main.ts +++ b/main.ts @@ -91,12 +91,13 @@ object-src 'none'; base-uri 'none';" return { user: e.user, mood: moods[e.mood], - date: date.to(dayjs(e.date)), + date: e.date, + relativeDate: date.to(dayjs(e.date)), desc: e.desc }; }); - render(db, "index", "Home", res, req, { + render(db, "index", "home", res, req, { users: (await db.select().from(users)).length, recentUpdates, feedUpdates diff --git a/routes/admin.ts b/routes/admin.ts index b1d9f79..5b169e3 100644 --- a/routes/admin.ts +++ b/routes/admin.ts @@ -36,7 +36,7 @@ export default function (app: Express, db: NodePgDatabase) { expiresString: now.to(dayjs(e.expires)) }; }); - render(db, "admin", "Admin Panel", res, req, { codes }); + render(db, "admin", "admin panel", res, req, { codes }); }); app.post("/codes/delete", async (req, res) => { diff --git a/routes/login.ts b/routes/login.ts index 0130c24..22a98e7 100644 --- a/routes/login.ts +++ b/routes/login.ts @@ -13,7 +13,7 @@ export default function(app: Express, db: NodePgDatabase) { res.redirect("/"); return; } - render(db, "register", "Sign up", res, req); + render(db, "register", "sign up", res, req); }); app.post("/register", async (req, res) => { if (req.session["loggedIn"]) { @@ -49,22 +49,6 @@ export default function(app: Express, db: NodePgDatabase) { res.redirect("/register"); return; } - - // invite code checking - const code = (await db.select({ expires: inviteCodes.expires, confers: inviteCodes.confers }).from(inviteCodes).where(eq(inviteCodes.token, req.body.referral)).limit(1))[0]; - if (!code) { - req.flash("error", "Invalid invite code! Make sure you pasted it in correctly WITH the hyphens."); - res.redirect("/register"); - return; - } - const expiration = code.expires.getTime(); - if (expiration > 0 && Date.now() >= expiration) { - req.flash("error", "That code is expired."); - res.redirect("/register"); - return; - } - // we're verified now so get that dumb fucker out of the database - await db.delete(inviteCodes).where(eq(inviteCodes.token, req.body.referral)); // field conflicts if ( @@ -84,6 +68,22 @@ export default function(app: Express, db: NodePgDatabase) { res.redirect("/register"); return; } + + // invite code checking + const code = (await db.select({ expires: inviteCodes.expires, confers: inviteCodes.confers }).from(inviteCodes).where(eq(inviteCodes.token, req.body.referral)).limit(1))[0]; + if (!code) { + req.flash("error", "Invalid invite code! Make sure you pasted it in correctly WITH the hyphens."); + res.redirect("/register"); + return; + } + const expiration = code.expires.getTime(); + if (expiration > 0 && Date.now() >= expiration) { + req.flash("error", "That code is expired."); + res.redirect("/register"); + return; + } + // we're verified now so get that dumb fucker out of the database + await db.delete(inviteCodes).where(eq(inviteCodes.token, req.body.referral)); const hash = await bcrypt.hash(req.body.pass, 10); const { uid } = ( @@ -117,7 +117,7 @@ export default function(app: Express, db: NodePgDatabase) { res.redirect("/"); return; } - render(db, "login", "Log in", res, req); + render(db, "login", "log in", res, req); }); app.post("/login", async (req, res) => { if (req.session["loggedIn"]) { diff --git a/routes/updates.ts b/routes/updates.ts index 5fadc6c..9334c9e 100644 --- a/routes/updates.ts +++ b/routes/updates.ts @@ -1,219 +1,239 @@ import { NodePgDatabase } from "drizzle-orm/node-postgres"; import { Express } from "express"; import { - follows, - inviteCodes, - journalEntries, - profiles, - updates, - users + follows, + inviteCodes, + journalEntries, + profiles, + updates, + users } from "../db/schema.js"; import { and, count, desc, eq, sql } from "drizzle-orm"; import dayjs from "dayjs"; -import { getMoods, render } from "./util.js"; +import { getMoods, render, render404 } from "./util.js"; export default async function (app: Express, db: NodePgDatabase) { - const { moods, moodsSorted } = await getMoods(); + const { moods, moodsSorted } = await getMoods(); - // DASHBOARD - app.get("/dashboard", async (req, res) => { - if (!req.session["loggedIn"]) { - res.redirect("/login"); - return; - } - const user = ( - await db - .select({ - name: users.name, - bio: profiles.bio, - website: profiles.website //! validate this - }) - .from(users) - .where(eq(users.name, req.session["user"])) - .leftJoin(profiles, eq(users.id, profiles.user)) - )[0]; - - const now = dayjs(); - const moodHistory = ( - await db - .select({ mood: updates.mood, date: updates.date }) - .from(updates) - .where(eq(updates.user, req.session["uid"])) - .orderBy(desc(updates.date)) - .limit(10) - ).map((e) => { - return { mood: moods[e.mood], date: now.to(dayjs(e.date)) }; - }); - - const recentUpdates = ( - await db - .select({ - user: users.name, - mood: updates.mood, - desc: updates.description, - date: updates.date - }) - .from(updates) - .innerJoin( - follows, - and( - eq(follows.userId, updates.user), - eq(follows.followerId, req.session["uid"]) - ) - ) - .leftJoin(users, eq(updates.user, users.id)) - .orderBy(desc(updates.date)) - .limit(25) - ).map((e) => { - return { - user: e.user, - mood: moods[e.mood], - desc: e.desc, - date: now.to(dayjs(e.date)) - }; - }); - - // user invite codes - const codes = (await db - .select({ token: inviteCodes.token, expires: inviteCodes.expires }) - .from(inviteCodes) - .where(eq(inviteCodes.user, req.session["uid"]))).map((e) => { - return { - token: e.token, - expires: now.to(dayjs(e.expires || 0)) + // DASHBOARD + app.get("/dashboard", async (req, res) => { + if (!req.session["loggedIn"]) { + res.redirect("/login"); + return; } - }); - const { codesUsed } = ( - await db - .select({ codesUsed: count() }) - .from(inviteCodes) - .where( - and( - eq(inviteCodes.user, req.session["uid"]), - eq( - sql`extract(month from granted)`, - sql`extract(month from current_date)` - ) - ) - ) - )[0]; + const user = ( + await db + .select({ + name: users.name, + bio: profiles.bio, + website: profiles.website //! validate this + }) + .from(users) + .where(eq(users.name, req.session["user"])) + .leftJoin(profiles, eq(users.id, profiles.user)) + )[0]; - render(db, "dashboard", "Dashboard", res, req, { - user, - moods, - moodsSorted, - moodHistory, - recentUpdates, - codes, - codesUsed, - feed: [] + const now = dayjs(); + const moodHistory = ( + await db + .select({ mood: updates.mood, date: updates.date }) + .from(updates) + .where(eq(updates.user, req.session["uid"])) + .orderBy(desc(updates.date)) + .limit(10) + ).map((e) => { + return { mood: moods[e.mood], date: now.to(dayjs(e.date)) }; + }); + + const recentUpdates = ( + await db + .select({ + user: users.name, + mood: updates.mood, + desc: updates.description, + date: updates.date + }) + .from(updates) + .innerJoin( + follows, + and( + eq(follows.userId, updates.user), + eq(follows.followerId, req.session["uid"]) + ) + ) + .leftJoin(users, eq(updates.user, users.id)) + .orderBy(desc(updates.date)) + .limit(25) + ).map((e) => { + return { + user: e.user, + mood: moods[e.mood], + desc: e.desc, + date: e.date, + relativeDate: now.to(dayjs(e.date)) + }; + }); + + // user invite codes + const codes = ( + await db + .select({ + token: inviteCodes.token, + expires: inviteCodes.expires + }) + .from(inviteCodes) + .where(eq(inviteCodes.user, req.session["uid"])) + ).map((e) => { + return { + token: e.token, + expires: now.to(dayjs(e.expires || 0)) + }; + }); + const { codesUsed } = ( + await db + .select({ codesUsed: count() }) + .from(inviteCodes) + .where( + and( + eq(inviteCodes.user, req.session["uid"]), + eq( + sql`extract(month from granted)`, + sql`extract(month from current_date)` + ) + ) + ) + )[0]; + + render(db, "dashboard", "dashboard", res, req, { + user, + moods, + moodsSorted, + moodHistory, + recentUpdates, + codes, + codesUsed, + feed: [] + }); }); - }); - app.post("/update/mood", async (req, res) => { - if (!req.session["loggedIn"]) { - res.redirect("/login"); - return; - } - const moodIndex = moods.indexOf(req.body.mood.trim()); - if (moodIndex === -1) { - req.flash( - "error", - "That mood doesn't exist in the database, WTF are you trying to do??" - ); - res.redirect("/dashboard"); - return; - } - if (req.body.desc.length > 512) { - req.flash( - "error", - "Mood description can't be longer than 512 characters" - ); - res.redirect("/dashboard"); - } + app.post("/update/mood", async (req, res) => { + if (!req.session["loggedIn"]) { + res.redirect("/login"); + return; + } + const moodIndex = moods.indexOf(req.body.mood.trim()); + if (moodIndex === -1) { + req.flash( + "error", + "That mood doesn't exist in the database, WTF are you trying to do??" + ); + res.redirect("/dashboard"); + return; + } + if (req.body.desc.length > 512) { + req.flash( + "error", + "Mood description can't be longer than 512 characters" + ); + res.redirect("/dashboard"); + } - await db - .insert(updates) - // @ts-expect-error - .values({ - user: req.session["uid"], - mood: moodIndex, - description: req.body.desc, - date: new Date(Date.now()) - }); - req.flash("success", "Mood updated!"); - res.redirect("/dashboard"); - }); + await db + .insert(updates) + // @ts-expect-error + .values({ + user: req.session["uid"], + mood: moodIndex, + description: req.body.desc, + date: new Date(Date.now()) + }); + req.flash("success", "Mood updated!"); + res.redirect("/dashboard"); + }); - // JOURNAL - app.get("/journal", async (req, res) => { - render(db, "journal", "Journal", res, req); - }); - app.get("/journal/:id", async (req, res) => { - const entry = ( - await db - .select({ - uname: users.name, - content: journalEntries.entry, - date: journalEntries.date - }) - .from(journalEntries) - .where(eq(journalEntries.id, parseInt(req.params.id))) - .leftJoin(users, eq(journalEntries.user, users.id)) - )[0]; - if (!entry) { - //! TODO write a 404 page - res.statusCode = 404; - res.write("404 not found?? :("); - return; - } - render(db, "journal_view", "Journal Entry", res, req, { entry }); - }); - app.post("/update/journal", async (req, res) => { - if (!req.session["loggedIn"]) { - res.redirect("/login"); - return; - } - if (req.body.description.length > 4096) { - req.flash("error", "Entry too long!"); - res.redirect("/journal"); - return; - } + // JOURNAL + app.get("/journal", async (req, res) => { + render(db, "journal", "your journal", res, req); + }); + app.get("/journal/:id", async (req, res) => { + const entry = ( + await db + .select({ + uname: users.name, + title: journalEntries.title, + content: journalEntries.entry, + date: journalEntries.date + }) + .from(journalEntries) + .where(eq(journalEntries.id, parseInt(req.params.id))) + .leftJoin(users, eq(journalEntries.user, users.id)) + )[0]; + if (!entry) { + render404(db, res, req); + return; + } - const moodChange = parseInt(req.body.moodDelta); - const visibility = parseInt(req.body.visibility); - if (isNaN(moodChange) || isNaN(visibility)) { - req.flash("error", "One of the values was improperly specified."); - res.redirect("/journal"); - return; - } + const entryTimestamp = dayjs(entry.date).fromNow(); + render(db, "journal_view", entry.title, res, req, { + entry, + entryTimestamp + }); + }); + app.post("/update/journal", async (req, res) => { + if (!req.session["loggedIn"]) { + res.redirect("/login"); + return; + } + if (req.body.title.length > 64) { + req.flash("error", "Title too long!"); + res.redirect("/journal"); + return; + } + if (req.body.description.length > 4096) { + req.flash("error", "Entry too long!"); + res.redirect("/journal"); + return; + } - let id: number; - try { - const entry = await db - .insert(journalEntries) - // @ts-expect-error - .values({ - user: req.session["uid"], - moodChange, - visibility, - entry: req.body.description, - date: new Date(Date.now()) - }) - .returning({ id: journalEntries.id }); - id = entry[0].id; - } catch (err) { - req.flash( - "error", - "Failed to create your entry. Try again later or send these logs to roxwize so she can know what's up:

" + - err - ); - res.redirect("/journal"); - return; - } - req.flash( - "success", - `Your journal entry is now available as #${id}!` - ); - res.redirect("/journal"); - }); + const moodChange = parseInt(req.body.moodDelta); + const visibility = parseInt(req.body.visibility); + if (isNaN(moodChange) || isNaN(visibility)) { + req.flash("error", "One of the values was improperly specified."); + res.redirect("/journal"); + return; + } + + let id: number; + try { + const entry = await db + .insert(journalEntries) + // @ts-expect-error + .values({ + user: req.session["uid"], + moodChange, + visibility, + title: req.body.title, + entry: req.body.description + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\n", "
"), + date: new Date(Date.now()) + }) + .returning({ id: journalEntries.id }); + id = entry[0].id; + } catch (err) { + req.flash( + "error", + "Failed to create your entry. Try again later or send these logs to roxwize so she can know what's up:

" + + err + ); + res.redirect("/journal"); + return; + } + req.flash( + "success", + `Your journal entry is now available as #${id}!` + ); + res.redirect("/journal"); + }); } diff --git a/routes/users.ts b/routes/users.ts index b4c6125..e7a9413 100644 --- a/routes/users.ts +++ b/routes/users.ts @@ -1,168 +1,216 @@ import { NodePgDatabase } from "drizzle-orm/node-postgres"; import { Express } from "express"; -import { follows, profiles, updates, users } from "../db/schema.js"; +import { + follows, + journalEntries, + profiles, + updates, + users +} from "../db/schema.js"; import { and, desc, eq } from "drizzle-orm"; -import { getMoods, render, UserStatus } from "./util.js"; +import { getMoods, render, render404, UserStatus } from "./util.js"; import { PgColumn } from "drizzle-orm/pg-core"; import dayjs from "dayjs"; export default async function (app: Express, db: NodePgDatabase) { - const { moods } = await getMoods(); - app.get("/users/:user", async (req, res) => { - const isSelf = req.params.user === req.session["user"]; + const { moods } = await getMoods(); + app.get("/users/:user", async (req, res) => { + const isSelf = req.params.user === req.session["user"]; - const user = ( - await db - .select({ - id: users.id, - name: users.name, - bio: profiles.bio, - website: profiles.website - }) - .from(users) - .where(eq(users.name, req.params.user)) - .leftJoin(profiles, eq(profiles.user, users.id)) - )[0]; - if (!user) { - req.flash("error", `User ${req.params.user} does not exist`); - res.redirect("/"); - return; - } + const user: { + id: number; + name: string; + registered: Date; + relativeRegistered?: string; + bio: string; + website: string; + } = ( + await db + .select({ + id: users.id, + name: users.name, + registered: users.registered, + bio: profiles.bio, + website: profiles.website + }) + .from(users) + .where(eq(users.name, req.params.user)) + .leftJoin(profiles, eq(profiles.user, users.id)) + )[0]; + if (!user) { + render404(db, res, req); + return; + } + user.relativeRegistered = dayjs(user.registered).fromNow(); - // follows - const isFollowing = !!( - await db - .select() - .from(follows) - .where( - and( - eq(follows.followerId, req.session["uid"]), - eq(follows.userId, user.id) - ) - ) - .limit(1) - )[0]; + // follows + const isFollowing = !!( + await db + .select() + .from(follows) + .where( + and( + eq(follows.followerId, req.session["uid"]), + eq(follows.userId, user.id) + ) + ) + .limit(1) + )[0]; - // mood - let moodSelection: { [k: string]: PgColumn } = { - desc: updates.description, - date: updates.date - }; - if (!isSelf) moodSelection.mood = updates.mood; - const userMood: { [k: string]: string | number | Date } = ( - await db - .select(moodSelection) - .from(updates) - .where(eq(updates.user, user.id)) - .orderBy(desc(updates.date)) - .limit(1) - )[0]; + // mood + let moodSelection: { [k: string]: PgColumn } = { + desc: updates.description, + date: updates.date + }; + if (!isSelf) moodSelection.mood = updates.mood; + const userMood: { [k: string]: string | number | Date } = ( + await db + .select(moodSelection) + .from(updates) + .where(eq(updates.user, user.id)) + .orderBy(desc(updates.date)) + .limit(1) + )[0]; - // feed - const now = dayjs(); - const userMoodFeed = (await db - .select({ - mood: updates.mood, - date: updates.date, - desc: updates.description - }) - .from(updates) - .where(eq(updates.user, user.id))).map((e) => { - return { user: user.name, mood: moods[e.mood], date: now.to(dayjs(e.date)), desc: e.desc } - }); + // journal entries + const now = dayjs(); + const userJournalEntries = ( + await db + .select({ + id: journalEntries.id, + title: journalEntries.title, + date: journalEntries.date + }) + .from(journalEntries) + .where(eq(journalEntries.user, user.id)) + .orderBy(desc(journalEntries.date)) + .limit(5) + ).map((e) => { + return { + id: e.id, + title: e.title, + date: e.date, + relativeDate: now.to(e.date) + }; + }); - if (!isSelf) { - userMood.mood = moods[userMood.mood as number]; - } + // feed + const userMoodFeed = ( + await db + .select({ + mood: updates.mood, + date: updates.date, + desc: updates.description + }) + .from(updates) + .where(eq(updates.user, user.id)) + .orderBy(desc(updates.date)) + ).map((e) => { + return { + user: user.name, + mood: moods[e.mood], + date: e.date, + relativeDate: now.to(dayjs(e.date)), + desc: e.desc + }; + }); - render(db, "user", `${req.params.user}'s Profile`, res, req, { - user, - isSelf, - userMood, - userMoodFeed, - isFollowing + if (!isSelf) { + userMood.mood = moods[userMood.mood as number]; + } + + render(db, "user", `${req.params.user}'s profile`, res, req, { + user, + isSelf, + userMood, + userMoodFeed, + userJournalEntries, + isFollowing + }); }); - }); - app.post("/users/:user/edit", async (req, res) => { - if (!req.session["loggedIn"]) { - res.redirect("/login"); - return; - } - const { uname } = ( - await db - .select({ uname: users.name }) - .from(users) - .where(eq(users.name, req.params.user)) - )[0]; - if ((uname || "") !== req.session["user"] && !(req.session["status"] & UserStatus.MODERATOR)) { - res.redirect("back"); - return; - } + app.post("/users/:user/edit", async (req, res) => { + if (!req.session["loggedIn"]) { + res.redirect("/login"); + return; + } + const { uname } = ( + await db + .select({ uname: users.name }) + .from(users) + .where(eq(users.name, req.params.user)) + )[0]; + if ( + (uname || "") !== req.session["user"] && + !(req.session["status"] & UserStatus.MODERATOR) + ) { + res.redirect("back"); + return; + } - await db //! no sanitization here either BROOOOOOO - .update(profiles) - .set({ - // @ts-expect-error - bio: req.body.bio, - website: req.body.website - }) - .where(eq(profiles.user, req.session["uid"])); - req.flash("success", "Profile updated!"); - res.redirect("/dashboard"); - }); - app.post("/users/:user/follow", async (req, res) => { - if (!req.session["loggedIn"]) { - res.redirect("/login"); - return; - } - if (req.session["user"] === req.params.user) { - req.flash("error", "Can't Follow Yourself Dummy"); - res.redirect(`/users/${req.params.user}`); - return; - } + await db //! no sanitization here either BROOOOOOO + .update(profiles) + .set({ + // @ts-expect-error + bio: req.body.bio, + website: req.body.website + }) + .where(eq(profiles.user, req.session["uid"])); + req.flash("success", "Profile updated!"); + res.redirect("/dashboard"); + }); + app.post("/users/:user/follow", async (req, res) => { + if (!req.session["loggedIn"]) { + res.redirect("/login"); + return; + } + if (req.session["user"] === req.params.user) { + req.flash("error", "Can't Follow Yourself Dummy"); + res.redirect(`/users/${req.params.user}`); + return; + } - const { uid } = ( - await db - .select({ uid: users.id }) - .from(users) - .where(eq(users.name, req.params.user)) - )[0]; - if (!uid) { - req.flash( - "error", - "It looks like you're trying to follow a user that doesn't exist anymore." - ); - res.redirect("/"); - return; - } - const isFollowing = !!( - await db - .select() - .from(follows) - .where( - and( - eq(follows.followerId, req.session["uid"]), - eq(follows.userId, uid) - ) - ) - .limit(1) - )[0]; - if (isFollowing) { - // unfollow - await db - .delete(follows) - .where( - and( - eq(follows.followerId, req.session["uid"]), - eq(follows.userId, uid) - ) - ); - } else { - await db.insert(follows).values({ - userId: uid, - followerId: req.session["uid"] - }); - } - res.redirect(`/users/${req.params.user}`); - }); + const { uid } = ( + await db + .select({ uid: users.id }) + .from(users) + .where(eq(users.name, req.params.user)) + )[0]; + if (!uid) { + req.flash( + "error", + "It looks like you're trying to follow a user that doesn't exist anymore." + ); + res.redirect("/"); + return; + } + const isFollowing = !!( + await db + .select() + .from(follows) + .where( + and( + eq(follows.followerId, req.session["uid"]), + eq(follows.userId, uid) + ) + ) + .limit(1) + )[0]; + if (isFollowing) { + // unfollow + await db + .delete(follows) + .where( + and( + eq(follows.followerId, req.session["uid"]), + eq(follows.userId, uid) + ) + ); + } else { + await db.insert(follows).values({ + userId: uid, + followerId: req.session["uid"] + }); + } + res.redirect(`/users/${req.params.user}`); + }); } diff --git a/routes/util.ts b/routes/util.ts index 910d062..16c2432 100644 --- a/routes/util.ts +++ b/routes/util.ts @@ -5,92 +5,113 @@ import { count, desc, eq } from "drizzle-orm"; import fs from "node:fs/promises"; export enum UserStatus { - MODERATOR = 0b001, - BANNED = 0b010, - TRUSTED = 0b100 -}; + MODERATOR = 0b001, + BANNED = 0b010, + TRUSTED = 0b100 +} const nonceChars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_"; + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_"; let nonce: string; export function setNonce() { - nonce = ""; - for (let i = 0; i < 32; i++) - nonce += nonceChars[Math.floor(Math.random() * nonceChars.length)]; - return nonce; + nonce = ""; + for (let i = 0; i < 32; i++) + nonce += nonceChars[Math.floor(Math.random() * nonceChars.length)]; + return nonce; } export function getNonce() { - if (!nonce) - throw new Error("Nonce doesn't exist"); - return nonce; + if (!nonce) throw new Error("Nonce doesn't exist"); + return nonce; } let moods: string[], moodsSorted: string[]; export async function getMoods() { - if (!moods) - moods = (await fs.readFile("./static/moods.txt")) - .toString("utf-8") - .split(";"); - if (!moodsSorted) moodsSorted = Array.from(moods).sort(); - return { moods, moodsSorted }; + if (!moods) + moods = (await fs.readFile("./static/moods.txt")) + .toString("utf-8") + .split(";"); + if (!moodsSorted) moodsSorted = Array.from(moods).sort(); + return { moods, moodsSorted }; } export async function render( - db: NodePgDatabase, - page: string, - title: string, - res: Response, - req: Request, - stuff?: Object + db: NodePgDatabase, + page: string, + title: string, + res: Response, + req: Request, + stuff?: Object ) { - //? maybe you should cache this and save the current mood to the session until it's changed - const { moods } = await getMoods(); - let currentMood: string; - if (req.session["loggedIn"]) { - const update = ( - await db - .select({ mood: updates.mood }) - .from(updates) - .where(eq(updates.user, req.session["uid"])) - .orderBy(desc(updates.date)) - .limit(1) - )[0]; - currentMood = moods[update?.mood]; - } - - const o = { - title, - session: req.session, - flashes: req.flash(), - moods, - currentMood, - nonce - }; - res.render(page, { ...o, ...stuff }); -} - -const inviteCodeChars = "abcdefghijklmnopqrstuvwxyz0123456789" -export async function createInviteCode(db: NodePgDatabase, user: number, expires: Date, confers = 0) { - let existingToken = 1, token: string; - while (existingToken) { - token = user.toString().padStart(4, "0") + "-" - for (let i = 0; i < 17; i++) { - if ((i + 1) % 6 === 0) { - token += "-"; - continue; - } - token += inviteCodeChars[Math.floor(Math.random() * inviteCodeChars.length)]; + //? maybe you should cache this and save the current mood to the session until it's changed + const { moods } = await getMoods(); + let currentMood: string; + if (req.session["loggedIn"]) { + const update = ( + await db + .select({ mood: updates.mood }) + .from(updates) + .where(eq(updates.user, req.session["uid"])) + .orderBy(desc(updates.date)) + .limit(1) + )[0]; + currentMood = moods[update?.mood]; } - existingToken = (await db.select({ value: count() }).from(inviteCodes).where(eq(inviteCodes.token, token)))[0].value; - } - //@ts-expect-error - await db.insert(inviteCodes).values({ - token, - user: user || undefined, - granted: new Date(Date.now()), - expires, - confers - }); - return token; + const o = { + title, + session: req.session, + flashes: req.flash(), + moods, + currentMood, + nonce + }; + res.render(page, { ...o, ...stuff }); +} +export async function render404( + db: NodePgDatabase, + res: Response, + req: Request +) { + res.statusCode = 404; + render(db, "404", "not found", res, req); +} + +const inviteCodeChars = "abcdefghijklmnopqrstuvwxyz0123456789"; +export async function createInviteCode( + db: NodePgDatabase, + user: number, + expires: Date, + confers = 0 +) { + let existingToken = 1, + token: string; + while (existingToken) { + token = user.toString().padStart(4, "0") + "-"; + for (let i = 0; i < 17; i++) { + if ((i + 1) % 6 === 0) { + token += "-"; + continue; + } + token += + inviteCodeChars[ + Math.floor(Math.random() * inviteCodeChars.length) + ]; + } + existingToken = ( + await db + .select({ value: count() }) + .from(inviteCodes) + .where(eq(inviteCodes.token, token)) + )[0].value; + } + + //@ts-expect-error + await db.insert(inviteCodes).values({ + token, + user: user || undefined, + granted: new Date(Date.now()), + expires, + confers + }); + return token; } diff --git a/static/css/main.css b/static/css/main.css index 781a589..5f1a3c1 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -8,6 +8,8 @@ body { justify-content: center; margin: 0; background-color: #21211d; + background-image: url("/img/bg.png"); + background-size: cover; width: 100vw; height: 100vh; font-family: "Gohufont 14", sans-serif; @@ -17,6 +19,7 @@ body { main { background-color: #faf8da; width: 95%; + max-width: 953px; height: 95%; } diff --git a/static/img/bg.png b/static/img/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf4230104d680055b0a183949e0504a8a795f51 GIT binary patch literal 132105 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 z

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 literal 0 HcmV?d00001 diff --git a/views/404.pug b/views/404.pug new file mode 100644 index 0000000..9f92e7f --- /dev/null +++ b/views/404.pug @@ -0,0 +1,5 @@ +extends site.pug + +block content + h1 Not Found + p No such thing is to be found here!! Perhaps, you would be better off, locating something that exists. diff --git a/views/_feed.pug b/views/_feed.pug index 6ee981e..46c0b63 100644 --- a/views/_feed.pug +++ b/views/_feed.pug @@ -9,6 +9,6 @@ mixin feed(feed, hideUser) | #{update.user} strong= update.mood div= update.desc || "[no mood description provided]" - div= update.date + div(title=update.date.toLocaleString())= update.relativeDate else span [no updates] diff --git a/views/journal.pug b/views/journal.pug index ab29489..62d2f5c 100644 --- a/views/journal.pug +++ b/views/journal.pug @@ -30,6 +30,9 @@ block content input.ovm-input(type="radio", name="moodDelta", id="moodDelta-mw", value="-2", required) label.ovm-input(for="moodDelta-mw", title="Much worse") img(src="/img/downdown.svg", alt="Much worse") + .input + label(for="title") Title + input(type="text", name="title", id="title", placeholder="max 64 chars", maxlength="64", style="width:66ch;") .input label(for="description") Journal entry for today textarea(name="description", id="description", placeholder="max 4096 chars", maxlength="4096", cols="60", rows="12") diff --git a/views/journal_view.pug b/views/journal_view.pug index e759ed9..2cfecad 100644 --- a/views/journal_view.pug +++ b/views/journal_view.pug @@ -1,13 +1,12 @@ extends site.pug block content - h1= entry.date.toLocaleDateString() + h1= entry.title span - | by - | + | by a(href=`/users/${entry.uname}`)= entry.uname - | - | at #{entry.date.toLocaleTimeString()} + | + span(title=entry.date.toLocaleString()) #{entryTimestamp} br br - div= entry.content + div!= entry.content diff --git a/views/site.pug b/views/site.pug index 46a2bf2..3a58ab7 100644 --- a/views/site.pug +++ b/views/site.pug @@ -11,7 +11,7 @@ html(lang="en") main header a(href="/") - img#header-logo(src="/img/logo.svg", alt="logo") + img#header-logo(src="/img/logo.svg", alt="logo", title="meow") nav if session.loggedIn if session.status & 0b001 diff --git a/views/user.pug b/views/user.pug index e515e48..4b2d390 100644 --- a/views/user.pug +++ b/views/user.pug @@ -2,20 +2,21 @@ extends site.pug //- Display mood here but keep yourself dry (i.e. dont request user mood if the profile being viewed is the profile of the currently logged-in user) block content - h1= user.name - if !isSelf - form(action=`/users/${user.name}/follow`, method="post") - button(type="submit")= isFollowing ? "unfollow" : "follow" - br - span= user.bio || "[no bio]" + div(style="display:flex;align-items:center;gap:8px;") + h1= user.name + if !isSelf + form(action=`/users/${user.name}/follow`, method="post") + button(type="submit")= isFollowing ? "unfollow" : "follow" + br + div(style="margin-bottom:1em;") + | Joined + span(title=user.registered.toLocaleString())= user.relativeRegistered + div= user.bio || "[no bio]" if user.website - br a(href=user.website)= user.website - br - br - h2 Current mood + h2(style="margin-top:1em;") Current mood if userMood - span + div | Feeling | strong @@ -23,11 +24,20 @@ block content | #{currentMood} else | #{userMood.mood} - br div(style="margin-left:2ch;word-wrap:break-word;")= userMood.desc || "[no mood description]" else - span User has not yet set a mood! + div User has not yet set a mood! br - h2 Recent updates + h2 Recent journal entries + if userJournalEntries.length > 0 + ul + for entry of userJournalEntries + li + a(href=`/journal/${entry.id}`)= entry.title + span.subtle(title=entry.date.toLocaleString()) (#{entry.relativeDate}) + else + div [no entries] + br + h2 Recent mood updates include _feed.pug +feed(userMoodFeed, true)