Fire an event to the websocket when a backup is completed

This commit is contained in:
Dane Everitt 2020-04-06 21:03:50 -07:00
parent 45d441ac32
commit 222091b68c
No known key found for this signature in database
GPG Key ID: EEA66103B3D71F53
2 changed files with 21 additions and 1 deletions

View File

@ -170,6 +170,14 @@ func (b *Backup) BackupAndNotify() error {
return err
}
// Emit an event over the socket so we can update the backup in realtime on
// the frontend for the server.
b.server.Events().PublishJson(BackupCompletedEvent, map[string]interface{}{
"uuid": b.Uuid,
"sha256_hash": resp.Sha256Hash,
"file_size": resp.FileSize,
})
return nil
}

View File

@ -1,6 +1,7 @@
package server
import (
"encoding/json"
"sync"
)
@ -50,6 +51,17 @@ func (e *EventBus) Publish(topic string, data string) {
}
}
func (e *EventBus) PublishJson(topic string, data interface{}) error {
b, err := json.Marshal(data)
if err != nil {
return err
}
e.Publish(topic, string(b))
return nil
}
// Subscribe to an emitter topic using a channel.
func (e *EventBus) Subscribe(topic string, ch chan Event) {
e.mu.Lock()
@ -74,4 +86,4 @@ func (e *EventBus) Unsubscribe(topic string, ch chan Event) {
}
}
}
}
}