From ad38c6aeedf4d0703525bfedd34bc99b05a09a0e Mon Sep 17 00:00:00 2001 From: emil28092005 Date: Wed, 14 Jan 2026 02:48:16 +0300 Subject: [PATCH] Add user prefix. --- .gitignore | 3 ++- internal/api/websocket.go | 10 +++++++--- project_context.txt | 27 +++++++++++++++++++-------- shagram.db | Bin 20480 -> 20480 bytes static/index.html | 7 ++++--- static/js/chat.js | 8 +++++++- 6 files changed, 39 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index e15f080..cee86b7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -project_context.txt \ No newline at end of file +project_context.txt +shagram.db \ No newline at end of file diff --git a/internal/api/websocket.go b/internal/api/websocket.go index c3e87cb..107ec3d 100644 --- a/internal/api/websocket.go +++ b/internal/api/websocket.go @@ -39,14 +39,18 @@ func WebSocketHandler(hub *websocket.Hub, database *db.DB) gin.HandlerFunc { if err != nil { break } + user := msg["user"] + if user == "" { + user = "Anonymous" + } _, err = database.Exec(` INSERT INTO messages (room_id, user, text) - VALUES (?, ?, ?)`, roomID, "user", msg["text"]) + VALUES (?, ?, ?)`, roomID, user, msg["text"]) if err != nil { log.Printf("Save message error: %v", err) } - - message := []byte(msg["text"]) + formattedMsg := user + ": " + msg["text"] + message := []byte(formattedMsg) room.Broadcast(message) } }() diff --git a/project_context.txt b/project_context.txt index 3b8241b..2bd64a1 100644 --- a/project_context.txt +++ b/project_context.txt @@ -257,9 +257,13 @@ func WebSocketHandler(hub *websocket.Hub, database *db.DB) gin.HandlerFunc { if err != nil { break } + user := msg["user"] + if user == "" { + user = "Anonymous" + } _, err = database.Exec(` INSERT INTO messages (room_id, user, text) - VALUES (?, ?, ?)`, roomID, "user", msg["text"]) + VALUES (?, ?, ?)`, roomID, user, msg["text"]) if err != nil { log.Printf("Save message error: %v", err) } @@ -415,7 +419,7 @@ CREATE TABLE IF NOT EXISTS messages ( INSERT OR IGNORE INTO rooms (id, name) VALUES ('general', 'General'); --- shagram.db --- -SQLite format 3@ .  n] P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)otablemessagesmessagesCREATE TABLE messages ( +SQLite format 3@ .  n] P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)otablemessagesmessagesCREATE TABLE messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, room_id TEXT NOT NULL, user TEXT NOT NULL, @@ -427,8 +431,8 @@ SQLite format 3@  name TEXT NOT NULL ))=indexsqlite_autoindex_rooms_1rooms generalGeneral  - general  _[5 yS- Z /  _$3chatuserAAA2026-01-12 21:59:44(3chatuserdfgsadf2026-01-12 21:59:35'3devusertest DB2026-01-12 21:58:42,#3chatusersefsefsefes2026-01-12 21:43:38'3chatusersefesf2026-01-12 21:43:35)3chatuserdfbzgdfg2026-01-12 21:43:26(3chatuserkuykfgh2026-01-12 21:42:52-3generaluserawfawdfwa2026-01-12 21:28:44'3devuserwadawdw2026-01-12 21:28:40&3chatuserefawe2026-01-12 21:28:16' 3chatuserawdwad2026-01-12 21:27:58$ 3chatuserawd2026-01-12 21:27:25$ 3chatuseradw2026-01-12 21:27:23" -3chatuserd2026-01-12 21:27:20# 3chatuserda2026-01-12 21:27:16#3chatuserku2026-01-12 21:26:58#3chatuserhi2026-01-12 21:26:43'3generaluserASD2026-01-12 21:16:37$3chatuserASD2026-01-12 21:16:30"3devuserHI2026-01-12 21:16:08!3devuser12026-01-12 20:59:23-'3devuserHi from DB! 22026-01-12 20:58:43-'3devuserHi from DB! 12026-01-12 20:58:34  messages + general  2[5 yS- Z /  _ 2+!3chatЭмильку2026-01-13 23:23:54$3chatuserAAA2026-01-12 21:59:44(3chatuserdfgsadf2026-01-12 21:59:35'3devusertest DB2026-01-12 21:58:42,#3chatusersefsefsefes2026-01-12 21:43:38'3chatusersefesf2026-01-12 21:43:35)3chatuserdfbzgdfg2026-01-12 21:43:26(3chatuserkuykfgh2026-01-12 21:42:52-3generaluserawfawdfwa2026-01-12 21:28:44'3devuserwadawdw2026-01-12 21:28:40&3chatuserefawe2026-01-12 21:28:16' 3chatuserawdwad2026-01-12 21:27:58$ 3chatuserawd2026-01-12 21:27:25$ 3chatuseradw2026-01-12 21:27:23" +3chatuserd2026-01-12 21:27:20# 3chatuserda2026-01-12 21:27:16#3chatuserku2026-01-12 21:26:58#3chatuserhi2026-01-12 21:26:43'3generaluserASD2026-01-12 21:16:37$3chatuserASD2026-01-12 21:16:30"3devuserHI2026-01-12 21:16:08!3devuser12026-01-12 20:59:23-'3devuserHi from DB! 22026-01-12 20:58:43-'3devuserHi from DB! 12026-01-12 20:58:34  messages --- static/index.html --- @@ -453,21 +457,22 @@ SQLite format 3@  } input { padding: 8px; width: 300px; } button { padding: 8px 15px; cursor: pointer; } - select { padding: 8px; width: 320px; } /* ← для комнат */ + select { padding: 8px; width: 320px; } #roomsList { margin: 10px 0; }

📱 Shagram Chat

-
- + +
+
@@ -572,12 +577,18 @@ function connectRoom() { function sendMessage() { const text = messageInput.value.trim(); + const usernameInput = document.getElementById('userInput'); + const username = usernameInput ? usernameInput.value.trim() || 'Anonymous' : 'Anonymous'; + if (!text || !ws || ws.readyState !== WebSocket.OPEN) { alert('Not connected or empty message'); return; } - ws.send(JSON.stringify({text: text})); + ws.send(JSON.stringify({ + text: text, + user: username, + })); messageInput.value = ''; } diff --git a/shagram.db b/shagram.db index be24cb0a1c60bbf7bc08178252d290e71b033ca5..4736222445d06416c0e832da04b23e9ea7619119 100644 GIT binary patch delta 132 zcmZozz}T>Wae_1>>qHr6M%Il9OY}LI_?Iy7U*cb~Sx{gGe~bXn-0vuz@g3ljbH)ibhBVj_6CjhuwDAeWzV2P1>=~V_t$ydY)E&AKCE>U;q3(ADe>{EA>w* z?ExjtUcX}xh$h??L{a#N5J3>`v3Z%z)3(G`!qW}56zA4ow|Y-_?}s~a`ClO{-4f)k z{G0TIt)M{w0uX=z1Rwwb2tWV=5P-mcDR3N)C=VZsrvv-xC3T-&vgg8vOP>vC_bj-% zyjwF3%OsZZsA7^pHr2H|bekQS{zeL|C>tB%w>__Bhq|uaqV9AV_EnkgC8;Q3t?iI< z)iMvv8ab|&4~^O>`Pe)q#))-QuCfCU&8oHSCHuWzr@`Wu`Kd*!M{GW+RK_0-UE05H z|A0OpT(|$MPwfG98thSckB!eNADU#(+&4}t7TG3d}rM<4v)vD*gvY7<%6o% zxzwa9X;L%yO_ts@>xA!fNviFnqvD6+#c|ku?@pevuZJu&1G^b zQFD6X13jNlz0FgJS;}d)T-#|bB(*|vJtC~Jq(i^prdx3T`MKmc>3;qn!17W^I#$U77uRBf==`4mo3)ag_>$Hwdx<##qh;NvvnRw zs(L}q+>Qu|^>?(%BN-oU;iRuBdA}Tg$xKmBY2E?1M1B zPOH;<^>KNjQnqwI#53|VlberZ`Ikf0GD|#?oJJnENweSUu)F>~Q3G*ycW4>$weeu} xlCI^)@BhCP

📱 Shagram Chat

-
- + +
+
diff --git a/static/js/chat.js b/static/js/chat.js index b21edd4..a96a1e1 100644 --- a/static/js/chat.js +++ b/static/js/chat.js @@ -88,12 +88,18 @@ function connectRoom() { function sendMessage() { const text = messageInput.value.trim(); + const usernameInput = document.getElementById('userInput'); + const username = usernameInput ? usernameInput.value.trim() || 'Anonymous' : 'Anonymous'; + if (!text || !ws || ws.readyState !== WebSocket.OPEN) { alert('Not connected or empty message'); return; } - ws.send(JSON.stringify({text: text})); + ws.send(JSON.stringify({ + text: text, + user: username, + })); messageInput.value = ''; }