pins: bridge from Telegram -> Matrix
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"maunium.net/go/mautrix/bridgev2/database"
|
||||
"maunium.net/go/mautrix/bridgev2/networkid"
|
||||
"maunium.net/go/mautrix/bridgev2/simplevent"
|
||||
"maunium.net/go/mautrix/event"
|
||||
|
||||
"go.mau.fi/mautrix-telegram/pkg/connector/ids"
|
||||
)
|
||||
@@ -40,9 +41,24 @@ func (t *TelegramClient) SyncChats(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := t.resetPinnedDialogs(ctx, dialogs.GetDialogs()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return t.handleDialogs(ctx, dialogs, t.main.Config.Sync.CreateLimit)
|
||||
}
|
||||
|
||||
func (t *TelegramClient) resetPinnedDialogs(ctx context.Context, dialogs []tg.DialogClass) error {
|
||||
t.userLogin.Metadata.(*UserLoginMetadata).PinnedDialogs = nil
|
||||
for _, dialog := range dialogs {
|
||||
if dialog.GetPinned() {
|
||||
portalKey := t.makePortalKeyFromPeer(dialog.GetPeer())
|
||||
t.userLogin.Metadata.(*UserLoginMetadata).PinnedDialogs = append(t.userLogin.Metadata.(*UserLoginMetadata).PinnedDialogs, portalKey.ID)
|
||||
}
|
||||
}
|
||||
return t.userLogin.Save(ctx)
|
||||
}
|
||||
|
||||
func (t *TelegramClient) handleDialogs(ctx context.Context, dialogs tg.ModifiedMessagesDialogs, createLimit int) error {
|
||||
log := zerolog.Ctx(ctx)
|
||||
|
||||
@@ -106,6 +122,9 @@ func (t *TelegramClient) handleDialogs(ctx context.Context, dialogs tg.ModifiedM
|
||||
} else {
|
||||
userLocalInfo.MutedUntil = &bridgev2.Unmuted
|
||||
}
|
||||
if dialog.Pinned {
|
||||
userLocalInfo.Tag = ptr.Ptr(event.RoomTagFavourite)
|
||||
}
|
||||
|
||||
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatResync{
|
||||
ChatInfo: &bridgev2.ChatInfo{Name: &portal.Name, UserLocal: &userLocalInfo},
|
||||
|
||||
Reference in New Issue
Block a user