Skip to content

Commit 739a255

Browse files
committed
Dispatcher::handle_message does not need Result anymore (1)
Callers can get rid of result handling, too.
1 parent a6c57be commit 739a255

File tree

4 files changed

+36
-42
lines changed

4 files changed

+36
-42
lines changed

editor/src/communication/dispatcher.rs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{message_prelude::*, EditorError};
1+
use crate::{message_prelude::*};
22

33
pub use crate::document::DocumentsMessageHandler;
44
pub use crate::input::{InputMapper, InputPreprocessor};
@@ -26,7 +26,7 @@ const GROUP_MESSAGES: &[MessageDiscriminant] = &[
2626
];
2727

2828
impl Dispatcher {
29-
pub fn handle_message<T: Into<Message>>(&mut self, message: T) -> Result<(), EditorError> {
29+
pub fn handle_message<T: Into<Message>>(&mut self, message: T) {
3030
self.messages.push_back(message.into());
3131

3232
use Message::*;
@@ -50,7 +50,6 @@ impl Dispatcher {
5050
}
5151
}
5252
}
53-
Ok(())
5453
}
5554

5655
pub fn collect_actions(&self) -> ActionList {
@@ -126,8 +125,8 @@ mod test {
126125
let mut editor = create_editor_with_three_layers();
127126

128127
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
129-
editor.handle_message(DocumentsMessage::Copy).unwrap();
130-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
128+
editor.handle_message(DocumentsMessage::Copy);
129+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
131130
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
132131

133132
let layers_before_copy = document_before_copy.root.as_folder().unwrap().layers();
@@ -158,9 +157,9 @@ mod test {
158157
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
159158
let shape_id = document_before_copy.root.as_folder().unwrap().layer_ids[1];
160159

161-
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![shape_id]])).unwrap();
162-
editor.handle_message(DocumentsMessage::Copy).unwrap();
163-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
160+
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![shape_id]]));
161+
editor.handle_message(DocumentsMessage::Copy);
162+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
164163

165164
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
166165

@@ -192,7 +191,7 @@ mod test {
192191
const LINE_INDEX: usize = 0;
193192
const PEN_INDEX: usize = 1;
194193

195-
editor.handle_message(DocumentMessage::CreateFolder(vec![])).unwrap();
194+
editor.handle_message(DocumentMessage::CreateFolder(vec![]));
196195

197196
let document_before_added_shapes = editor.dispatcher.documents_message_handler.active_document().document.clone();
198197
let folder_id = document_before_added_shapes.root.as_folder().unwrap().layer_ids[FOLDER_INDEX];
@@ -205,8 +204,7 @@ mod test {
205204
insert_index: 0,
206205
transform: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
207206
style: Default::default(),
208-
})
209-
.unwrap();
207+
});
210208

211209
editor
212210
.handle_message(Operation::AddPen {
@@ -215,17 +213,16 @@ mod test {
215213
transform: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
216214
style: Default::default(),
217215
points: vec![(10.0, 20.0), (30.0, 40.0)],
218-
})
219-
.unwrap();
216+
});
220217

221-
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![folder_id]])).unwrap();
218+
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![folder_id]]));
222219

223220
let document_before_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
224221

225-
editor.handle_message(DocumentsMessage::Copy).unwrap();
226-
editor.handle_message(DocumentMessage::DeleteSelectedLayers).unwrap();
227-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
228-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
222+
editor.handle_message(DocumentsMessage::Copy);
223+
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
224+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
225+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
229226

230227
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
231228

@@ -282,12 +279,12 @@ mod test {
282279
let rect_id = document_before_copy.root.as_folder().unwrap().layer_ids[RECT_INDEX];
283280
let ellipse_id = document_before_copy.root.as_folder().unwrap().layer_ids[ELLIPSE_INDEX];
284281

285-
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![rect_id], vec![ellipse_id]])).unwrap();
286-
editor.handle_message(DocumentsMessage::Copy).unwrap();
287-
editor.handle_message(DocumentMessage::DeleteSelectedLayers).unwrap();
282+
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![rect_id], vec![ellipse_id]]));
283+
editor.handle_message(DocumentsMessage::Copy);
284+
editor.handle_message(DocumentMessage::DeleteSelectedLayers);
288285
editor.draw_rect(0., 800., 12., 200.);
289-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
290-
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 }).unwrap();
286+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
287+
editor.handle_message(DocumentsMessage::PasteIntoFolder { path: vec![], insert_index: -1 });
291288

292289
let document_after_copy = editor.dispatcher.documents_message_handler.active_document().document.clone();
293290

