Update mautrix-go (and update to new metadata system)
This commit is contained in:
committed by
Sumner Evans
parent
92b8541654
commit
aa45619244
@@ -6,10 +6,10 @@ require (
|
|||||||
github.com/gotd/td v0.102.0
|
github.com/gotd/td v0.102.0
|
||||||
github.com/rs/zerolog v1.33.0
|
github.com/rs/zerolog v1.33.0
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
go.mau.fi/util v0.5.1-0.20240710154926-931b33d6d530
|
go.mau.fi/util v0.5.1-0.20240713134429-03648b3ede41
|
||||||
go.mau.fi/zerozap v0.1.1
|
go.mau.fi/zerozap v0.1.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.27.0
|
||||||
maunium.net/go/mautrix v0.19.0-beta.1.0.20240706124659-b4057a26c3ed
|
maunium.net/go/mautrix v0.19.0-beta.1.0.20240714121051-fb9fb5ae4405
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|||||||
@@ -67,8 +67,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
|
|||||||
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
|
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
|
||||||
github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg=
|
github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg=
|
||||||
github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
||||||
go.mau.fi/util v0.5.1-0.20240710154926-931b33d6d530 h1:ZWMrLC+Fn2AmKL8HM04YY0zyMDMOagQZVukpxp0rmic=
|
go.mau.fi/util v0.5.1-0.20240713134429-03648b3ede41 h1:suJqVZoWuiqmMo/xojAGSxz04fOYYu0oE7sFPrf2L5c=
|
||||||
go.mau.fi/util v0.5.1-0.20240710154926-931b33d6d530/go.mod h1:DsJzUrJAG53lCZnnYvq9/mOyLuPScWwYhvETiTrpdP4=
|
go.mau.fi/util v0.5.1-0.20240713134429-03648b3ede41/go.mod h1:DsJzUrJAG53lCZnnYvq9/mOyLuPScWwYhvETiTrpdP4=
|
||||||
go.mau.fi/zeroconfig v0.1.2 h1:DKOydWnhPMn65GbXZOafgkPm11BvFashZWLct0dGFto=
|
go.mau.fi/zeroconfig v0.1.2 h1:DKOydWnhPMn65GbXZOafgkPm11BvFashZWLct0dGFto=
|
||||||
go.mau.fi/zeroconfig v0.1.2/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70=
|
go.mau.fi/zeroconfig v0.1.2/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70=
|
||||||
go.mau.fi/zerozap v0.1.1 h1:mxE/dW4wtkqBYOXOEEzXldk5qKB+ahsZXjoTGnvEhZQ=
|
go.mau.fi/zerozap v0.1.1 h1:mxE/dW4wtkqBYOXOEEzXldk5qKB+ahsZXjoTGnvEhZQ=
|
||||||
@@ -108,8 +108,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
|
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
|
||||||
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
|
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
|
||||||
maunium.net/go/mautrix v0.19.0-beta.1.0.20240706124659-b4057a26c3ed h1:3F4YHSFaUJ9N0l4zNGeXZvnTBIHC9PDVOWOFiOvNn3Y=
|
maunium.net/go/mautrix v0.19.0-beta.1.0.20240714121051-fb9fb5ae4405 h1:ltVzYFIc2mef32PG3qXMlpddreHToSqmZFSdEKAxjiU=
|
||||||
maunium.net/go/mautrix v0.19.0-beta.1.0.20240706124659-b4057a26c3ed/go.mod h1:bNQrvIftiwJ+7OjSh+Gza5xcncq1ooHk6oyDWq4B4sg=
|
maunium.net/go/mautrix v0.19.0-beta.1.0.20240714121051-fb9fb5ae4405/go.mod h1:ldNVOQXaljMk4YLzlohp+DniMQtCSzTVcwjEFBlYQLM=
|
||||||
nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
|
nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
|
||||||
nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
|
nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
|
||||||
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
|
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
|
||||||
|
|||||||
+17
-12
@@ -14,6 +14,7 @@ import (
|
|||||||
"go.mau.fi/zerozap"
|
"go.mau.fi/zerozap"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"maunium.net/go/mautrix/bridgev2"
|
"maunium.net/go/mautrix/bridgev2"
|
||||||
|
"maunium.net/go/mautrix/bridgev2/database"
|
||||||
"maunium.net/go/mautrix/bridgev2/networkid"
|
"maunium.net/go/mautrix/bridgev2/networkid"
|
||||||
|
|
||||||
"go.mau.fi/mautrix-telegram/pkg/connector/ids"
|
"go.mau.fi/mautrix-telegram/pkg/connector/ids"
|
||||||
@@ -187,10 +188,10 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
var name string
|
var name string
|
||||||
|
roomType := database.RoomTypeDM
|
||||||
memberList := &bridgev2.ChatMemberList{
|
memberList := &bridgev2.ChatMemberList{
|
||||||
IsFull: true, // TODO not true for channels
|
IsFull: true, // TODO not true for channels
|
||||||
}
|
}
|
||||||
var isSpace, isDM bool
|
|
||||||
var avatar *bridgev2.Avatar
|
var avatar *bridgev2.Avatar
|
||||||
|
|
||||||
switch peerType {
|
switch peerType {
|
||||||
@@ -221,9 +222,9 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
isDM = true
|
|
||||||
}
|
}
|
||||||
case ids.PeerTypeChat:
|
case ids.PeerTypeChat:
|
||||||
|
roomType = database.RoomTypeGroupDM
|
||||||
fullChat, err := t.client.API().MessagesGetFullChat(ctx, id)
|
fullChat, err := t.client.API().MessagesGetFullChat(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -265,11 +266,10 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &bridgev2.ChatInfo{
|
return &bridgev2.ChatInfo{
|
||||||
Name: &name,
|
Name: &name,
|
||||||
Avatar: avatar,
|
Avatar: avatar,
|
||||||
Members: memberList,
|
Members: memberList,
|
||||||
IsDirectChat: &isDM,
|
Type: &roomType,
|
||||||
IsSpace: &isSpace,
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,11 +315,16 @@ func (t *TelegramClient) getUserInfoFromTelegramUser(user *tg.User) (*bridgev2.U
|
|||||||
|
|
||||||
name := util.FormatFullName(user.FirstName, user.LastName)
|
name := util.FormatFullName(user.FirstName, user.LastName)
|
||||||
return &bridgev2.UserInfo{
|
return &bridgev2.UserInfo{
|
||||||
IsBot: &user.Bot,
|
IsBot: &user.Bot,
|
||||||
Name: &name,
|
Name: &name,
|
||||||
Avatar: avatar,
|
Avatar: avatar,
|
||||||
Identifiers: identifiers,
|
Identifiers: identifiers,
|
||||||
ExtraUpdates: bridgev2.SimpleMetadataUpdater[*bridgev2.Ghost]("fi.mau.telegram.is_premium", user.Premium),
|
ExtraUpdates: func(ctx context.Context, ghost *bridgev2.Ghost) (changed bool) {
|
||||||
|
meta := ghost.Metadata.(*GhostMetadata)
|
||||||
|
changed = meta.IsPremium != user.Premium
|
||||||
|
meta.IsPremium = user.Premium
|
||||||
|
return changed
|
||||||
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
up "go.mau.fi/util/configupgrade"
|
up "go.mau.fi/util/configupgrade"
|
||||||
"maunium.net/go/mautrix/bridgev2"
|
"maunium.net/go/mautrix/bridgev2"
|
||||||
|
"maunium.net/go/mautrix/bridgev2/database"
|
||||||
|
|
||||||
"go.mau.fi/mautrix-telegram/pkg/connector/media"
|
"go.mau.fi/mautrix-telegram/pkg/connector/media"
|
||||||
)
|
)
|
||||||
@@ -49,3 +50,25 @@ func (tg *TelegramConnector) ValidateConfig() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tg *TelegramConnector) GetDBMetaTypes() database.MetaTypes {
|
||||||
|
return database.MetaTypes{
|
||||||
|
Ghost: func() any {
|
||||||
|
return &GhostMetadata{}
|
||||||
|
},
|
||||||
|
Portal: nil,
|
||||||
|
Message: nil,
|
||||||
|
Reaction: nil,
|
||||||
|
UserLogin: func() any {
|
||||||
|
return &UserLoginMetadata{}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type GhostMetadata struct {
|
||||||
|
IsPremium bool `json:"is_premium"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserLoginMetadata struct {
|
||||||
|
Phone string `json:"phone"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -193,10 +193,8 @@ func (p *PhoneLogin) handleAuthSuccess(ctx context.Context, authorization *tg.Au
|
|||||||
userLoginID := ids.MakeUserLoginID(authorization.User.GetID())
|
userLoginID := ids.MakeUserLoginID(authorization.User.GetID())
|
||||||
ul, err := p.user.NewLogin(ctx, &database.UserLogin{
|
ul, err := p.user.NewLogin(ctx, &database.UserLogin{
|
||||||
ID: userLoginID,
|
ID: userLoginID,
|
||||||
Metadata: database.UserLoginMetadata{
|
Metadata: UserLoginMetadata{
|
||||||
Extra: map[string]any{
|
Phone: p.phone,
|
||||||
"phone": p.phone,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ func (t *TelegramClient) getReactionLimit(ctx context.Context, sender networkid.
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if isPremium, ok := ghost.Metadata.Extra["fi.mau.telegram.is_premium"].(bool); ok && isPremium {
|
if ghost.Metadata.(*GhostMetadata).IsPremium {
|
||||||
return int(config["reactions_user_max_premium"].(float64)), nil
|
return int(config["reactions_user_max_premium"].(float64)), nil
|
||||||
} else {
|
} else {
|
||||||
return int(config["reactions_user_max_default"].(float64)), nil
|
return int(config["reactions_user_max_default"].(float64)), nil
|
||||||
|
|||||||
Reference in New Issue
Block a user