fix: /context for element android. start and end must be set even with limit=0

This commit is contained in:
Timo Kösters 2023-06-26 08:33:31 +02:00
parent 15cc801840
commit 49a0f3a60d
No known key found for this signature in database
GPG key ID: 0B25E636FBA7E4CB
4 changed files with 17 additions and 13 deletions

View file

@ -103,7 +103,10 @@ pub async fn get_context_route(
} }
} }
let start_token = events_before.last().map(|(count, _)| count.stringify()); let start_token = events_before
.last()
.map(|(count, _)| count.stringify())
.unwrap_or_else(|| base_token.stringify());
let events_before: Vec<_> = events_before let events_before: Vec<_> = events_before
.into_iter() .into_iter()
@ -156,7 +159,10 @@ pub async fn get_context_route(
.state_full_ids(shortstatehash) .state_full_ids(shortstatehash)
.await?; .await?;
let end_token = events_after.last().map(|(count, _)| count.stringify()); let end_token = events_after
.last()
.map(|(count, _)| count.stringify())
.unwrap_or_else(|| base_token.stringify());
let events_after: Vec<_> = events_after let events_after: Vec<_> = events_after
.into_iter() .into_iter()
@ -193,8 +199,8 @@ pub async fn get_context_route(
} }
let resp = get_context::v3::Response { let resp = get_context::v3::Response {
start: start_token, start: Some(start_token),
end: end_token, end: Some(end_token),
events_before, events_before,
event: Some(base_event), event: Some(base_event),
events_after, events_after,

View file

@ -1,4 +1,5 @@
#[allow(deprecated)] #![allow(deprecated)]
use crate::{ use crate::{
api::client_server::{self, claim_keys_helper, get_keys_helper}, api::client_server::{self, claim_keys_helper, get_keys_helper},
service::pdu::{gen_event_id_canonical_json, PduBuilder}, service::pdu::{gen_event_id_canonical_json, PduBuilder},

View file

@ -1,18 +1,15 @@
mod data; mod data;
use std::sync::Arc;
pub use data::Data; pub use data::Data;
use ruma::{ use ruma::{
api::client::{error::ErrorKind, threads::get_threads::v1::IncludeThreads}, api::client::{error::ErrorKind, threads::get_threads::v1::IncludeThreads},
events::{relation::BundledThread, StateEventType}, events::relation::BundledThread,
uint, CanonicalJsonValue, EventId, OwnedUserId, RoomId, UserId, uint, CanonicalJsonValue, EventId, RoomId, UserId,
}; };
use serde::Deserialize;
use serde_json::json; use serde_json::json;
use crate::{services, utils, Error, PduEvent, Result}; use crate::{services, Error, PduEvent, Result};
use super::timeline::PduCount;
pub struct Service { pub struct Service {
pub db: &'static dyn Data, pub db: &'static dyn Data,

View file

@ -24,7 +24,7 @@ use ruma::{
GlobalAccountDataEventType, StateEventType, TimelineEventType, GlobalAccountDataEventType, StateEventType, TimelineEventType,
}, },
push::{Action, Ruleset, Tweak}, push::{Action, Ruleset, Tweak},
serde::{Base64, JsonObject}, serde::Base64,
state_res, state_res,
state_res::{Event, RoomVersion}, state_res::{Event, RoomVersion},
uint, user_id, CanonicalJsonObject, CanonicalJsonValue, EventId, OwnedEventId, OwnedRoomId, uint, user_id, CanonicalJsonObject, CanonicalJsonValue, EventId, OwnedEventId, OwnedRoomId,