aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-07-09 17:04:28 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-07-09 17:04:49 +0300
commit7457f7af8effa21ecf328058475e944e46075670 (patch)
tree0f82e043d693871e72b8c02e5a73b72b8d16177c
parent1490ddda1d20ef23a4e5ec908405869073abbf8d (diff)
downloadctfc-7457f7af8effa21ecf328058475e944e46075670.tar
ctfc-7457f7af8effa21ecf328058475e944e46075670.tar.gz
ctfc-7457f7af8effa21ecf328058475e944e46075670.zip
Implemented sending chat messages and implemented chat UI
-rw-r--r--go-src/chat.go14
-rw-r--r--go-src/utils/utils.go8
-rw-r--r--go-src/windows.go18
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) {