mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
Fix FindSharedRooms for non-bridge sqlstatestores
This commit is contained in:
parent
f521387094
commit
e7df474b56
3 changed files with 15 additions and 5 deletions
|
|
@ -492,7 +492,7 @@ func (br *Bridge) init() {
|
|||
br.DB.IgnoreForeignTables = *ignoreForeignTables
|
||||
|
||||
br.ZLog.Debug().Msg("Initializing state store")
|
||||
br.StateStore = sqlstatestore.NewSQLStateStore(br.DB, dbutil.ZeroLogger(br.ZLog.With().Str("db_section", "matrix_state").Logger()))
|
||||
br.StateStore = sqlstatestore.NewSQLStateStore(br.DB, dbutil.ZeroLogger(br.ZLog.With().Str("db_section", "matrix_state").Logger()), true)
|
||||
br.AS.StateStore = br.StateStore
|
||||
|
||||
br.ZLog.Debug().Msg("Initializing Matrix event processor")
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ func NewCryptoHelper(cli *mautrix.Client, pickleKey []byte, store any) (*CryptoH
|
|||
}
|
||||
log := cli.Log.With().Str("component", "crypto").Logger()
|
||||
if cli.StateStore == nil && dbForManagedStores != nil {
|
||||
managedStateStore = sqlstatestore.NewSQLStateStore(dbForManagedStores, dbutil.ZeroLogger(log.With().Str("db_section", "matrix_state").Logger()))
|
||||
managedStateStore = sqlstatestore.NewSQLStateStore(dbForManagedStores, dbutil.ZeroLogger(log.With().Str("db_section", "matrix_state").Logger()), false)
|
||||
cli.StateStore = managedStateStore
|
||||
} else if _, isCryptoCompatible := cli.StateStore.(crypto.StateStore); !isCryptoCompatible {
|
||||
return nil, fmt.Errorf("the client state store must implement crypto.StateStore")
|
||||
|
|
|
|||
|
|
@ -32,11 +32,13 @@ const VersionTableName = "mx_version"
|
|||
|
||||
type SQLStateStore struct {
|
||||
*dbutil.Database
|
||||
IsBridge bool
|
||||
}
|
||||
|
||||
func NewSQLStateStore(db *dbutil.Database, log dbutil.DatabaseLogger) *SQLStateStore {
|
||||
func NewSQLStateStore(db *dbutil.Database, log dbutil.DatabaseLogger, isBridge bool) *SQLStateStore {
|
||||
return &SQLStateStore{
|
||||
Database: db.Child(VersionTableName, UpgradeTable, log),
|
||||
IsBridge: isBridge,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,11 +132,19 @@ func (store *SQLStateStore) TryGetMember(roomID id.RoomID, userID id.UserID) (*e
|
|||
}
|
||||
|
||||
func (store *SQLStateStore) FindSharedRooms(userID id.UserID) (rooms []id.RoomID) {
|
||||
rows, err := store.Query(`
|
||||
query := `
|
||||
SELECT room_id FROM mx_user_profile
|
||||
LEFT JOIN portal ON portal.mxid=mx_user_profile.room_id
|
||||
WHERE mx_user_profile.user_id=$1 AND portal.encrypted=true
|
||||
`, userID)
|
||||
`
|
||||
if !store.IsBridge {
|
||||
query = `
|
||||
SELECT room_id FROM mx_user_profile
|
||||
LEFT JOIN mx_room_state ON mx_room_state.room_id=mx_user_profile.room_id
|
||||
WHERE mx_user_profile.user_id=$1 AND mx_room_state.encryption IS NOT NULL
|
||||
`
|
||||
}
|
||||
rows, err := store.Query(query, userID)
|
||||
if err != nil {
|
||||
store.Log.Warn("Failed to query shared rooms with %s: %v", userID, err)
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue