Open PhantomRay opened 6 months ago
Hello @PhantomRay can you try this again with 0.27.0? We have refactored the logic there how to handle incoming events
Thanks a lot @krille-chan. I cannot test it directly in my app. But can certain use your demo app.
We rely on modified matrix api lite which supports jwt.
Hopefully you guys can support it very soon. Only a few lines of code.
In fact, I will try to integrate jwt feature to 0.27 now.
@krille-chan I just tested it in fluffychat with 0.27.0, the issue still remains.
Hi @krille-chan could you please treat this bug as high priority? Because once it happens, re-launch the app will show incorrect room name and avatar.
Thanks @krille-chan Much appreciated.
@PhantomRay I've tried to reproduce the bug in this way:
Do you have better way how to reproduce this?
I think my scenario might be different to yours, because you must be editing data using client API. In my case, Matrix is integrated with our own system. We rely on admin API to push display name and avatar changes to matrix.
We use PUT /_synapse/admin/v2/users/<user_id>
and change only displayname
and avatar_url
.
But either way, this shouldn't happen.
Btw, I'm currently testing direct chat (1 to1) only.
This should be fixed in 0.29.10, please reopen, if you can still reproduce it with that.
Thanks a lot!
In 0.29.10, it's still not fixed. Just to re-iterate, both of the following are overridden by older events:
Are you sure this isn't just an effect of not having cleared the cache? Does this affect new sessions or existing ones?
Our test is comprehensive including deleting the app.
Checked your recent code, noticed that you put some checks on event types. However I think that's not enough because we also have to compare the events' timestamps. If it's older than the time when room was loaded, or user's info previously set, then ignore.
The checks are on the event update types. We should only apply the state updates, if the update is a forward update, i.e. when there is a new sync response. Could you describe in more detail, where you are seeing the wrong state updates, i.e. what steps you are doing like jumping to some timeline location and then paginating forward or similar?
Timestamps would be incorrect, but we really should only be writing event updates to the database in the sync loop and we might still be missing some cases, where they get written outside of that loop?
Steps To Reproduce
Thank you for the report, I will try to reproduce that.
Checklist
In which Project did the bug appear?
Matrix dart SDK
On which platform did the bug appear?
Android, iOS
SDK Version
0.27
Describe the problem caused by this bug
Room info replaced after
timeline. timeline.requestHistory()
. From this point onwards, the room's state is changed in memory and local database.Steps To Reproduce