Skip to content

Commit

Permalink
update mautrix dependency
Browse files Browse the repository at this point in the history
uses new typed metadata
  • Loading branch information
JJTech0130 committed Jul 26, 2024
1 parent c12cc87 commit 08669e1
Show file tree
Hide file tree
Showing 8 changed files with 140 additions and 124 deletions.
12 changes: 6 additions & 6 deletions cmd/lscli/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand All @@ -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
)
24 changes: 12 additions & 12 deletions cmd/lscli/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand All @@ -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
)
36 changes: 18 additions & 18 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand All @@ -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=
133 changes: 70 additions & 63 deletions pkg/connector/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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,
Expand All @@ -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)
Expand Down Expand Up @@ -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 {
Expand All @@ -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 {
Expand All @@ -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 {
Expand All @@ -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 {
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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{
Expand Down
21 changes: 21 additions & 0 deletions pkg/connector/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
}
Expand Down
Loading

0 comments on commit 08669e1

Please sign in to comment.