When I was investigating the DM issue, I found that join event contained
the `is_direct` flag. According to the spec, this flag should only be
set on "invite" events, but not on join.
Other homeservers do not have this flag on join.
On /sync, check if a room is a new join between `since` parameter and
now. If it's a newly joined room, set the limited flag to true, which will force
the client to load room messages via the `/messages` endpoint.
On `master`, I could not reproduce the messages not showing to others
when joining after being invited.
Fixes#39
small improvements
Cargo fmt
Simplify insert and update methods
Review feedback
Remove has_device method calls
Load all devices with a single db call
Remove device as in logout
Put all metadata on the same tree
Create userdevice key fucntion
Implement devices API
Implement all the devices endpoints. There's a couple of pending tasks:
- Integrate the "logout" logic once it lands to master (this should
remove the given device from the database).
- Track and store last seen timestamp and IP.
Co-authored-by: timokoesters <timo@koesters.xyz>
Co-authored-by: Guillem Nieto <gnieto.talo@gmail.com>
small improvements
Cargo fmt
Simplify insert and update methods
Review feedback
Remove has_device method calls
Load all devices with a single db call
Remove device as in logout
Put all metadata on the same tree
Create userdevice key fucntion
Implement devices API
Implement all the devices endpoints. There's a couple of pending tasks:
- Integrate the "logout" logic once it lands to master (this should
remove the given device from the database).
- Track and store last seen timestamp and IP.
Co-authored-by: timokoesters <timo@koesters.xyz>
Co-authored-by: Guillem Nieto <gnieto.talo@gmail.com>
Device_id was retrieved from the auth data instead of login's body and
this was causing that a new device was created on every login.
This is (I guess) provoking that some sytests are failing (for example,
"POST /login returns the same device_id as that in the request").