mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2026-02-05 00:01:23 +01:00
enable map_unwrap_or lint
This commit is contained in:
parent
645d88177a
commit
224ba65d06
10 changed files with 81 additions and 73 deletions
|
|
@ -46,6 +46,7 @@ let_underscore_must_use = "warn"
|
||||||
lossy_float_literal = "warn"
|
lossy_float_literal = "warn"
|
||||||
manual_let_else = "warn"
|
manual_let_else = "warn"
|
||||||
manual_string_new = "warn"
|
manual_string_new = "warn"
|
||||||
|
map_unwrap_or = "warn"
|
||||||
mem_forget = "warn"
|
mem_forget = "warn"
|
||||||
missing_assert_message = "warn"
|
missing_assert_message = "warn"
|
||||||
mod_module_files = "warn"
|
mod_module_files = "warn"
|
||||||
|
|
|
||||||
|
|
@ -105,8 +105,7 @@ pub(crate) async fn get_context_route(
|
||||||
|
|
||||||
let start_token = events_before
|
let start_token = events_before
|
||||||
.last()
|
.last()
|
||||||
.map(|(count, _)| count.stringify())
|
.map_or_else(|| base_token.stringify(), |(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()
|
||||||
|
|
@ -161,8 +160,7 @@ pub(crate) async fn get_context_route(
|
||||||
|
|
||||||
let end_token = events_after
|
let end_token = events_after
|
||||||
.last()
|
.last()
|
||||||
.map(|(count, _)| count.stringify())
|
.map_or_else(|| base_token.stringify(), |(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()
|
||||||
|
|
|
||||||
|
|
@ -24,18 +24,19 @@ pub(crate) async fn update_tag_route(
|
||||||
RoomAccountDataEventType::Tag,
|
RoomAccountDataEventType::Tag,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut tags_event = event
|
let mut tags_event = event.map_or_else(
|
||||||
.map(|e| {
|
|| {
|
||||||
serde_json::from_str(e.get())
|
|
||||||
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
|
||||||
})
|
|
||||||
.unwrap_or_else(|| {
|
|
||||||
Ok(TagEvent {
|
Ok(TagEvent {
|
||||||
content: TagEventContent {
|
content: TagEventContent {
|
||||||
tags: BTreeMap::new(),
|
tags: BTreeMap::new(),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})?;
|
},
|
||||||
|
|e| {
|
||||||
|
serde_json::from_str(e.get())
|
||||||
|
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
tags_event
|
tags_event
|
||||||
.content
|
.content
|
||||||
|
|
@ -68,18 +69,19 @@ pub(crate) async fn delete_tag_route(
|
||||||
RoomAccountDataEventType::Tag,
|
RoomAccountDataEventType::Tag,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut tags_event = event
|
let mut tags_event = event.map_or_else(
|
||||||
.map(|e| {
|
|| {
|
||||||
serde_json::from_str(e.get())
|
|
||||||
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
|
||||||
})
|
|
||||||
.unwrap_or_else(|| {
|
|
||||||
Ok(TagEvent {
|
Ok(TagEvent {
|
||||||
content: TagEventContent {
|
content: TagEventContent {
|
||||||
tags: BTreeMap::new(),
|
tags: BTreeMap::new(),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})?;
|
},
|
||||||
|
|e| {
|
||||||
|
serde_json::from_str(e.get())
|
||||||
|
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
tags_event.content.tags.remove(&body.tag.clone().into());
|
tags_event.content.tags.remove(&body.tag.clone().into());
|
||||||
|
|
||||||
|
|
@ -109,18 +111,19 @@ pub(crate) async fn get_tags_route(
|
||||||
RoomAccountDataEventType::Tag,
|
RoomAccountDataEventType::Tag,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let tags_event = event
|
let tags_event = event.map_or_else(
|
||||||
.map(|e| {
|
|| {
|
||||||
serde_json::from_str(e.get())
|
|
||||||
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
|
||||||
})
|
|
||||||
.unwrap_or_else(|| {
|
|
||||||
Ok(TagEvent {
|
Ok(TagEvent {
|
||||||
content: TagEventContent {
|
content: TagEventContent {
|
||||||
tags: BTreeMap::new(),
|
tags: BTreeMap::new(),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})?;
|
},
|
||||||
|
|e| {
|
||||||
|
serde_json::from_str(e.get())
|
||||||
|
.map_err(|_| Error::bad_database("Invalid account data event in db."))
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
Ok(get_tags::v3::Response {
|
Ok(get_tags::v3::Response {
|
||||||
tags: tags_event.content.tags,
|
tags: tags_event.content.tags,
|
||||||
|
|
|
||||||
|
|
@ -276,7 +276,7 @@ lasttimelinecount_cache: {lasttimelinecount_cache}\n"
|
||||||
);
|
);
|
||||||
tree
|
tree
|
||||||
})
|
})
|
||||||
.unwrap_or_else(BTreeMap::new);
|
.unwrap_or_default();
|
||||||
|
|
||||||
Ok(signingkeys)
|
Ok(signingkeys)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,10 @@ impl service::rooms::user::Data for KeyValueDatabase {
|
||||||
|
|
||||||
self.userroomid_notificationcount
|
self.userroomid_notificationcount
|
||||||
.get(&userroom_id)?
|
.get(&userroom_id)?
|
||||||
.map(|bytes| {
|
.map_or(Ok(0), |bytes| {
|
||||||
utils::u64_from_bytes(&bytes)
|
utils::u64_from_bytes(&bytes)
|
||||||
.map_err(|_| Error::bad_database("Invalid notification count in db."))
|
.map_err(|_| Error::bad_database("Invalid notification count in db."))
|
||||||
})
|
})
|
||||||
.unwrap_or(Ok(0))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn highlight_count(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
fn highlight_count(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
||||||
|
|
@ -45,11 +44,10 @@ impl service::rooms::user::Data for KeyValueDatabase {
|
||||||
|
|
||||||
self.userroomid_highlightcount
|
self.userroomid_highlightcount
|
||||||
.get(&userroom_id)?
|
.get(&userroom_id)?
|
||||||
.map(|bytes| {
|
.map_or(Ok(0), |bytes| {
|
||||||
utils::u64_from_bytes(&bytes)
|
utils::u64_from_bytes(&bytes)
|
||||||
.map_err(|_| Error::bad_database("Invalid highlight count in db."))
|
.map_err(|_| Error::bad_database("Invalid highlight count in db."))
|
||||||
})
|
})
|
||||||
.unwrap_or(Ok(0))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn last_notification_read(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
fn last_notification_read(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
||||||
|
|
|
||||||
|
|
@ -348,12 +348,11 @@ impl service::users::Data for KeyValueDatabase {
|
||||||
fn last_one_time_keys_update(&self, user_id: &UserId) -> Result<u64> {
|
fn last_one_time_keys_update(&self, user_id: &UserId) -> Result<u64> {
|
||||||
self.userid_lastonetimekeyupdate
|
self.userid_lastonetimekeyupdate
|
||||||
.get(user_id.as_bytes())?
|
.get(user_id.as_bytes())?
|
||||||
.map(|bytes| {
|
.map_or(Ok(0), |bytes| {
|
||||||
utils::u64_from_bytes(&bytes).map_err(|_| {
|
utils::u64_from_bytes(&bytes).map_err(|_| {
|
||||||
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap_or(Ok(0))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn take_one_time_key(
|
fn take_one_time_key(
|
||||||
|
|
|
||||||
|
|
@ -363,41 +363,46 @@ impl Service {
|
||||||
federation: bool,
|
federation: bool,
|
||||||
) -> Result<bool> {
|
) -> Result<bool> {
|
||||||
self.room_state_get(room_id, &StateEventType::RoomPowerLevels, "")?
|
self.room_state_get(room_id, &StateEventType::RoomPowerLevels, "")?
|
||||||
.map(|e| {
|
.map_or_else(
|
||||||
serde_json::from_str(e.content.get())
|
// Falling back on m.room.create to judge power levels
|
||||||
.map(|c: RoomPowerLevelsEventContent| c.into())
|
|| {
|
||||||
.map(|e: RoomPowerLevels| {
|
if let Some(pdu) =
|
||||||
e.user_can_redact_event_of_other(sender)
|
self.room_state_get(room_id, &StateEventType::RoomCreate, "")?
|
||||||
|| e.user_can_redact_own_event(sender)
|
{
|
||||||
&& if let Ok(Some(pdu)) = services().rooms.timeline.get_pdu(redacts)
|
Ok(pdu.sender == sender
|
||||||
{
|
|| if let Ok(Some(pdu)) = services().rooms.timeline.get_pdu(redacts) {
|
||||||
if federation {
|
pdu.sender == sender
|
||||||
pdu.sender().server_name() == sender.server_name()
|
} else {
|
||||||
|
false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Err(Error::bad_database(
|
||||||
|
"No m.room.power_levels or m.room.create events in database for room",
|
||||||
|
))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|e| {
|
||||||
|
serde_json::from_str(e.content.get())
|
||||||
|
.map(|c: RoomPowerLevelsEventContent| c.into())
|
||||||
|
.map(|e: RoomPowerLevels| {
|
||||||
|
e.user_can_redact_event_of_other(sender)
|
||||||
|
|| e.user_can_redact_own_event(sender)
|
||||||
|
&& if let Ok(Some(pdu)) =
|
||||||
|
services().rooms.timeline.get_pdu(redacts)
|
||||||
|
{
|
||||||
|
if federation {
|
||||||
|
pdu.sender().server_name() == sender.server_name()
|
||||||
|
} else {
|
||||||
|
pdu.sender == sender
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pdu.sender == sender
|
false
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.map_err(|_| {
|
|
||||||
Error::bad_database("Invalid m.room.power_levels event in database")
|
|
||||||
})
|
|
||||||
})
|
|
||||||
// Falling back on m.room.create to judge power levels
|
|
||||||
.unwrap_or_else(|| {
|
|
||||||
if let Some(pdu) = self.room_state_get(room_id, &StateEventType::RoomCreate, "")? {
|
|
||||||
Ok(pdu.sender == sender
|
|
||||||
|| if let Ok(Some(pdu)) = services().rooms.timeline.get_pdu(redacts) {
|
|
||||||
pdu.sender == sender
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
})
|
})
|
||||||
} else {
|
.map_err(|_| {
|
||||||
Err(Error::bad_database(
|
Error::bad_database("Invalid m.room.power_levels event in database")
|
||||||
"No m.room.power_levels or m.room.create events in database for room",
|
})
|
||||||
))
|
},
|
||||||
}
|
)
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -338,8 +338,10 @@ impl Service {
|
||||||
.map_err(|_| Error::bad_database("Invalid push rules event in db."))
|
.map_err(|_| Error::bad_database("Invalid push rules event in db."))
|
||||||
})
|
})
|
||||||
.transpose()?
|
.transpose()?
|
||||||
.map(|ev: PushRulesEvent| ev.content.global)
|
.map_or_else(
|
||||||
.unwrap_or_else(|| Ruleset::server_default(user));
|
|| Ruleset::server_default(user),
|
||||||
|
|ev: PushRulesEvent| ev.content.global,
|
||||||
|
);
|
||||||
|
|
||||||
let mut highlight = false;
|
let mut highlight = false;
|
||||||
let mut notify = false;
|
let mut notify = false;
|
||||||
|
|
|
||||||
|
|
@ -581,8 +581,10 @@ impl Service {
|
||||||
)
|
)
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
.and_then(|event| serde_json::from_str::<PushRulesEvent>(event.get()).ok())
|
.and_then(|event| serde_json::from_str::<PushRulesEvent>(event.get()).ok())
|
||||||
.map(|ev: PushRulesEvent| ev.content.global)
|
.map_or_else(
|
||||||
.unwrap_or_else(|| push::Ruleset::server_default(userid));
|
|| push::Ruleset::server_default(userid),
|
||||||
|
|ev: PushRulesEvent| ev.content.global,
|
||||||
|
);
|
||||||
|
|
||||||
let unread: UInt = services()
|
let unread: UInt = services()
|
||||||
.rooms
|
.rooms
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,10 @@ impl Service {
|
||||||
auth: &AuthData,
|
auth: &AuthData,
|
||||||
uiaainfo: &UiaaInfo,
|
uiaainfo: &UiaaInfo,
|
||||||
) -> Result<(bool, UiaaInfo)> {
|
) -> Result<(bool, UiaaInfo)> {
|
||||||
let mut uiaainfo = auth
|
let mut uiaainfo = auth.session().map_or_else(
|
||||||
.session()
|
|| Ok(uiaainfo.clone()),
|
||||||
.map(|session| self.db.get_uiaa_session(user_id, device_id, session))
|
|session| self.db.get_uiaa_session(user_id, device_id, session),
|
||||||
.unwrap_or_else(|| Ok(uiaainfo.clone()))?;
|
)?;
|
||||||
|
|
||||||
if uiaainfo.session.is_none() {
|
if uiaainfo.session.is_none() {
|
||||||
uiaainfo.session = Some(utils::random_string(SESSION_ID_LENGTH));
|
uiaainfo.session = Some(utils::random_string(SESSION_ID_LENGTH));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue