diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 17:04:28 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 17:04:49 +0300 |
| commit | 7457f7af8effa21ecf328058475e944e46075670 (patch) | |
| tree | 0f82e043d693871e72b8c02e5a73b72b8d16177c | |
| parent | 1490ddda1d20ef23a4e5ec908405869073abbf8d (diff) | |
| download | ctfc-7457f7af8effa21ecf328058475e944e46075670.tar ctfc-7457f7af8effa21ecf328058475e944e46075670.tar.gz ctfc-7457f7af8effa21ecf328058475e944e46075670.zip | |
Implemented sending chat messages and implemented chat UI
| -rw-r--r-- | go-src/chat.go | 14 | ||||
| -rw-r--r-- | go-src/utils/utils.go | 8 | ||||
| -rw-r--r-- | go-src/windows.go | 18 |
3 files changed, 30 insertions, 10 deletions
diff --git a/go-src/chat.go b/go-src/chat.go index c7ea5f1..575a88f 100644 --- a/go-src/chat.go +++ b/go-src/chat.go @@ -15,25 +15,25 @@ type Chat struct { Messages []string } -func (ch Chat) addMessage(value string) { +func (ch Chat) addMessage(value string, creatorUsername string) { + value = creatorUsername + " : " + value ch.Messages = append(ch.Messages, value) - os.WriteFile(folderPaths.FileAtChatsFolder(ch.Name), []byte(value), 0644) + + utils.AppendToFile(folderPaths.FileAtChatsFolder(ch.Name), value+"\n") } func createChat(data ...string) { chatFile, _ := os.Create(folderPaths.FileAtChatsFolder(data[0])) - chatFile.WriteString(data[0] + "\n" + data[1] + "\n" + data[2]) + chatFile.WriteString(data[0] + "\n" + data[1] + "\n" + data[2] + "\n") chatFile.Close() - allChatsFile, _ := os.OpenFile(folderPaths.AllChatsFilePath(), os.O_APPEND|os.O_WRONLY, 0644) - allChatsFile.WriteString(data[0] + " : " + data[1] + "\n") - allChatsFile.Close() + utils.AppendToFile(folderPaths.AllChatsFilePath(), data[0]+" : "+data[1]+"\n") } func getChat(name string) Chat { f, _ := os.ReadFile(folderPaths.FileAtChatsFolder(name)) values := bytes.Split(f, []byte("\n")) - return Chat{string(values[0]), string(values[1]), getUser(string(values[2])), utils.TwoDByteArrayToStringArray(values[3:])} + return Chat{string(values[0]), string(values[1]), getUser(string(values[2])), utils.TwoDByteArrayToStringArray(values[3 : len(values)-1])} } func getAllChats() []string { diff --git a/go-src/utils/utils.go b/go-src/utils/utils.go index f50ab50..754c7ed 100644 --- a/go-src/utils/utils.go +++ b/go-src/utils/utils.go @@ -1,5 +1,7 @@ package utils +import "os" + // Repeats a rune given amount of times and returns the result as a string func RepeatRune(r rune, times int) (result string) { for i := 0; i < times; i++ { @@ -23,3 +25,9 @@ func TwoDByteArrayToStringArray(in [][]byte) (result []string) { } return } + +func AppendToFile(path string, value string) { + allChatsFile, _ := os.OpenFile(path, os.O_APPEND|os.O_WRONLY, 0644) + allChatsFile.WriteString(value) + allChatsFile.Close() +} diff --git a/go-src/windows.go b/go-src/windows.go index 95478c6..beac8ed 100644 --- a/go-src/windows.go +++ b/go-src/windows.go @@ -117,10 +117,22 @@ func chatWindow(values ...string) { clearScreen() currChat := getChat(values[0]) - fmt.Println(currChat) + ui.NormalBox(true, "Chats", "Direct Messages", "Account", "Logout") + ui.TextField(currChat.Name + " : " + currChat.Description) + ui.TextField("Brought to you by " + currChat.Owner.Name + " (" + currChat.Owner.Username + ")") + ui.EmptyLine() + for _, v := range currChat.Messages { + ui.TextField(v) + } + ui.PageField(0, 0) - ui.InputField("Enter anything") - defer chatsWindow() + input := ui.InputField("Message or [C/D/A/L/</>/H]") + + handled := handleInputActions(input, true) + if !handled { + currChat.addMessage(strings.TrimPrefix(input, "\\"), loggedInUser.Username) + defer chatWindow(values...) + } } func logoutWindow(...string) { |
