Skip to content

Commit 24511e7

Browse files
committed
mls: remove unwraps from messages module
Signed-off-by: Yuki Kishimoto <[email protected]>
1 parent 0bb6cf0 commit 24511e7

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

crates/nostr-mls/src/messages.rs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,15 @@ where
8888
fn create_message_for_event(
8989
&self,
9090
group: &mut MlsGroup,
91-
mut rumor: UnsignedEvent,
91+
rumor: &mut UnsignedEvent,
9292
) -> Result<Vec<u8>, Error> {
9393
// Load signer
9494
let signer: SignatureKeyPair = self.load_mls_signer(group)?;
9595

96-
// Ensure rumor ID and serialize as JSON
96+
// Ensure rumor ID
9797
rumor.ensure_id();
98+
99+
// Serialize as JSON
98100
let json: String = rumor.as_json();
99101

100102
// Create message
@@ -126,7 +128,7 @@ where
126128
pub fn create_message(
127129
&self,
128130
mls_group_id: &GroupId,
129-
rumor: UnsignedEvent,
131+
mut rumor: UnsignedEvent,
130132
) -> Result<Event, Error> {
131133
// Load mls group
132134
let mut mls_group = self
@@ -140,7 +142,10 @@ where
140142
.ok_or(Error::GroupNotFound)?;
141143

142144
// Create message
143-
let message: Vec<u8> = self.create_message_for_event(&mut mls_group, rumor.clone())?;
145+
let message: Vec<u8> = self.create_message_for_event(&mut mls_group, &mut rumor)?;
146+
147+
// Get the rumor ID
148+
let rumor_id: EventId = rumor.id();
144149

145150
// Export secret
146151
let secret: group_types::GroupExporterSecret = self.exporter_secret(mls_group_id)?;
@@ -167,7 +172,7 @@ where
167172

168173
// Create message to save to storage
169174
let message: message_types::Message = message_types::Message {
170-
id: rumor.id.unwrap(),
175+
id: rumor_id,
171176
pubkey: rumor.pubkey,
172177
kind: rumor.kind,
173178
mls_group_id: mls_group_id.clone(),
@@ -182,7 +187,7 @@ where
182187
// Create processed_message to track state of message
183188
let processed_message: message_types::ProcessedMessage = message_types::ProcessedMessage {
184189
wrapper_event_id: event.id,
185-
message_event_id: Some(rumor.id.unwrap()),
190+
message_event_id: Some(rumor_id),
186191
processed_at: Timestamp::now(),
187192
state: message_types::ProcessedMessageState::Created,
188193
failure_reason: None,
@@ -360,17 +365,19 @@ where
360365
// The resulting serialized message is the MLS encrypted message that Bob sent
361366
// Now Bob can process the MLS message content and do what's needed with it
362367
match self.process_message_for_group(&mut mls_group, &message_bytes) {
363-
Ok(Some(rumor)) => {
368+
Ok(Some(mut rumor)) => {
369+
let rumor_id: EventId = rumor.id();
370+
364371
let processed_message = message_types::ProcessedMessage {
365372
wrapper_event_id: event.id,
366-
message_event_id: Some(rumor.id.unwrap()),
373+
message_event_id: Some(rumor_id),
367374
processed_at: Timestamp::now(),
368375
state: message_types::ProcessedMessageState::Processed,
369376
failure_reason: None,
370377
};
371378

372379
let message = message_types::Message {
373-
id: rumor.id.unwrap(),
380+
id: rumor_id,
374381
pubkey: rumor.pubkey,
375382
kind: rumor.kind,
376383
mls_group_id: group.mls_group_id.clone(),
@@ -421,18 +428,23 @@ where
421428
match e {
422429
Error::CannotDecryptOwnMessage => {
423430
tracing::debug!(target: "nostr_mls::messages::process_message", "Cannot decrypt own message, checking for cached message");
431+
424432
let mut processed_message = self
425433
.storage()
426434
.find_processed_message_by_event_id(&event.id)
427435
.map_err(|e| Error::Message(e.to_string()))?
428436
.ok_or(Error::Message("Processed message not found".to_string()))?;
429437

438+
let message_event_id: EventId = processed_message
439+
.message_event_id
440+
.ok_or(Error::Message("Message event ID not found".to_string()))?;
441+
430442
// If the message is created, we need to update the state of the message and processed message
431443
// If it's already processed, we don't need to do anything
432444
match processed_message.state {
433445
message_types::ProcessedMessageState::Created => {
434446
let mut message = self
435-
.get_message(&processed_message.message_event_id.unwrap())?
447+
.get_message(&message_event_id)?
436448
.ok_or(Error::Message("Message not found".to_string()))?;
437449

438450
message.state = message_types::MessageState::Processed;
@@ -455,8 +467,7 @@ where
455467
tracing::debug!(target: "nostr_mls::messages::process_message", "Message previously failed to process");
456468
}
457469
}
458-
let message =
459-
self.get_message(&processed_message.message_event_id.unwrap())?;
470+
let message = self.get_message(&message_event_id)?;
460471
return Ok(message);
461472
}
462473
_ => {

0 commit comments

Comments
 (0)