73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/openclaw/wacli/internal/wa"
|
|
)
|
|
|
|
func (a *App) refreshContacts(ctx context.Context) error {
|
|
if err := a.OpenWA(); err != nil {
|
|
return err
|
|
}
|
|
contacts, err := a.wa.GetAllContacts(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for jid, info := range contacts {
|
|
jid = canonicalJID(jid)
|
|
_ = a.db.UpsertContact(
|
|
jid.String(),
|
|
jid.User,
|
|
info.PushName,
|
|
info.FullName,
|
|
info.FirstName,
|
|
info.BusinessName,
|
|
)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (a *App) refreshGroups(ctx context.Context) error {
|
|
if err := a.OpenWA(); err != nil {
|
|
return err
|
|
}
|
|
groups, err := a.wa.GetJoinedGroups(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
now := nowUTC()
|
|
joined := map[string]bool{}
|
|
for _, g := range groups {
|
|
if g == nil {
|
|
continue
|
|
}
|
|
joined[g.JID.String()] = true
|
|
_ = a.db.UpsertGroupWithHierarchy(g.JID.String(), g.GroupName.Name, g.OwnerJID.String(), g.GroupCreated, g.IsParent, g.LinkedParentJID.String())
|
|
_ = a.db.UpsertChat(g.JID.String(), "group", g.GroupName.Name, now)
|
|
}
|
|
return a.db.MarkGroupsMissingFrom(joined, now)
|
|
}
|
|
|
|
func (a *App) refreshNewsletters(ctx context.Context) error {
|
|
if err := a.OpenWA(); err != nil {
|
|
return err
|
|
}
|
|
list, err := a.wa.GetSubscribedNewsletters(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
now := nowUTC()
|
|
for _, meta := range list {
|
|
if meta == nil {
|
|
continue
|
|
}
|
|
name := wa.NewsletterName(meta)
|
|
if name == "" {
|
|
name = meta.ID.String()
|
|
}
|
|
_ = a.db.UpsertChat(meta.ID.String(), "newsletter", name, now)
|
|
}
|
|
return nil
|
|
}
|