File tree 3 files changed +48
-3
lines changed
3 files changed +48
-3
lines changed Original file line number Diff line number Diff line change 7
7
"time"
8
8
9
9
"maunium.net/go/mautrix/bridgev2"
10
+ "maunium.net/go/mautrix/bridgev2/database"
10
11
"maunium.net/go/mautrix/bridgev2/networkid"
11
12
"maunium.net/go/mautrix/bridgev2/simplevent"
12
13
@@ -125,8 +126,12 @@ func (c *GChatClient) onConnect(ctx context.Context) {
125
126
for _ , item := range res .WorldItems {
126
127
name := item .RoomName
127
128
var gcMembers []* proto.UserId
129
+ roomType := database .RoomTypeGroupDM
130
+ isDm := false
128
131
if item .DmMembers != nil {
132
+ roomType = database .RoomTypeDM
129
133
gcMembers = item .DmMembers .Members
134
+ isDm = true
130
135
for _ , member := range item .DmMembers .Members {
131
136
if member .Id != string (c .userLogin .ID ) {
132
137
name = c .users [member .Id ].Name
@@ -162,7 +167,8 @@ func (c *GChatClient) onConnect(ctx context.Context) {
162
167
},
163
168
ChatInfo : & bridgev2.ChatInfo {
164
169
Name : & name ,
165
- Members : c .gcMembersToMatrix (gcMembers ),
170
+ Members : c .gcMembersToMatrix (isDm , gcMembers ),
171
+ Type : & roomType ,
166
172
},
167
173
})
168
174
Original file line number Diff line number Diff line change @@ -7,10 +7,15 @@ import (
7
7
"go.mau.fi/mautrix-googlechat/pkg/gchatmeow/proto"
8
8
)
9
9
10
- func (c * GChatClient ) gcMembersToMatrix (gcMembers []* proto.UserId ) * bridgev2.ChatMemberList {
10
+ func (c * GChatClient ) gcMembersToMatrix (isDm bool , gcMembers []* proto.UserId ) * bridgev2.ChatMemberList {
11
+ var otherUserId string
11
12
memberMap := map [networkid.UserID ]bridgev2.ChatMember {}
12
13
for _ , gcMember := range gcMembers {
13
14
userId := networkid .UserID (gcMember .Id )
15
+ if isDm && gcMember .Id != string (c .userLogin .ID ) {
16
+ otherUserId = gcMember .Id
17
+
18
+ }
14
19
memberMap [userId ] = bridgev2.ChatMember {
15
20
EventSender : bridgev2.EventSender {
16
21
IsFromMe : gcMember .Id == string (c .userLogin .ID ),
@@ -20,6 +25,7 @@ func (c *GChatClient) gcMembersToMatrix(gcMembers []*proto.UserId) *bridgev2.Cha
20
25
}
21
26
22
27
return & bridgev2.ChatMemberList {
23
- MemberMap : memberMap ,
28
+ MemberMap : memberMap ,
29
+ OtherUserID : networkid .UserID (otherUserId ),
24
30
}
25
31
}
Original file line number Diff line number Diff line change 9
9
10
10
pb "google.golang.org/protobuf/proto"
11
11
"maunium.net/go/mautrix/bridgev2"
12
+ "maunium.net/go/mautrix/bridgev2/networkid"
12
13
"maunium.net/go/mautrix/event"
13
14
14
15
"go.mau.fi/mautrix-googlechat/pkg/gchatmeow"
@@ -180,6 +181,38 @@ func annotationsToMatrix(
180
181
default :
181
182
skipEntity = true
182
183
}
184
+ } else if annotation .GetUrlMetadata () != nil {
185
+ fmt .Fprintf (& bodyHtml , "<a href='%s'>%s</a>" , annotation .GetUrlMetadata ().Url .Url , entityText )
186
+ } else if annotation .GetUserMentionMetadata () != nil {
187
+ if annotation .GetUserMentionMetadata ().Type == proto .UserMentionMetadata_MENTION_ALL {
188
+ bodyHtml .WriteString ("@room" )
189
+ } else {
190
+ gcid := annotation .GetUserMentionMetadata ().Id .Id
191
+ dmPortals , err := portal .Bridge .GetDMPortalsWith (ctx , networkid .UserID (gcid ))
192
+ if err != nil {
193
+ return "" , err
194
+ }
195
+
196
+ if len (dmPortals ) != 0 {
197
+ fmt .Fprintf (& bodyHtml ,
198
+ `<a href="%s">%s</a>` ,
199
+ dmPortals [0 ].MXID .URI ().MatrixToURL (),
200
+ dmPortals [0 ].Name ,
201
+ )
202
+ } else {
203
+ userLogin := portal .Bridge .GetCachedUserLoginByID (networkid .UserLoginID (gcid ))
204
+ if userLogin != nil {
205
+ fmt .Fprintf (& bodyHtml ,
206
+ `<a href="%s">%s</a>` ,
207
+ userLogin .UserMXID .URI ().MatrixToURL (),
208
+ entityText ,
209
+ )
210
+
211
+ } else {
212
+ bodyHtml .WriteString (entityText )
213
+ }
214
+ }
215
+ }
183
216
} else {
184
217
skipEntity = true
185
218
}
You can’t perform that action at this time.
0 commit comments