Don't clear puppets when phone ID changes
Otherwise the avatars will remain on the server and won't be properly reset when new contact info comes in for the same user.
This commit is contained in:
parent
072c002198
commit
89b9f46301
3 changed files with 2 additions and 22 deletions
|
@ -33,9 +33,8 @@ func newPuppet(qh *dbutil.QueryHelper[*Puppet]) *Puppet {
|
|||
}
|
||||
|
||||
const (
|
||||
deleteAllPuppetsForUserQuery = "DELETE FROM puppet WHERE receiver=$1"
|
||||
getPuppetQuery = "SELECT id, receiver, phone, contact_id, name, name_set, avatar_hash, avatar_mxc, avatar_set, avatar_update_ts, contact_info_set FROM puppet WHERE id=$1 AND receiver=$2"
|
||||
insertPuppetQuery = `
|
||||
getPuppetQuery = "SELECT id, receiver, phone, contact_id, name, name_set, avatar_hash, avatar_mxc, avatar_set, avatar_update_ts, contact_info_set FROM puppet WHERE id=$1 AND receiver=$2"
|
||||
insertPuppetQuery = `
|
||||
INSERT INTO puppet (id, receiver, phone, contact_id, name, name_set, avatar_hash, avatar_mxc, avatar_set, avatar_update_ts, contact_info_set)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||
`
|
||||
|
@ -46,10 +45,6 @@ const (
|
|||
`
|
||||
)
|
||||
|
||||
func (pq *PuppetQuery) DeleteAllForUser(ctx context.Context, userID int) error {
|
||||
return pq.Exec(ctx, deleteAllPuppetsForUserQuery, userID)
|
||||
}
|
||||
|
||||
func (pq *PuppetQuery) Get(ctx context.Context, key Key) (*Puppet, error) {
|
||||
return pq.QueryOne(ctx, getPuppetQuery, key.ID, key.Receiver)
|
||||
}
|
||||
|
|
14
puppet.go
14
puppet.go
|
@ -60,20 +60,6 @@ func (br *GMBridge) GetPuppetByMXID(mxid id.UserID) *Puppet {
|
|||
return br.GetPuppetByKey(key, "")
|
||||
}
|
||||
|
||||
func (br *GMBridge) DeleteAllPuppetsForUser(userID int) {
|
||||
br.puppetsLock.Lock()
|
||||
defer br.puppetsLock.Unlock()
|
||||
err := br.DB.Puppet.DeleteAllForUser(context.Background(), userID)
|
||||
if err != nil {
|
||||
br.ZLog.Err(err).Msg("Failed to delete all ghosts for user from database")
|
||||
}
|
||||
for key, puppet := range br.puppetsByKey {
|
||||
if puppet.Receiver == userID {
|
||||
delete(br.puppetsByKey, key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (br *GMBridge) GetPuppetByKey(key database.Key, phone string) *Puppet {
|
||||
br.puppetsLock.Lock()
|
||||
defer br.puppetsLock.Unlock()
|
||||
|
|
1
user.go
1
user.go
|
@ -783,7 +783,6 @@ func (user *User) ResetState() {
|
|||
for _, portal := range portals {
|
||||
portal.Delete(context.TODO())
|
||||
}
|
||||
user.bridge.DeleteAllPuppetsForUser(user.RowID)
|
||||
user.PhoneID = ""
|
||||
go func() {
|
||||
user.zlog.Debug().Msg("Cleaning up portal rooms in background")
|
||||
|
|
Loading…
Reference in a new issue