Compare commits
2 Commits
62a91a8615
...
935ca6361b
| Author | SHA1 | Date | |
|---|---|---|---|
|
935ca6361b
|
|||
|
aa219dcfff
|
12
flake.lock
generated
12
flake.lock
generated
@@ -296,11 +296,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770770419,
|
"lastModified": 1771043024,
|
||||||
"narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=",
|
"narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a",
|
"rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -509,11 +509,11 @@
|
|||||||
"trackerlist": {
|
"trackerlist": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770851384,
|
"lastModified": 1771110581,
|
||||||
"narHash": "sha256-BWxwBWi/FZegNOSwvwjmo/7JaYppwSMLjCvEBxoL90E=",
|
"narHash": "sha256-+mY1FxEjjrbmrmVIlSoD9D9kzjGYx2g64RfgHr4UNIA=",
|
||||||
"owner": "ngosang",
|
"owner": "ngosang",
|
||||||
"repo": "trackerslist",
|
"repo": "trackerslist",
|
||||||
"rev": "c38ed0d4ce262e2dc699d15ccca260fc869452d9",
|
"rev": "1ff36864c5130200f1783982d6743042f01fde73",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ let
|
|||||||
domain = "forgejo.ellis.link";
|
domain = "forgejo.ellis.link";
|
||||||
owner = "continuwuation";
|
owner = "continuwuation";
|
||||||
repo = "continuwuity";
|
repo = "continuwuity";
|
||||||
rev = "89ad809270dc0dbf428858a466aa9b90e9a8dccf";
|
rev = "57b21c1b322bd6ab9650c04e9b5d81932b9e35c3";
|
||||||
hash = "sha256-fXLbuCkRGYljWXbCyDvczezZ3Zo8SCPh5sx1gZChccw=";
|
hash = "sha256-ehrRlx15Of2XVPC6kNFx/f9lpn0SHkbtqkNZAskOv18=";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.matrix-continuwuity.overrideAttrs (old: {
|
pkgs.matrix-continuwuity.overrideAttrs (old: {
|
||||||
@@ -25,7 +25,7 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
patches = (old.patches or [ ]) ++ [
|
patches = (old.patches or [ ]) ++ [
|
||||||
./sliding-sync-fix.patch
|
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs
|
|
||||||
index 8976fd02..df2f5844 100644
|
|
||||||
--- a/src/api/client/sync/v5.rs
|
|
||||||
+++ b/src/api/client/sync/v5.rs
|
|
||||||
@@ -30,7 +30,8 @@
|
|
||||||
api::client::sync::sync_events::{self, DeviceLists, UnreadNotificationsCount},
|
|
||||||
directory::RoomTypeFilter,
|
|
||||||
events::{
|
|
||||||
- AnyRawAccountDataEvent, AnySyncEphemeralRoomEvent, StateEventType, TimelineEventType,
|
|
||||||
+ AnyRawAccountDataEvent, AnySyncEphemeralRoomEvent, AnySyncStateEvent, StateEventType,
|
|
||||||
+ TimelineEventType,
|
|
||||||
room::member::{MembershipState, RoomMemberEventContent},
|
|
||||||
typing::TypingEventContent,
|
|
||||||
},
|
|
||||||
@@ -533,6 +534,9 @@ async fn process_rooms<'a, Rooms>(
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
+ let required_state =
|
|
||||||
+ collect_required_state(services, room_id, required_state_request).await;
|
|
||||||
+
|
|
||||||
let room_events: Vec<_> = timeline_pdus
|
|
||||||
.iter()
|
|
||||||
.stream()
|
|
||||||
@@ -551,21 +555,6 @@ async fn process_rooms<'a, Rooms>(
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- let required_state = required_state_request
|
|
||||||
- .iter()
|
|
||||||
- .stream()
|
|
||||||
- .filter_map(|state| async move {
|
|
||||||
- services
|
|
||||||
- .rooms
|
|
||||||
- .state_accessor
|
|
||||||
- .room_state_get(room_id, &state.0, &state.1)
|
|
||||||
- .await
|
|
||||||
- .map(Event::into_format)
|
|
||||||
- .ok()
|
|
||||||
- })
|
|
||||||
- .collect()
|
|
||||||
- .await;
|
|
||||||
-
|
|
||||||
// Heroes
|
|
||||||
let heroes: Vec<_> = services
|
|
||||||
.rooms
|
|
||||||
@@ -689,6 +678,46 @@ async fn process_rooms<'a, Rooms>(
|
|
||||||
Ok(rooms)
|
|
||||||
}
|
|
||||||
|
|
||||||
+/// Collect the required state events for a room
|
|
||||||
+async fn collect_required_state(
|
|
||||||
+ services: &Services,
|
|
||||||
+ room_id: &RoomId,
|
|
||||||
+ required_state_request: &BTreeSet<TypeStateKey>,
|
|
||||||
+) -> Vec<Raw<AnySyncStateEvent>> {
|
|
||||||
+ let mut required_state = Vec::new();
|
|
||||||
+ for (event_type, state_key) in required_state_request {
|
|
||||||
+ // Resolve wild-card sentinel issue
|
|
||||||
+ // Addresses: https://forgejo.ellis.link/continuwuation/continuwuity/issues/1306
|
|
||||||
+ if state_key.as_str() == "*" {
|
|
||||||
+ if let Ok(keys) = services
|
|
||||||
+ .rooms
|
|
||||||
+ .state_accessor
|
|
||||||
+ .room_state_keys(room_id, event_type)
|
|
||||||
+ .await
|
|
||||||
+ {
|
|
||||||
+ for key in keys {
|
|
||||||
+ if let Ok(event) = services
|
|
||||||
+ .rooms
|
|
||||||
+ .state_accessor
|
|
||||||
+ .room_state_get(room_id, event_type, &key)
|
|
||||||
+ .await
|
|
||||||
+ {
|
|
||||||
+ required_state.push(Event::into_format(event));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } else if let Ok(event) = services
|
|
||||||
+ .rooms
|
|
||||||
+ .state_accessor
|
|
||||||
+ .room_state_get(room_id, event_type, state_key)
|
|
||||||
+ .await
|
|
||||||
+ {
|
|
||||||
+ required_state.push(Event::into_format(event));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ required_state
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
async fn collect_typing_events(
|
|
||||||
services: &Services,
|
|
||||||
sender_user: &UserId,
|
|
||||||
Reference in New Issue
Block a user