Skip to content

Commit 98b720e

Browse files
committed
set LoginCookiesParams.Fields
1 parent ccebf1d commit 98b720e

File tree

5 files changed

+35
-11
lines changed

5 files changed

+35
-11
lines changed

pkg/connector/client.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strings"
77
"time"
88

9+
"maunium.net/go/mautrix/bridge/status"
910
"maunium.net/go/mautrix/bridgev2"
1011
"maunium.net/go/mautrix/bridgev2/database"
1112
"maunium.net/go/mautrix/bridgev2/networkid"
@@ -41,7 +42,16 @@ func NewClient(userLogin *bridgev2.UserLogin, client *gchatmeow.Client) *GChatCl
4142
func (c *GChatClient) Connect(ctx context.Context) error {
4243
c.client.OnConnect.AddObserver(func(interface{}) { c.onConnect(ctx) })
4344
c.client.OnStreamEvent.AddObserver(func(evt interface{}) { c.onStreamEvent(ctx, evt) })
44-
return c.client.Connect(ctx, time.Duration(90)*time.Minute)
45+
46+
err := c.client.Connect(ctx, time.Duration(90)*time.Minute)
47+
if err != nil {
48+
c.userLogin.BridgeState.Send(status.BridgeState{
49+
StateEvent: status.StateBadCredentials,
50+
Error: "googlechat-invalid-credentials",
51+
Message: err.Error(),
52+
})
53+
}
54+
return err
4555
}
4656

4757
func (c *GChatClient) Disconnect() {

pkg/connector/handlegchat.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,15 @@ func (c *GChatClient) onStreamEvent(ctx context.Context, raw any) {
7070
EventMeta: c.makeEventMeta(evt, bridgev2.RemoteEventTyping, state.UserId.Id, state.StartTimestampUsec),
7171
})
7272
case proto.Event_READ_RECEIPT_CHANGED:
73-
receipts := evt.Body.GetReadReceiptChanged().ReadReceiptSet.ReadReceipts
74-
for _, receipt := range receipts {
75-
c.userLogin.Bridge.QueueRemoteEvent(c.userLogin, &simplevent.Receipt{
76-
EventMeta: c.makeEventMeta(evt, bridgev2.RemoteEventReadReceipt, receipt.User.UserId.Id, receipt.ReadTimeMicros),
77-
ReadUpTo: time.UnixMicro(receipt.ReadTimeMicros),
78-
})
73+
changed := evt.Body.GetReadReceiptChanged()
74+
if changed != nil {
75+
receipts := changed.ReadReceiptSet.ReadReceipts
76+
for _, receipt := range receipts {
77+
c.userLogin.Bridge.QueueRemoteEvent(c.userLogin, &simplevent.Receipt{
78+
EventMeta: c.makeEventMeta(evt, bridgev2.RemoteEventReadReceipt, receipt.User.UserId.Id, receipt.ReadTimeMicros),
79+
ReadUpTo: time.UnixMicro(receipt.ReadTimeMicros),
80+
})
81+
}
7982
}
8083
case proto.Event_GROUP_UPDATED:
8184
c.handleGroupUpdated(ctx, evt)

pkg/connector/login.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,23 @@ type UserLoginMetadata struct {
5151
var _ bridgev2.LoginProcessCookies = (*GChatCookieLogin)(nil)
5252

5353
func (gl *GChatCookieLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) {
54+
fields := make([]bridgev2.LoginCookieField, 5)
55+
for i, key := range gchatmeow.CookieNames {
56+
fields[i] = bridgev2.LoginCookieField{
57+
ID: key,
58+
Required: true,
59+
Sources: []bridgev2.LoginCookieFieldSource{
60+
{Type: bridgev2.LoginCookieTypeCookie, Name: key},
61+
},
62+
}
63+
}
5464
step := &bridgev2.LoginStep{
5565
Type: bridgev2.LoginStepTypeCookies,
5666
StepID: LoginStepIDCookies,
5767
Instructions: "Enter a JSON object with your cookies, or a cURL command copied from browser devtools.",
5868
CookiesParams: &bridgev2.LoginCookiesParams{
59-
URL: "https://chat.google.com/",
69+
URL: "https://chat.google.com/",
70+
Fields: fields,
6071
},
6172
}
6273
return step, nil

pkg/gchatmeow/cookies.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ type Cookies struct {
1313
}
1414

1515
var (
16-
cookies = []string{"COMPASS", "SSID", "SID", "OSID", "HSID"}
16+
CookieNames = []string{"COMPASS", "SSID", "SID", "OSID", "HSID"}
1717
)
1818

1919
func (c *Cookies) UpdateValues(values map[string]string) {
2020
r := reflect.ValueOf(c)
21-
for _, key := range cookies {
21+
for _, key := range CookieNames {
2222
field := reflect.Indirect(r).FieldByName(key)
2323
field.SetString(values[key])
2424
}

pkg/msgconv/from-gchat.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func (mc *MessageConverter) ToMatrix(ctx context.Context, portal *bridgev2.Porta
5757
}
5858
}
5959

60-
// cm.MergeCaption()
60+
cm.MergeCaption()
6161

6262
return cm, nil
6363
}

0 commit comments

Comments
 (0)