]> Sergey Matveev's repositories - mmc.git/commitdiff
Simpler statuses aggregation
authorSergey Matveev <stargrave@stargrave.org>
Sun, 12 Mar 2023 18:32:08 +0000 (21:32 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 12 Mar 2023 18:47:06 +0000 (21:47 +0300)
cmd/mmc/main.go
cmd/start

index c4ac2d57d3b1f21f9f5a0bcfd8aa5ad02ebf68f7..01b7d32d89408a2f69ce2234ee16f25521b31b88 100644 (file)
@@ -257,20 +257,17 @@ func main() {
                                        log.Println("OpenFile:", *userStatusFifo, err)
                                        continue
                                }
-                               var onlines []string
-                               var aways []string
+                               statuses := make(map[string][]string)
                                for name, status := range UserStatus {
-                                       switch status {
-                                       case "online":
-                                               onlines = append(onlines, name)
-                                       case "away":
-                                               aways = append(aways, name)
+                                       statuses[status] = append(statuses[status], name)
+                               }
+                               for status := range statuses {
+                                       if status == "offline" {
+                                               continue
                                        }
+                                       sort.Strings(statuses[status])
+                                       fmt.Fprintln(fd, status+":", strings.Join(statuses[status], " "))
                                }
-                               sort.Strings(onlines)
-                               sort.Strings(aways)
-                               fmt.Fprintln(fd, "O:", strings.Join(onlines, " "))
-                               fmt.Fprintln(fd, "A:", strings.Join(aways, " "))
                                fd.Close()
                        }
                }()
@@ -555,13 +552,6 @@ func main() {
                                        }
                                case model.WebsocketEventStatusChange:
                                        status := data["status"].(string)
-                                       switch status {
-                                       case "online":
-                                       case "offline":
-                                       case "away":
-                                       default:
-                                               log.Println(user.Username, "unknown status:", status)
-                                       }
                                        UserStatus[user.Username] = status
                                        if *notifyCmd != "" {
                                                exec.Command(*notifyCmd, fmt.Sprintf(
index 52e6c00810f33a88af4245625988b7e161367294..b37c2d7d7adcdbdd1df4d60576dfa3a9dd54b1a8 100755 (executable)
--- a/cmd/start
+++ b/cmd/start
@@ -12,6 +12,6 @@ mkfifo debug users/status
     -e "s#CATFILE#$cmd/catfile#" \
     -e "s#DLPANE#$cmd/dlpane#" < "$cmd"/tmux.conf > tmux.conf
 $TMUX -f tmux.conf new-session -d -n ROOT -s mmc "cat debug | tai64n | tai64nlocal"
-$TMUX split-window -h 'while : ; do cat users/status | spc -e grn,"^O:.*" -e cya,"^A:.*" ; sleep 30 ; clear ; done'
+$TMUX split-window -h 'while : ; do cat users/status | spc -e grn,"^online:.*" -e cya,"^away:.*" ; sleep 30 ; clear ; done'
 $TMUX split-window -v "$cmd/mmc/mmc -debug debug -user-status users/status -newwin $cmd/newwin -notify $cmd/notify | tai64n | tai64nlocal"
 $TMUX attach-session