From 08669e118dd0f1c11ddc0e4f9d94226b0c5d434b Mon Sep 17 00:00:00 2001 From: JJTech0130 Date: Fri, 26 Jul 2024 08:17:53 -0400 Subject: [PATCH] update mautrix dependency uses new typed metadata --- cmd/lscli/go.mod | 12 +-- cmd/lscli/go.sum | 24 +++--- go.mod | 18 ++-- go.sum | 36 ++++---- pkg/connector/client.go | 133 +++++++++++++++-------------- pkg/connector/connector.go | 21 +++++ pkg/connector/login.go | 13 +-- pkg/connector/msgconv/from-meta.go | 7 -- 8 files changed, 140 insertions(+), 124 deletions(-) diff --git a/cmd/lscli/go.mod b/cmd/lscli/go.mod index 8b59daf..aa71558 100644 --- a/cmd/lscli/go.mod +++ b/cmd/lscli/go.mod @@ -9,7 +9,7 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/zyedidia/clipboard v1.0.4 go.mau.fi/mautrix-meta v0.2.0 - go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7 + go.mau.fi/util v0.6.0 ) require ( @@ -21,10 +21,10 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - go.mau.fi/libsignal v0.1.0 // indirect - go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sys v0.21.0 // indirect + go.mau.fi/libsignal v0.1.1 // indirect + go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sys v0.22.0 // indirect google.golang.org/protobuf v1.34.2 // indirect ) diff --git a/cmd/lscli/go.sum b/cmd/lscli/go.sum index 24db3a7..31dc485 100644 --- a/cmd/lscli/go.sum +++ b/cmd/lscli/go.sum @@ -36,21 +36,21 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/zyedidia/clipboard v1.0.4 h1:r6GUQOyPtIaApRLeD56/U+2uJbXis6ANGbKWCljULEo= github.com/zyedidia/clipboard v1.0.4/go.mod h1:zykFnZUXX0ErxqvYLUFEq7QDJKId8rmh2FgD0/Y8cjA= -go.mau.fi/libsignal v0.1.0 h1:vAKI/nJ5tMhdzke4cTK1fb0idJzz1JuEIpmjprueC+c= -go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I= -go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7 h1:1avw60QZMpzzMMisf6Jqm+WSycZ59OHJA5IlSXHCCPE= -go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7/go.mod h1:DsJzUrJAG53lCZnnYvq9/mOyLuPScWwYhvETiTrpdP4= -go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c h1:yiULssyKHJcFA1fae2NJkwU7QW4EHQs7QEWoIqfqilA= -go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c/go.mod h1:0+65CYaE6r4dWzr0dN8i+UZKy0gIfJ79VuSqIl0nKRM= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +go.mau.fi/libsignal v0.1.1 h1:m/0PGBh4QKP/I1MQ44ti4C0fMbLMuHb95cmDw01FIpI= +go.mau.fi/libsignal v0.1.1/go.mod h1:QLs89F/OA3ThdSL2Wz2p+o+fi8uuQUz0e1BRa6ExdBw= +go.mau.fi/util v0.6.0 h1:W6SyB3Bm/GjenQ5iq8Z8WWdN85Gy2xS6L0wmnR7SVjg= +go.mau.fi/util v0.6.0/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= +go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552 h1:3cI+n5D79nOlS3hef6PD1D8wkXEyxSIW0mvotE8ymVE= +go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552/go.mod h1:BhHKalSq0qNtSCuGIUIvoJyU5KbT4a7k8DQ5yw1Ssk4= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= diff --git a/go.mod b/go.mod index 574ebf3..af1e440 100644 --- a/go.mod +++ b/go.mod @@ -11,16 +11,16 @@ require ( github.com/mattn/go-sqlite3 v1.14.22 github.com/rs/zerolog v1.33.0 github.com/tidwall/gjson v1.17.1 - go.mau.fi/libsignal v0.1.0 - go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7 - go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c - golang.org/x/crypto v0.24.0 - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 + go.mau.fi/libsignal v0.1.1 + go.mau.fi/util v0.6.0 + go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552 + golang.org/x/crypto v0.25.0 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 golang.org/x/image v0.18.0 - golang.org/x/net v0.26.0 + golang.org/x/net v0.27.0 google.golang.org/protobuf v1.34.2 maunium.net/go/mauflag v1.0.0 - maunium.net/go/mautrix v0.19.0-beta.1.0.20240702082021-74c0110ee0e4 + maunium.net/go/mautrix v0.19.0 ) require ( @@ -34,8 +34,8 @@ require ( github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/yuin/goldmark v1.7.4 // indirect - go.mau.fi/zeroconfig v0.1.2 // indirect - golang.org/x/sys v0.21.0 // indirect + go.mau.fi/zeroconfig v0.1.3 // indirect + golang.org/x/sys v0.22.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 34f4221..eaed049 100644 --- a/go.sum +++ b/go.sum @@ -51,27 +51,27 @@ 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/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= -go.mau.fi/libsignal v0.1.0 h1:vAKI/nJ5tMhdzke4cTK1fb0idJzz1JuEIpmjprueC+c= -go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I= -go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7 h1:1avw60QZMpzzMMisf6Jqm+WSycZ59OHJA5IlSXHCCPE= -go.mau.fi/util v0.5.1-0.20240702075351-577617730cb7/go.mod h1:DsJzUrJAG53lCZnnYvq9/mOyLuPScWwYhvETiTrpdP4= -go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c h1:yiULssyKHJcFA1fae2NJkwU7QW4EHQs7QEWoIqfqilA= -go.mau.fi/whatsmeow v0.0.0-20240625083845-6acab596dd8c/go.mod h1:0+65CYaE6r4dWzr0dN8i+UZKy0gIfJ79VuSqIl0nKRM= -go.mau.fi/zeroconfig v0.1.2 h1:DKOydWnhPMn65GbXZOafgkPm11BvFashZWLct0dGFto= -go.mau.fi/zeroconfig v0.1.2/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +go.mau.fi/libsignal v0.1.1 h1:m/0PGBh4QKP/I1MQ44ti4C0fMbLMuHb95cmDw01FIpI= +go.mau.fi/libsignal v0.1.1/go.mod h1:QLs89F/OA3ThdSL2Wz2p+o+fi8uuQUz0e1BRa6ExdBw= +go.mau.fi/util v0.6.0 h1:W6SyB3Bm/GjenQ5iq8Z8WWdN85Gy2xS6L0wmnR7SVjg= +go.mau.fi/util v0.6.0/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= +go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552 h1:3cI+n5D79nOlS3hef6PD1D8wkXEyxSIW0mvotE8ymVE= +go.mau.fi/whatsmeow v0.0.0-20240716084021-eb41d1f09552/go.mod h1:BhHKalSq0qNtSCuGIUIvoJyU5KbT4a7k8DQ5yw1Ssk4= +go.mau.fi/zeroconfig v0.1.3 h1:As9wYDKmktjmNZW5i1vn8zvJlmGKHeVxHVIBMXsm4kM= +go.mau.fi/zeroconfig v0.1.3/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= @@ -83,5 +83,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 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/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= -maunium.net/go/mautrix v0.19.0-beta.1.0.20240702082021-74c0110ee0e4 h1:b8e9GWo8Ct+T/5fXKdUyjiOZNuAaqatzJgy187jfq9Q= -maunium.net/go/mautrix v0.19.0-beta.1.0.20240702082021-74c0110ee0e4/go.mod h1:bNQrvIftiwJ+7OjSh+Gza5xcncq1ooHk6oyDWq4B4sg= +maunium.net/go/mautrix v0.19.0 h1:67eSJWam93mw44Q0/1SiOG7zQzXMUknUv5UaWkrODDU= +maunium.net/go/mautrix v0.19.0/go.mod h1:UE+mSQ4sDUuJMbjN0aB9EjQSGgXd48AzMvZ6+QJV1k8= diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 5338c7e..a50874c 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -46,22 +46,6 @@ type MetaClient struct { messageConverter *msgconv.MessageConverter } -func cookiesFromMetadata(metadata map[string]interface{}) *cookies.Cookies { - platform := types.Platform(metadata["platform"].(float64)) - - m := make(map[string]string) - for k, v := range metadata["cookies"].(map[string]interface{}) { - m[k] = v.(string) - } - - c := &cookies.Cookies{ - Platform: platform, - } - c.UpdateValues(m) - - return c -} - // Why are these separate? func platformToMode(platform types.Platform) config.BridgeMode { switch platform { @@ -76,14 +60,13 @@ func platformToMode(platform types.Platform) config.BridgeMode { func NewMetaClient(ctx context.Context, main *MetaConnector, login *bridgev2.UserLogin) (*MetaClient, error) { log := zerolog.Ctx(ctx).With().Str("component", "meta_client").Logger() - log.Debug().Any("metadata", login.Metadata.Extra).Msg("Creating new Meta client") - var c *cookies.Cookies - if _, ok := login.Metadata.Extra["cookies"].(map[string]interface{}); ok { - c = cookiesFromMetadata(login.Metadata.Extra) - } else { - c = login.Metadata.Extra["cookies"].(*cookies.Cookies) - } + loginMetadata := login.Metadata.(*MetaLoginMetadata) + + log.Debug().Any("metadata", loginMetadata).Msg("Creating new Meta client") + + c := loginMetadata.Cookies + c.Platform = types.Platform(loginMetadata.Platform) return &MetaClient{ Main: main, @@ -98,7 +81,7 @@ func NewMetaClient(ctx context.Context, main *MetaConnector, login *bridgev2.Use } func (m *MetaClient) Update(ctx context.Context) error { - m.login.Metadata.Extra["cookies"] = m.cookies + m.login.Metadata.(*MetaLoginMetadata).Cookies = m.cookies err := m.login.Save(ctx) if err != nil { return fmt.Errorf("failed to save updated cookies: %w", err) @@ -171,7 +154,7 @@ func (m *MetaClient) handleTable(ctx context.Context, tbl *table.LSTable) { } for _, thread := range tbl.LSDeleteThenInsertThread { log.Warn().Int64("thread_id", thread.ThreadKey).Msg("LSDeleteThenInsertThread") - portal, err := m.Main.Bridge.GetPortalByID(ctx, networkid.PortalKey{ + portal, err := m.Main.Bridge.GetPortalByKey(ctx, networkid.PortalKey{ ID: networkid.PortalID(strconv.Itoa(int(thread.ThreadKey))), }) if err != nil { @@ -184,16 +167,18 @@ func (m *MetaClient) handleTable(ctx context.Context, tbl *table.LSTable) { continue } + t := database.RoomTypeDefault portal.UpdateInfo(ctx, &bridgev2.ChatInfo{ - Name: &thread.ThreadName, - Topic: &thread.ThreadDescription, - IsSpace: &[]bool{false}[0], - IsDirectChat: &[]bool{true}[0], + Name: &thread.ThreadName, + Topic: &thread.ThreadDescription, + Type: &t, + //IsSpace: &[]bool{false}[0], + //IsDirectChat: &[]bool{true}[0], }, m.login, nil, time.Time{}) } for _, participant := range tbl.LSAddParticipantIdToGroupThread { log.Warn().Int64("thread_id", participant.ThreadKey).Int64("contact_id", participant.ContactId).Msg("LSAddParticipantIdToGroupThread") - portal, err := m.Main.Bridge.GetPortalByID(ctx, networkid.PortalKey{ + portal, err := m.Main.Bridge.GetPortalByKey(ctx, networkid.PortalKey{ ID: networkid.PortalID(strconv.Itoa(int(participant.ThreadKey))), }) if err != nil { @@ -213,7 +198,7 @@ func (m *MetaClient) handleTable(ctx context.Context, tbl *table.LSTable) { } for _, participant := range tbl.LSRemoveParticipantFromThread { log.Warn().Int64("thread_id", participant.ThreadKey).Int64("contact_id", participant.ParticipantId).Msg("LSRemoveParticipantFromThread") - portal, err := m.Main.Bridge.GetPortalByID(ctx, networkid.PortalKey{ + portal, err := m.Main.Bridge.GetPortalByKey(ctx, networkid.PortalKey{ ID: networkid.PortalID(strconv.Itoa(int(participant.ThreadKey))), }) if err != nil { @@ -238,7 +223,7 @@ func (m *MetaClient) handleTable(ctx context.Context, tbl *table.LSTable) { } for _, thread := range tbl.LSSyncUpdateThreadName { log.Warn().Int64("thread_id", thread.ThreadKey).Msg("LSUpdateThreadName") - portal, err := m.Main.Bridge.GetPortalByID(ctx, networkid.PortalKey{ + portal, err := m.Main.Bridge.GetPortalByKey(ctx, networkid.PortalKey{ ID: networkid.PortalID(strconv.Itoa(int(thread.ThreadKey))), }) if err != nil { @@ -368,45 +353,67 @@ func (m *MetaClient) GetCapabilities(ctx context.Context, portal *bridgev2.Porta // GetChatInfo implements bridgev2.NetworkAPI. func (m *MetaClient) GetChatInfo(ctx context.Context, portal *bridgev2.Portal) (*bridgev2.ChatInfo, error) { - // We have to request an entirely new initial table here, because unfortunately we can't get just the metadata we need. - _, initialTable, err := m.client.LoadMessagesPage() - if err != nil { - return nil, fmt.Errorf("failed to load messages page: %w", err) - } + // // We have to request an entirely new initial table here, because unfortunately we can't get just the metadata we need. + // _, initialTable, err := m.client.LoadMessagesPage() + // if err != nil { + // return nil, fmt.Errorf("failed to load messages page: %w", err) + // } + + // var thread_name string + // var thread_description string + // var members *bridgev2.ChatMemberList = &bridgev2.ChatMemberList{} - var thread_name string - var thread_description string - var members *bridgev2.ChatMemberList = &bridgev2.ChatMemberList{} + // threadKey, err := strconv.Atoi(string(portal.ID)) + // if err != nil { + // return nil, fmt.Errorf("failed to parse thread ID: %w", err) + // } + + // for _, thread := range initialTable.LSDeleteThenInsertThread { + // if thread.ThreadKey == int64(threadKey) { + // thread_name = thread.ThreadName + // thread_description = thread.ThreadDescription + // break + // } + // } - threadKey, err := strconv.Atoi(string(portal.ID)) + // for _, participant := range initialTable.LSAddParticipantIdToGroupThread { + // if participant.ThreadKey == int64(threadKey) { + // members.Members = append(members.Members, bridgev2.ChatMember{ + // EventSender: m.senderFromID(participant.ContactId), + // Nickname: participant.Nickname, + // Membership: event.MembershipJoin, + // }) + // } + // } + + log := zerolog.Ctx(ctx) + + id, err := ids.ParseIDFromString(string(portal.ID)) if err != nil { return nil, fmt.Errorf("failed to parse thread ID: %w", err) } - for _, thread := range initialTable.LSDeleteThenInsertThread { - if thread.ThreadKey == int64(threadKey) { - thread_name = thread.ThreadName - thread_description = thread.ThreadDescription - break - } - } + resp, err := m.client.ExecuteTasks( + &socket.CreateThreadTask{ + ThreadFBID: id, + ForceUpsert: 0, + UseOpenMessengerTransport: 0, + SyncGroup: 1, + MetadataOnly: 0, + PreviewOnly: 0, + }, + ) - for _, participant := range initialTable.LSAddParticipantIdToGroupThread { - if participant.ThreadKey == int64(threadKey) { - members.Members = append(members.Members, bridgev2.ChatMember{ - EventSender: m.senderFromID(participant.ContactId), - Nickname: participant.Nickname, - Membership: event.MembershipJoin, - }) - } - } + log.Debug().Any("response_data", resp).Err(err).Msg("Create chat response") + t := database.RoomTypeDefault return &bridgev2.ChatInfo{ - Name: &thread_name, - Topic: &thread_description, - IsSpace: &[]bool{false}[0], - IsDirectChat: &[]bool{true}[0], - Members: members, + //Name: &thread_name, + //Topic: &thread_description, + //IsSpace: &[]bool{false}[0], + //IsDirectChat: &[]bool{true}[0], + //Members: members, + Type: &t, }, nil } @@ -595,7 +602,7 @@ func (m *MetaClient) ResolveIdentifier(ctx context.Context, identifier string, c portalKey := networkid.PortalKey{ID: ids.MakePortalID(id)} chat = &bridgev2.CreateChatResponse{ - PortalID: portalKey, + PortalKey: portalKey, } } return &bridgev2.ResolveIdentifierResponse{ diff --git a/pkg/connector/connector.go b/pkg/connector/connector.go index 4a39ebd..6d007be 100644 --- a/pkg/connector/connector.go +++ b/pkg/connector/connector.go @@ -4,6 +4,10 @@ import ( "context" "maunium.net/go/mautrix/bridgev2" + "maunium.net/go/mautrix/bridgev2/database" + + "go.mau.fi/mautrix-meta/messagix/cookies" + "go.mau.fi/mautrix-meta/messagix/types" ) type MetaConnector struct { @@ -29,6 +33,23 @@ var metaGeneralCaps = &bridgev2.NetworkGeneralCapabilities{ AggressiveUpdateInfo: false, } +func (m *MetaConnector) GetDBMetaTypes() database.MetaTypes { + return database.MetaTypes{ + Portal: nil, + Ghost: nil, + Message: nil, + Reaction: nil, + UserLogin: func() any { + return &MetaLoginMetadata{} + }, + } +} + +type MetaLoginMetadata struct { + Platform types.Platform `json:"platform"` + Cookies *cookies.Cookies `json:"cookies"` +} + func (m *MetaConnector) GetCapabilities() *bridgev2.NetworkGeneralCapabilities { return metaGeneralCaps } diff --git a/pkg/connector/login.go b/pkg/connector/login.go index f6e1856..459a545 100644 --- a/pkg/connector/login.go +++ b/pkg/connector/login.go @@ -139,21 +139,16 @@ func (m *MetaCookieLogin) SubmitCookies(ctx context.Context, strCookies map[stri if ul == nil { ul, err = m.User.NewLogin(ctx, &database.UserLogin{ ID: login_id, - Metadata: database.UserLoginMetadata{ - StandardUserLoginMetadata: database.StandardUserLoginMetadata{ - RemoteName: user.GetName(), - }, - Extra: map[string]interface{}{ - "platform": c.Platform, - "cookies": c, - }, + Metadata: &MetaLoginMetadata{ + Platform: c.Platform, + Cookies: c, }, }, nil) if err != nil { return nil, fmt.Errorf("failed to save new login: %w", err) } } else { - ul.Metadata.RemoteName = user.GetName() + ul.RemoteName = user.GetName() err := ul.Save(ctx) if err != nil { return nil, fmt.Errorf("failed to update existing login: %w", err) diff --git a/pkg/connector/msgconv/from-meta.go b/pkg/connector/msgconv/from-meta.go index d0ada0a..adf32f2 100644 --- a/pkg/connector/msgconv/from-meta.go +++ b/pkg/connector/msgconv/from-meta.go @@ -141,13 +141,6 @@ func (mc *MessageConverter) getMatrixReply(ctx context.Context, portal *bridgev2 mxid := uinfo.MXID - if message.Metadata.SenderMXID != uinfo.MXID { - log.Warn(). - Any("message_sender", message.SenderID). - Msg("SenderID of reply target message does not match reply user, overriding") - mxid = message.Metadata.SenderMXID - } - return &matrixReplyInfo{message.MXID, mxid}, nil }