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",
|
"id": "1",
|
||||||
"sender": "Alice",
|
"sender": "Alice",
|
||||||
"receiver": "bob",
|
"receiver": "Filip",
|
||||||
"content": "SGVsbG8gQm9iLCBob3cgYXJlIHlvdT8K",
|
"content": "SGVsbG8gQm9iLCBob3cgYXJlIHlvdT8K",
|
||||||
"timestamp": "2023-10-01T10:00:00Z"
|
"timestamp": "2023-10-01T10:00:00Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2",
|
"id": "2",
|
||||||
"sender": "bob",
|
"sender": "Filip",
|
||||||
"receiver": "Alice",
|
"receiver": "Alice",
|
||||||
"content": "SGkgQWxpY2UhIEknbSBkb2luZyB3ZWxsLCB0aGFua3MuIEhvdyBhYm91dCB5b3U/Cg==",
|
"content": "SGkgQWxpY2UhIEknbSBkb2luZyB3ZWxsLCB0aGFua3MuIEhvdyBhYm91dCB5b3U/Cg==",
|
||||||
"timestamp": "2023-10-01T10:05:00Z"
|
"timestamp": "2023-10-01T10:05:00Z"
|
||||||
@ -18,7 +18,7 @@
|
|||||||
{
|
{
|
||||||
"id": "3",
|
"id": "3",
|
||||||
"sender": "Alice",
|
"sender": "Alice",
|
||||||
"receiver": "bob",
|
"receiver": "Filip",
|
||||||
"content": "SSdtIGdyZWF0LCB0aGFua3MgZm9yIGFza2luZwo=",
|
"content": "SSdtIGdyZWF0LCB0aGFua3MgZm9yIGFza2luZwo=",
|
||||||
"timestamp": "2023-10-01T10:06:00Z"
|
"timestamp": "2023-10-01T10:06:00Z"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,10 +54,11 @@ func updateChatView(v *gocui.View) {
|
|||||||
w = w*3 - (w / 10)
|
w = w*3 - (w / 10)
|
||||||
h = 0
|
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 {
|
func sendMessage(g *gocui.Gui, v *gocui.View) error {
|
||||||
input := v.Buffer()
|
input := v.Buffer()
|
||||||
v.Clear()
|
v.Clear()
|
||||||
|
|||||||
@ -4,8 +4,6 @@ import (
|
|||||||
"github.com/jroimartin/gocui"
|
"github.com/jroimartin/gocui"
|
||||||
)
|
)
|
||||||
|
|
||||||
var selectedUserIdx int
|
|
||||||
|
|
||||||
func keybindings(g *gocui.Gui) error {
|
func keybindings(g *gocui.Gui) error {
|
||||||
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -13,52 +11,15 @@ func keybindings(g *gocui.Gui) error {
|
|||||||
if err := g.SetKeybinding("input", gocui.KeyEnter, gocui.ModNone, sendMessage); err != nil {
|
if err := g.SetKeybinding("input", gocui.KeyEnter, gocui.ModNone, sendMessage); err != nil {
|
||||||
return err
|
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
|
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
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func quit(g *gocui.Gui, v *gocui.View) error {
|
func quit(g *gocui.Gui, v *gocui.View) error {
|
||||||
return gocui.ErrQuit
|
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 {
|
if err := layoutSidebar(g, maxY); err != nil {
|
||||||
|
updateUsersView(g)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := layoutChat(g, maxX, maxY); err != nil {
|
if err := layoutChat(g, maxX, maxY); err != nil {
|
||||||
|
|||||||
@ -6,6 +6,10 @@ import (
|
|||||||
"github.com/jroimartin/gocui"
|
"github.com/jroimartin/gocui"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var selectedUserIdx int
|
||||||
|
|
||||||
|
//!FIX: First selected contact don't work only second selected is working ok
|
||||||
|
|
||||||
// LAYOUT
|
// LAYOUT
|
||||||
func layoutSidebar(g *gocui.Gui, maxY int) error {
|
func layoutSidebar(g *gocui.Gui, maxY int) error {
|
||||||
if v, err := g.SetView("users", 0, 0, 20, maxY-1); err != nil {
|
if v, err := g.SetView("users", 0, 0, 20, maxY-1); err != nil {
|
||||||
@ -27,6 +31,9 @@ func updateUsersView(g *gocui.Gui) error {
|
|||||||
|
|
||||||
v.Clear()
|
v.Clear()
|
||||||
|
|
||||||
|
messages = nil
|
||||||
|
LoadMessages(users[selectedUserIdx])
|
||||||
|
|
||||||
// TODO: Render profile image of users and change colors of each user maybe?
|
// TODO: Render profile image of users and change colors of each user maybe?
|
||||||
for i, u := range users {
|
for i, u := range users {
|
||||||
|
|
||||||
@ -53,6 +60,7 @@ func nextContact(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
selectedUserIdx = (selectedUserIdx + 1) % len(users)
|
selectedUserIdx = (selectedUserIdx + 1) % len(users)
|
||||||
|
updateChatView(g.Views()[1])
|
||||||
return updateUsersView(g)
|
return updateUsersView(g)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,5 +69,6 @@ func prevContact(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users)
|
selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users)
|
||||||
|
updateChatView(g.Views()[1])
|
||||||
return updateUsersView(g)
|
return updateUsersView(g)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,9 +11,7 @@ var users []string
|
|||||||
var prevWidth, prevHeight int
|
var prevWidth, prevHeight int
|
||||||
|
|
||||||
func Run() {
|
func Run() {
|
||||||
//LoadContacts("configs/servers/default")
|
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])
|
|
||||||
|
|
||||||
g, err := gocui.NewGui(gocui.OutputNormal)
|
g, err := gocui.NewGui(gocui.OutputNormal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user