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"],
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |