forked from lug/matterbridge
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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"],
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
