From b76c8d01478bcdeb8e0f0c00ca56f577a425674b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 24 May 2018 23:26:57 +0300 Subject: Add UI preferences and simplify config save/load (ref #43) --- matrix/matrix.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'matrix/matrix.go') diff --git a/matrix/matrix.go b/matrix/matrix.go index b11b9ed..556df4e 100644 --- a/matrix/matrix.go +++ b/matrix/matrix.go @@ -39,6 +39,7 @@ import ( "maunium.net/go/gomuks/matrix/pushrules" "maunium.net/go/gomuks/matrix/rooms" "crypto/tls" + "encoding/json" ) // Container is a wrapper for a gomatrix Client and some other stuff. @@ -188,6 +189,7 @@ func (c *Container) OnLogin() { c.syncer.OnEventType("m.direct", c.HandleDirectChatInfo) c.syncer.OnEventType("m.push_rules", c.HandlePushRules) c.syncer.OnEventType("m.tag", c.HandleTag) + c.syncer.OnEventType("net.maunium.gomuks.preferences", c.HandlePreferences) c.syncer.InitDoneCallback = func() { c.config.AuthCache.InitialSyncDone = true c.config.SaveAuthCache() @@ -235,6 +237,24 @@ func (c *Container) Start() { } } +func (c *Container) HandlePreferences(source EventSource, evt *gomatrix.Event) { + orig := c.config.Preferences + rt, _ := json.Marshal(&evt.Content) + json.Unmarshal(rt, &c.config.Preferences) + debug.Print("Updated preferences:", orig, "->", c.config.Preferences) + c.ui.HandleNewPreferences() +} + +func (c *Container) SendPreferencesToMatrix() { + defer debug.Recover() + debug.Print("Sending updated preferences:", c.config.Preferences) + u := c.client.BuildURL("user", c.config.UserID, "account_data", "net.maunium.gomuks.preferences") + _, err := c.client.MakeRequest("PUT", u, &c.config.Preferences, nil) + if err != nil { + debug.Print("Failed to update preferences:", err) + } +} + // HandleMessage is the event handler for the m.room.message timeline event. func (c *Container) HandleMessage(source EventSource, evt *gomatrix.Event) { if source&EventSourceLeave != 0 { -- cgit v1.2.3