This commit is contained in:
shinya 2025-08-19 08:46:52 +02:00
parent f69e6db582
commit 345fab6a32
7 changed files with 22 additions and 51 deletions

View File

@ -1,3 +1,4 @@
{
"username": "Filip",
"profile_icon": "./icon.png"
}

View File

@ -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"
}

View File

@ -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()

View File

@ -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
}

View File

@ -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 {

View File

@ -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)
}

View File

@ -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 {