From 345fab6a329e27451e9d038f2e486994e79ab533 Mon Sep 17 00:00:00 2001 From: shinya Date: Tue, 19 Aug 2025 08:46:52 +0200 Subject: [PATCH] update --- configs/config.json | 3 +- .../servers/default/users/alice/messages.json | 6 +-- internal/tui/chat.go | 3 +- internal/tui/keybindings.go | 43 +------------------ internal/tui/layout.go | 1 + internal/tui/sidebar.go | 11 ++++- internal/tui/tui.go | 6 +-- 7 files changed, 22 insertions(+), 51 deletions(-) diff --git a/configs/config.json b/configs/config.json index 544b7b4..6e98378 100644 --- a/configs/config.json +++ b/configs/config.json @@ -1,3 +1,4 @@ { - + "username": "Filip", + "profile_icon": "./icon.png" } \ No newline at end of file diff --git a/configs/servers/default/users/alice/messages.json b/configs/servers/default/users/alice/messages.json index a1a4f5d..b69fb24 100644 --- a/configs/servers/default/users/alice/messages.json +++ b/configs/servers/default/users/alice/messages.json @@ -4,13 +4,13 @@ { "id": "1", "sender": "Alice", - "receiver": "bob", + "receiver": "Filip", "content": "SGVsbG8gQm9iLCBob3cgYXJlIHlvdT8K", "timestamp": "2023-10-01T10:00:00Z" }, { "id": "2", - "sender": "bob", + "sender": "Filip", "receiver": "Alice", "content": "SGkgQWxpY2UhIEknbSBkb2luZyB3ZWxsLCB0aGFua3MuIEhvdyBhYm91dCB5b3U/Cg==", "timestamp": "2023-10-01T10:05:00Z" @@ -18,7 +18,7 @@ { "id": "3", "sender": "Alice", - "receiver": "bob", + "receiver": "Filip", "content": "SSdtIGdyZWF0LCB0aGFua3MgZm9yIGFza2luZwo=", "timestamp": "2023-10-01T10:06:00Z" } diff --git a/internal/tui/chat.go b/internal/tui/chat.go index 05bc5dc..25e7877 100644 --- a/internal/tui/chat.go +++ b/internal/tui/chat.go @@ -54,10 +54,11 @@ func updateChatView(v *gocui.View) { w = w*3 - (w / 10) h = 0 } - render_image.RenderImage("kogami-rounded.png", i*3+2, 23, w, h, 0) + render_image.RenderImage("./configs/icon.png", i*3+2, 23, w, h, 0) } } +// TODO: Rewrite This Code func sendMessage(g *gocui.Gui, v *gocui.View) error { input := v.Buffer() v.Clear() diff --git a/internal/tui/keybindings.go b/internal/tui/keybindings.go index a829730..16693f9 100644 --- a/internal/tui/keybindings.go +++ b/internal/tui/keybindings.go @@ -4,8 +4,6 @@ import ( "github.com/jroimartin/gocui" ) -var selectedUserIdx int - func keybindings(g *gocui.Gui) error { if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { return err @@ -13,52 +11,15 @@ func keybindings(g *gocui.Gui) error { if err := g.SetKeybinding("input", gocui.KeyEnter, gocui.ModNone, sendMessage); err != nil { return err } - if err := g.SetKeybinding("chat", gocui.KeyArrowUp, gocui.ModNone, cursorUp); err != nil { + if err := g.SetKeybinding("", gocui.KeyCtrlJ, gocui.ModNone, nextContact); err != nil { return err } - if err := g.SetKeybinding("chat", gocui.KeyArrowDown, gocui.ModNone, cursorDown); err != nil { + if err := g.SetKeybinding("", gocui.KeyCtrlK, gocui.ModNone, prevContact); err != nil { return err } - if err := g.SetKeybinding("", gocui.KeyTab, gocui.ModNone, nextContact); err != nil { - return err - } - if err := g.SetKeybinding("", gocui.KeySpace, gocui.ModNone, prevContact); err != nil { - return err - } - return nil -} - -func insertNewline(g *gocui.Gui, v *gocui.View) error { - v.EditNewLine() return nil } func quit(g *gocui.Gui, v *gocui.View) error { return gocui.ErrQuit } - -func cursorDown(g *gocui.Gui, v *gocui.View) error { - if v != nil { - cx, cy := v.Cursor() - if err := v.SetCursor(cx, cy+1); err != nil { - ox, oy := v.Origin() - if err := v.SetOrigin(ox, oy+1); err != nil { - return err - } - } - } - return nil -} - -func cursorUp(g *gocui.Gui, v *gocui.View) error { - if v != nil { - ox, oy := v.Origin() - cx, cy := v.Cursor() - if err := v.SetCursor(cx, cy-1); err != nil && oy > 0 { - if err := v.SetOrigin(ox, oy-1); err != nil { - return err - } - } - } - return nil -} diff --git a/internal/tui/layout.go b/internal/tui/layout.go index 4f8db40..cf36fc4 100644 --- a/internal/tui/layout.go +++ b/internal/tui/layout.go @@ -15,6 +15,7 @@ func layout(g *gocui.Gui) error { } if err := layoutSidebar(g, maxY); err != nil { + updateUsersView(g) return err } if err := layoutChat(g, maxX, maxY); err != nil { diff --git a/internal/tui/sidebar.go b/internal/tui/sidebar.go index d26d1c1..042a69f 100644 --- a/internal/tui/sidebar.go +++ b/internal/tui/sidebar.go @@ -6,6 +6,10 @@ import ( "github.com/jroimartin/gocui" ) +var selectedUserIdx int + +//!FIX: First selected contact don't work only second selected is working ok + // LAYOUT func layoutSidebar(g *gocui.Gui, maxY int) error { if v, err := g.SetView("users", 0, 0, 20, maxY-1); err != nil { @@ -27,9 +31,12 @@ func updateUsersView(g *gocui.Gui) error { v.Clear() + messages = nil + LoadMessages(users[selectedUserIdx]) + // TODO: Render profile image of users and change colors of each user maybe? for i, u := range users { - + // Change Selected User In The TUI Window if i == selectedUserIdx { fmt.Fprintf(v, "%s%s%s\n", Colors.base06, u, Colors.base16) @@ -53,6 +60,7 @@ func nextContact(g *gocui.Gui, v *gocui.View) error { return nil } selectedUserIdx = (selectedUserIdx + 1) % len(users) + updateChatView(g.Views()[1]) return updateUsersView(g) } @@ -61,5 +69,6 @@ func prevContact(g *gocui.Gui, v *gocui.View) error { return nil } selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users) + updateChatView(g.Views()[1]) return updateUsersView(g) } diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 517ebe7..c279b3e 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -7,13 +7,11 @@ import ( ) var messages []string -var users []string +var users []string var prevWidth, prevHeight int func Run() { - //LoadContacts("configs/servers/default") - users = []string{"Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Heidi", "Ivan", "Judy", "Karl", "Leo", "Mallory", "Nina", "Oscar", "Peggy", "Quentin", "Rupert", "Sybil", "Trent", "Uma", "Victor", "Walter", "Xena", "Yara", "Zane"} - LoadMessages(users[0]) + LoadContacts("configs/servers/default") g, err := gocui.NewGui(gocui.OutputNormal) if err != nil {