@@ -316,17 +313,17 @@ mod test {
316313

317314
let verify_order = |handler: &mut DocumentMessageHandler| (handler.all_layers_sorted(), handler.non_selected_layers_sorted(), handler.selected_layers_sorted());
318315

319-
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![0], vec![2]])).unwrap();
316+
editor.handle_message(DocumentMessage::SetSelectedLayers(vec![vec![0], vec![2]]));
320317

321-
editor.handle_message(DocumentMessage::ReorderSelectedLayers(1)).unwrap();
318+
editor.handle_message(DocumentMessage::ReorderSelectedLayers(1));
322319
let (all, non_selected, selected) = verify_order(&mut editor.dispatcher.documents_message_handler.active_document_mut());
323320
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
324321

325-
editor.handle_message(DocumentMessage::ReorderSelectedLayers(-1)).unwrap();
322+
editor.handle_message(DocumentMessage::ReorderSelectedLayers(-1));
326323
let (all, non_selected, selected) = verify_order(&mut editor.dispatcher.documents_message_handler.active_document_mut());
327324
assert_eq!(all, selected.into_iter().chain(non_selected.into_iter()).collect::<Vec<_>>());
328325

329-
editor.handle_message(DocumentMessage::ReorderSelectedLayers(i32::MAX)).unwrap();
326+
editor.handle_message(DocumentMessage::ReorderSelectedLayers(i32::MAX));
330327
let (all, non_selected, selected) = verify_order(&mut editor.dispatcher.documents_message_handler.active_document_mut());
331328
assert_eq!(all, non_selected.into_iter().chain(selected.into_iter()).collect::<Vec<_>>());
332329
}

editor/src/lib.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,11 @@ impl Editor {
3939
Self { dispatcher: Dispatcher::new() }
4040
}
4141

42-
pub fn handle_message<T: Into<Message>>(&mut self, message: T) -> Result<Vec<FrontendMessage>, EditorError> {
43-
self.dispatcher.handle_message(message).map(|_| {
44-
let mut responses = Vec::new();
45-
std::mem::swap(&mut responses, &mut self.dispatcher.responses);
46-
responses
47-
})
42+
pub fn handle_message<T: Into<Message>>(&mut self, message: T) -> Vec<FrontendMessage> {
43+
let _ = self.dispatcher.handle_message(message);
44+
let mut responses = Vec::new();
45+
std::mem::swap(&mut responses, &mut self.dispatcher.responses);
46+
responses
4847
}
4948
}
5049

editor/src/misc/test_utils.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ impl EditorTestUtils for Editor {
6262
}
6363

6464
fn mouseup(&mut self, state: EditorMouseState) {
65-
self.handle_message(InputPreprocessorMessage::MouseUp(state, ModifierKeys::default())).unwrap();
65+
self.handle_message(InputPreprocessorMessage::MouseUp(state, ModifierKeys::default()));
6666
}
6767

6868
fn lmb_mousedown(&mut self, x: f64, y: f64) {
@@ -74,14 +74,14 @@ impl EditorTestUtils for Editor {
7474
}
7575

7676
fn input(&mut self, message: InputPreprocessorMessage) {
77-
self.handle_message(Message::InputPreprocessor(message)).unwrap();
77+
self.handle_message(Message::InputPreprocessor(message));
7878
}
7979

8080
fn select_tool(&mut self, typ: ToolType) {
81-
self.handle_message(Message::Tool(ToolMessage::ActivateTool(typ))).unwrap();
81+
self.handle_message(Message::Tool(ToolMessage::ActivateTool(typ)));
8282
}
8383

8484
fn select_primary_color(&mut self, color: Color) {
85-
self.handle_message(Message::Tool(ToolMessage::SelectPrimaryColor(color))).unwrap();
85+
self.handle_message(Message::Tool(ToolMessage::SelectPrimaryColor(color)));
8686
}
8787
}

frontend/wasm/src/document.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@ fn convert_error(err: editor::EditorError) -> JsValue {
1414
}
1515

1616
fn dispatch<T: Into<Message>>(message: T) -> Result<(), JsValue> {
17-
let result = crate::EDITOR_STATE.with(|state| state.borrow_mut().handle_message(message.into()));
18-
if let Ok(messages) = result {
19-
crate::handle_responses(messages);
20-
}
21-
Ok(())
17+
let messages = crate::EDITOR_STATE.with(|state| state.borrow_mut().handle_message(message.into()));
18+
crate::handle_responses(messages);
19+
Ok(()) // TODO
2220
}
2321

2422
/// Modify the currently selected tool in the document state store

0 commit comments

Comments
 (0)