]> git.giacomolli.uk - onechat/blobdiff - daemon.go
Submit root events through the local socket
[onechat] / daemon.go
index 7945c2b5638a49f81aa4f1369bca67ea0327cadd..a6b08b6305b3e1b1254b22fa6554bc430a76d013 100644 (file)
--- a/daemon.go
+++ b/daemon.go
@@ -2,6 +2,7 @@ package main
 
 import (
        "bufio"
+       "bytes"
        "context"
        "encoding/json"
        "errors"
@@ -108,7 +109,22 @@ func (h *DaemonHub) read(ctx context.Context, client *DaemonClient, l *TurnLoop)
 
                err := json.Unmarshal(scanner.Bytes(), &request)
                if err == nil {
-                       if request.Type == "backup" {
+                       switch request.Type {
+                       case "notify":
+                               var receipt Event
+
+                               decoder := json.NewDecoder(bytes.NewReader(scanner.Bytes()))
+                               decoder.DisallowUnknownFields()
+
+                               err = decoder.Decode(&request)
+                               if err == nil {
+                                       receipt, err = l.messages.Notify(request.Notify)
+                               }
+
+                               if err == nil {
+                                       h.Send(client, receipt)
+                               }
+                       case "backup":
                                var size int64
 
                                size, err = backupData(ctx, filepath.Dir(l.agent.dir), request.Text, h.whatsapp, h.snapshot)
@@ -118,7 +134,7 @@ func (h *DaemonHub) read(ctx context.Context, client *DaemonClient, l *TurnLoop)
                                                Text: fmt.Sprintf("%s (%d bytes)", request.Text, size),
                                        })
                                }
-                       } else {
+                       default:
                                err = daemonRunRequest(l, h.whatsapp, request, func(text string) {
                                        h.Send(client, Event{
                                                Kind: "notice",