diff options
author | Alex Auvolat <alex@adnab.me> | 2020-02-28 12:16:59 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2020-02-28 12:16:59 +0100 |
commit | 5398e9fc0f4e7b971221b80c490fea8c24287081 (patch) | |
tree | 27ead6a43b97c637184c30cc233cd9a14b5405d4 /db.go | |
parent | d03091dd01af40d125f3a6b47b076f008a7123d7 (diff) | |
download | easybridge-5398e9fc0f4e7b971221b80c490fea8c24287081.tar.gz easybridge-5398e9fc0f4e7b971221b80c490fea8c24287081.zip |
Handle matrix left events correctly (hopefully)
Diffstat (limited to 'db.go')
-rw-r--r-- | db.go | 36 |
1 files changed, 23 insertions, 13 deletions
@@ -237,8 +237,19 @@ func dbGetMxRoom(protocol string, roomId connector.RoomID) (string, error) { return room.MxRoomID, nil } +func dbPmRoomSlotKey(room *DbPmRoomMap) string { + return fmt.Sprintf("pmroom:%s/%s/%s/%s", + room.Protocol, room.MxUserID, room.AccountName, room.UserID) +} + func dbGetMxPmRoom(protocol string, them connector.UserID, themMxId string, usMxId string, usAccount string) (string, error) { - slot_key := fmt.Sprintf("pmroom:%s/%s/%s/%s", protocol, usMxId, usAccount, them) + map_key := &DbPmRoomMap{ + MxUserID: usMxId, + Protocol: protocol, + AccountName: usAccount, + UserID: them, + } + slot_key := dbPmRoomSlotKey(map_key) dbLockSlot(slot_key) defer dbUnlockSlot(slot_key) @@ -248,12 +259,7 @@ func dbGetMxPmRoom(protocol string, them connector.UserID, themMxId string, usMx } var room DbPmRoomMap - must_create := db.First(&room, DbPmRoomMap{ - MxUserID: usMxId, - Protocol: protocol, - AccountName: usAccount, - UserID: them, - }).RecordNotFound() + must_create := db.First(&room, map_key).RecordNotFound() if must_create { name := fmt.Sprintf("%s (%s)", them, protocol) @@ -264,12 +270,6 @@ func dbGetMxPmRoom(protocol string, them connector.UserID, themMxId string, usMx return "", err } - //err = mxRoomJoinAs(mx_room_id, themMxId) - //if err != nil { - // log.Printf("Could not join %s as %s", mx_room_id, themMxId) - // return "", err - //} - room = DbPmRoomMap{ MxUserID: usMxId, Protocol: protocol, @@ -286,6 +286,16 @@ func dbGetMxPmRoom(protocol string, them connector.UserID, themMxId string, usMx return room.MxRoomID, nil } +func dbDeletePmRoom(room *DbPmRoomMap) { + slot_key := dbPmRoomSlotKey(room) + + dbLockSlot(slot_key) + defer dbUnlockSlot(slot_key) + + db.Delete(room) + dbCache.Remove(slot_key) +} + func dbGetMxUser(protocol string, userId connector.UserID) (string, error) { slot_key := fmt.Sprintf("user:%s/%s", protocol, userId) |