"fmt"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
- "github.com/stretchr/testify/mock"
"go.uber.org/zap"
"gopkg.in/yaml.v3"
"math/big"
return iconBytes
}
-func (cp *ClientPrefs) AddBookmark(name, addr, login, pass string) error {
+func (cp *ClientPrefs) AddBookmark(name, addr, login, pass string) {
cp.Bookmarks = append(cp.Bookmarks, Bookmark{Addr: addr, Login: login, Password: pass})
-
- return nil
}
func readConfig(cfgPath string) (*ClientPrefs, error) {
Handle(*Client, *Transaction) ([]Transaction, error)
}
-type mockClientHandler struct {
- mock.Mock
-}
-
-func (mh *mockClientHandler) Handle(cc *Client, t *Transaction) ([]Transaction, error) {
- args := mh.Called(cc, t)
- return args.Get(0).([]Transaction), args.Error(1)
-}
-
var clientHandlers = map[uint16]ClientHandler{
TranChatMsg: handleClientChatMsg,
TranLogin: handleClientTranLogin,
}
func handleTranServerMsg(c *Client, t *Transaction) (res []Transaction, err error) {
- time := time.Now().Format(time.RFC850)
+ now := time.Now().Format(time.RFC850)
msg := strings.ReplaceAll(string(t.GetField(FieldData).Data), "\r", "\n")
- msg += "\n\nAt " + time
+ msg += "\n\nAt " + now
title := fmt.Sprintf("| Private Message From: %s |", t.GetField(FieldUserName).Data)
msgBox := tview.NewTextView().SetScrollable(true)
msgBox.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyEscape:
- c.UI.Pages.RemovePage("serverMsgModal" + time)
+ c.UI.Pages.RemovePage("serverMsgModal" + now)
}
return event
})
AddItem(nil, 0, 1, false), 0, 2, true).
AddItem(nil, 0, 1, false)
- c.UI.Pages.AddPage("serverMsgModal"+time, centeredFlex, true, true)
+ c.UI.Pages.AddPage("serverMsgModal"+now, centeredFlex, true, true)
c.UI.App.Draw() // TODO: errModal doesn't render without this. wtf?
return res, err
}
func (c *Client) showErrMsg(msg string) {
- time := time.Now().Format(time.RFC850)
+ t := time.Now().Format(time.RFC850)
title := "| Error |"
msgBox.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyEscape:
- c.UI.Pages.RemovePage("serverMsgModal" + time)
+ c.UI.Pages.RemovePage("serverMsgModal" + t)
}
return event
})
AddItem(nil, 0, 1, false), 0, 2, true).
AddItem(nil, 0, 1, false)
- c.UI.Pages.AddPage("serverMsgModal"+time, centeredFlex, true, true)
+ c.UI.Pages.AddPage("serverMsgModal"+t, centeredFlex, true, true)
c.UI.App.Draw() // TODO: errModal doesn't render without this. wtf?
}
c.UI.userList.Clear()
for _, u := range c.UserList {
flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(u.Flags)))
- if flagBitmap.Bit(userFlagAdmin) == 1 {
+ if flagBitmap.Bit(UserFlagAdmin) == 1 {
_, _ = fmt.Fprintf(c.UI.userList, "[red::b]%s[-:-:-]\n", u.Name)
} else {
_, _ = fmt.Fprintf(c.UI.userList, "%s\n", u.Name)
func (c *Client) Send(t Transaction) error {
requestNum := binary.BigEndian.Uint16(t.Type)
- tID := binary.BigEndian.Uint32(t.ID)
-
- // handler := TransactionHandlers[requestNum]
// if transaction is NOT reply, add it to the list to transactions we're expecting a response for
if t.IsReply == 0 {
- c.activeTasks[tID] = &t
+ c.activeTasks[binary.BigEndian.Uint32(t.ID)] = &t
}
- var n int
- var err error
b, err := t.MarshalBinary()
if err != nil {
return err
}
+
+ var n int
if n, err = c.Connection.Write(b); err != nil {
return err
}
t.Type = origT.Type
}
- requestNum := binary.BigEndian.Uint16(t.Type)
- c.Logger.Debugw("Received Transaction", "RequestType", requestNum)
-
- if handler, ok := c.Handlers[requestNum]; ok {
+ if handler, ok := c.Handlers[binary.BigEndian.Uint16(t.Type)]; ok {
outT, _ := handler(c, t)
for _, t := range outT {
- c.Send(t)
+ if err := c.Send(t); err != nil {
+ return err
+ }
}
} else {
c.Logger.Debugw(
"Unimplemented transaction type received",
- "RequestID", requestNum,
+ "RequestID", t.Type,
"TransactionID", t.ID,
)
}