diff options
author | Wim <wim@42.be> | 2022-03-20 02:20:54 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2022-03-20 14:57:48 +0100 |
commit | 496d5b4ec7f5f4afae6199f928675d14d18de015 (patch) | |
tree | 3a649c80a76f0ffc33e6b3a63c0e65e892169cde /vendor/github.com/Rhymen/go-whatsapp/store.go | |
parent | 2623a412c42a81104b97ae8c81a5f66760fee4b6 (diff) | |
download | matterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.tar.gz matterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.tar.bz2 matterbridge-msglm-496d5b4ec7f5f4afae6199f928675d14d18de015.zip |
Add whatsappmulti buildflag for whatsapp with multidevice support (whatsapp)
Diffstat (limited to 'vendor/github.com/Rhymen/go-whatsapp/store.go')
-rw-r--r-- | vendor/github.com/Rhymen/go-whatsapp/store.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/github.com/Rhymen/go-whatsapp/store.go b/vendor/github.com/Rhymen/go-whatsapp/store.go new file mode 100644 index 00000000..994d0581 --- /dev/null +++ b/vendor/github.com/Rhymen/go-whatsapp/store.go @@ -0,0 +1,80 @@ +package whatsapp + +import ( + "github.com/Rhymen/go-whatsapp/binary" + "strings" +) + +type Store struct { + Contacts map[string]Contact + Chats map[string]Chat +} + +type Contact struct { + Jid string + Notify string + Name string + Short string +} + +type Chat struct { + Jid string + Name string + Unread string + LastMessageTime string + IsMuted string + IsMarkedSpam string +} + +func newStore() *Store { + return &Store{ + make(map[string]Contact), + make(map[string]Chat), + } +} + +func (wac *Conn) updateContacts(contacts interface{}) { + c, ok := contacts.([]interface{}) + if !ok { + return + } + + for _, contact := range c { + contactNode, ok := contact.(binary.Node) + if !ok { + continue + } + + jid := strings.Replace(contactNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) + wac.Store.Contacts[jid] = Contact{ + jid, + contactNode.Attributes["notify"], + contactNode.Attributes["name"], + contactNode.Attributes["short"], + } + } +} + +func (wac *Conn) updateChats(chats interface{}) { + c, ok := chats.([]interface{}) + if !ok { + return + } + + for _, chat := range c { + chatNode, ok := chat.(binary.Node) + if !ok { + continue + } + + jid := strings.Replace(chatNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) + wac.Store.Chats[jid] = Chat{ + jid, + chatNode.Attributes["name"], + chatNode.Attributes["count"], + chatNode.Attributes["t"], + chatNode.Attributes["mute"], + chatNode.Attributes["spam"], + } + } +} |