update
This commit is contained in:
parent
f69e6db582
commit
345fab6a32
@ -1,3 +1,4 @@
|
||||
{
|
||||
|
||||
"username": "Filip",
|
||||
"profile_icon": "./icon.png"
|
||||
}
|
||||
@ -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"
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user