Skip to content

Commit

Permalink
dm room name and member list
Browse files Browse the repository at this point in the history
  • Loading branch information
rnons committed Nov 29, 2024
1 parent 74a4761 commit f8bdf47
Showing 1 changed file with 25 additions and 13 deletions.
38 changes: 25 additions & 13 deletions pkg/connector/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ import (
"context"

"go.mau.fi/mautrix-googlechat/pkg/gchatmeow"
"go.mau.fi/mautrix-googlechat/pkg/gchatmeow/types"
"go.mau.fi/util/ptr"

"maunium.net/go/mautrix/bridgev2"
"maunium.net/go/mautrix/bridgev2/database"
"maunium.net/go/mautrix/bridgev2/networkid"
"maunium.net/go/mautrix/bridgev2/simplevent"
)
Expand All @@ -20,15 +23,15 @@ var (
)

func (c *GChatClient) Connect(ctx context.Context) error {
_, err := c.Client.LoadMessagesPage()
initialData, err := c.Client.LoadMessagesPage()
if err != nil {
return err
}
err = c.Client.Connect()
if err != nil {
return err
}
return c.onConnect(ctx)
return c.onConnect(ctx, initialData)
}

func (c *GChatClient) Disconnect() {
Expand Down Expand Up @@ -57,31 +60,40 @@ func (c *GChatClient) IsThisUser(ctx context.Context, userID networkid.UserID) b
func (c *GChatClient) LogoutRemote(ctx context.Context) {
}

func (c *GChatClient) onConnect(ctx context.Context) error {
res, err := c.Client.GetPaginatedWorlds(nil)
if err != nil {
return err
}
for _, item := range res.WorldItems {
// TODO room name for DM, and full members list
name := item.GetRoomName()
func (c *GChatClient) onConnect(ctx context.Context, initialData *types.InitialConfigData) error {
for _, item := range initialData.GroupList.SingleDms {
name := item.Name
memberMap := map[networkid.UserID]bridgev2.ChatMember{}
memberMap[networkid.UserID(c.UserLogin.ID)] = bridgev2.ChatMember{
currentUserID := networkid.UserID(c.UserLogin.ID)
memberMap[currentUserID] = bridgev2.ChatMember{
EventSender: bridgev2.EventSender{
IsFromMe: true,
Sender: networkid.UserID(c.UserLogin.ID),
Sender: currentUserID,
},
}
for _, member := range item.DmMembers {
memberUserID := networkid.UserID(member.Id.Id)
memberMap[memberUserID] = bridgev2.ChatMember{
EventSender: bridgev2.EventSender{
IsFromMe: memberUserID == currentUserID,
Sender: memberUserID,
},
UserInfo: &bridgev2.UserInfo{
Name: &member.Fullname,
},
}
}
c.UserLogin.Bridge.QueueRemoteEvent(c.UserLogin, &simplevent.ChatResync{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatResync,
PortalKey: networkid.PortalKey{
ID: networkid.PortalID(item.GroupId.String()),
ID: networkid.PortalID(item.Id.SyntheticId),
Receiver: c.UserLogin.ID,
},
CreatePortal: true,
},
ChatInfo: &bridgev2.ChatInfo{
Type: ptr.Ptr(database.RoomTypeDM),
Name: &name,
Members: &bridgev2.ChatMemberList{
MemberMap: memberMap,
Expand Down

0 comments on commit f8bdf47

Please sign in to comment.