1use crate::app_context::AppContext;
6use anyhow::{Context, Result};
7use document_editing::{
8 AddBlockToListDto, CreateListDto, CreateListResultDto, DeleteTextDto, DeleteTextResultDto,
9 InsertBlockDto, InsertBlockResultDto, InsertFormattedTextDto, InsertFormattedTextResultDto,
10 InsertFragmentDto, InsertFragmentResultDto, InsertFrameDto, InsertFrameResultDto,
11 InsertHtmlAtPositionDto, InsertHtmlAtPositionResultDto, InsertImageDto, InsertImageResultDto,
12 InsertListDto, InsertListResultDto, InsertMarkdownAtPositionDto,
13 InsertMarkdownAtPositionResultDto, InsertTableColumnDto, InsertTableColumnResultDto,
14 InsertTableDto, InsertTableResultDto, InsertTableRowDto, InsertTableRowResultDto,
15 InsertTextDto, InsertTextResultDto, MergeTableCellsDto, MergeTableCellsResultDto,
16 RemoveBlockFromListDto, RemoveTableColumnDto, RemoveTableColumnResultDto, RemoveTableDto,
17 RemoveTableRowDto, RemoveTableRowResultDto, SplitTableCellDto, SplitTableCellResultDto,
18 document_editing_controller,
19};
20
21pub fn insert_text(
22 ctx: &AppContext,
23 stack_id: Option<u64>,
24 dto: &InsertTextDto,
25) -> Result<InsertTextResultDto> {
26 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
27 document_editing_controller::insert_text(
28 &ctx.db_context,
29 &ctx.event_hub,
30 &mut undo_redo_manager,
31 stack_id,
32 dto,
33 )
34 .context("insert_text")
35}
36
37pub fn delete_text(
38 ctx: &AppContext,
39 stack_id: Option<u64>,
40 dto: &DeleteTextDto,
41) -> Result<DeleteTextResultDto> {
42 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
43 document_editing_controller::delete_text(
44 &ctx.db_context,
45 &ctx.event_hub,
46 &mut undo_redo_manager,
47 stack_id,
48 dto,
49 )
50 .context("delete_text")
51}
52
53pub fn insert_block(
54 ctx: &AppContext,
55 stack_id: Option<u64>,
56 dto: &InsertBlockDto,
57) -> Result<InsertBlockResultDto> {
58 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
59 document_editing_controller::insert_block(
60 &ctx.db_context,
61 &ctx.event_hub,
62 &mut undo_redo_manager,
63 stack_id,
64 dto,
65 )
66 .context("insert_block")
67}
68
69pub fn insert_image(
70 ctx: &AppContext,
71 stack_id: Option<u64>,
72 dto: &InsertImageDto,
73) -> Result<InsertImageResultDto> {
74 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
75 document_editing_controller::insert_image(
76 &ctx.db_context,
77 &ctx.event_hub,
78 &mut undo_redo_manager,
79 stack_id,
80 dto,
81 )
82 .context("insert_image")
83}
84
85pub fn insert_frame(
86 ctx: &AppContext,
87 stack_id: Option<u64>,
88 dto: &InsertFrameDto,
89) -> Result<InsertFrameResultDto> {
90 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
91 document_editing_controller::insert_frame(
92 &ctx.db_context,
93 &ctx.event_hub,
94 &mut undo_redo_manager,
95 stack_id,
96 dto,
97 )
98 .context("insert_frame")
99}
100
101pub fn insert_formatted_text(
102 ctx: &AppContext,
103 stack_id: Option<u64>,
104 dto: &InsertFormattedTextDto,
105) -> Result<InsertFormattedTextResultDto> {
106 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
107 document_editing_controller::insert_formatted_text(
108 &ctx.db_context,
109 &ctx.event_hub,
110 &mut undo_redo_manager,
111 stack_id,
112 dto,
113 )
114 .context("insert_formatted_text")
115}
116
117pub fn create_list(
118 ctx: &AppContext,
119 stack_id: Option<u64>,
120 dto: &CreateListDto,
121) -> Result<CreateListResultDto> {
122 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
123 document_editing_controller::create_list(
124 &ctx.db_context,
125 &ctx.event_hub,
126 &mut undo_redo_manager,
127 stack_id,
128 dto,
129 )
130 .context("create_list")
131}
132
133pub fn insert_list(
134 ctx: &AppContext,
135 stack_id: Option<u64>,
136 dto: &InsertListDto,
137) -> Result<InsertListResultDto> {
138 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
139 document_editing_controller::insert_list(
140 &ctx.db_context,
141 &ctx.event_hub,
142 &mut undo_redo_manager,
143 stack_id,
144 dto,
145 )
146 .context("insert_list")
147}
148
149pub fn insert_fragment(
150 ctx: &AppContext,
151 stack_id: Option<u64>,
152 dto: &InsertFragmentDto,
153) -> Result<InsertFragmentResultDto> {
154 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
155 document_editing_controller::insert_fragment(
156 &ctx.db_context,
157 &ctx.event_hub,
158 &mut undo_redo_manager,
159 stack_id,
160 dto,
161 )
162 .context("insert_fragment")
163}
164
165pub fn insert_html_at_position(
166 ctx: &AppContext,
167 stack_id: Option<u64>,
168 dto: &InsertHtmlAtPositionDto,
169) -> Result<InsertHtmlAtPositionResultDto> {
170 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
171 document_editing_controller::insert_html_at_position(
172 &ctx.db_context,
173 &ctx.event_hub,
174 &mut undo_redo_manager,
175 stack_id,
176 dto,
177 )
178 .context("insert_html_at_position")
179}
180
181pub fn insert_markdown_at_position(
182 ctx: &AppContext,
183 stack_id: Option<u64>,
184 dto: &InsertMarkdownAtPositionDto,
185) -> Result<InsertMarkdownAtPositionResultDto> {
186 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
187 document_editing_controller::insert_markdown_at_position(
188 &ctx.db_context,
189 &ctx.event_hub,
190 &mut undo_redo_manager,
191 stack_id,
192 dto,
193 )
194 .context("insert_markdown_at_position")
195}
196
197pub fn insert_table(
198 ctx: &AppContext,
199 stack_id: Option<u64>,
200 dto: &InsertTableDto,
201) -> Result<InsertTableResultDto> {
202 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
203 document_editing_controller::insert_table(
204 &ctx.db_context,
205 &ctx.event_hub,
206 &mut undo_redo_manager,
207 stack_id,
208 dto,
209 )
210 .context("insert_table")
211}
212
213pub fn remove_table(ctx: &AppContext, stack_id: Option<u64>, dto: &RemoveTableDto) -> Result<()> {
214 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
215 document_editing_controller::remove_table(
216 &ctx.db_context,
217 &ctx.event_hub,
218 &mut undo_redo_manager,
219 stack_id,
220 dto,
221 )
222 .context("remove_table")
223}
224
225pub fn insert_table_row(
226 ctx: &AppContext,
227 stack_id: Option<u64>,
228 dto: &InsertTableRowDto,
229) -> Result<InsertTableRowResultDto> {
230 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
231 document_editing_controller::insert_table_row(
232 &ctx.db_context,
233 &ctx.event_hub,
234 &mut undo_redo_manager,
235 stack_id,
236 dto,
237 )
238 .context("insert_table_row")
239}
240
241pub fn insert_table_column(
242 ctx: &AppContext,
243 stack_id: Option<u64>,
244 dto: &InsertTableColumnDto,
245) -> Result<InsertTableColumnResultDto> {
246 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
247 document_editing_controller::insert_table_column(
248 &ctx.db_context,
249 &ctx.event_hub,
250 &mut undo_redo_manager,
251 stack_id,
252 dto,
253 )
254 .context("insert_table_column")
255}
256
257pub fn remove_table_row(
258 ctx: &AppContext,
259 stack_id: Option<u64>,
260 dto: &RemoveTableRowDto,
261) -> Result<RemoveTableRowResultDto> {
262 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
263 document_editing_controller::remove_table_row(
264 &ctx.db_context,
265 &ctx.event_hub,
266 &mut undo_redo_manager,
267 stack_id,
268 dto,
269 )
270 .context("remove_table_row")
271}
272
273pub fn remove_table_column(
274 ctx: &AppContext,
275 stack_id: Option<u64>,
276 dto: &RemoveTableColumnDto,
277) -> Result<RemoveTableColumnResultDto> {
278 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
279 document_editing_controller::remove_table_column(
280 &ctx.db_context,
281 &ctx.event_hub,
282 &mut undo_redo_manager,
283 stack_id,
284 dto,
285 )
286 .context("remove_table_column")
287}
288
289pub fn merge_table_cells(
290 ctx: &AppContext,
291 stack_id: Option<u64>,
292 dto: &MergeTableCellsDto,
293) -> Result<MergeTableCellsResultDto> {
294 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
295 document_editing_controller::merge_table_cells(
296 &ctx.db_context,
297 &ctx.event_hub,
298 &mut undo_redo_manager,
299 stack_id,
300 dto,
301 )
302 .context("merge_table_cells")
303}
304
305pub fn split_table_cell(
306 ctx: &AppContext,
307 stack_id: Option<u64>,
308 dto: &SplitTableCellDto,
309) -> Result<SplitTableCellResultDto> {
310 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
311 document_editing_controller::split_table_cell(
312 &ctx.db_context,
313 &ctx.event_hub,
314 &mut undo_redo_manager,
315 stack_id,
316 dto,
317 )
318 .context("split_table_cell")
319}
320
321pub fn add_block_to_list(
322 ctx: &AppContext,
323 stack_id: Option<u64>,
324 dto: &AddBlockToListDto,
325) -> Result<()> {
326 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
327 document_editing_controller::add_block_to_list(
328 &ctx.db_context,
329 &ctx.event_hub,
330 &mut undo_redo_manager,
331 stack_id,
332 dto,
333 )
334 .context("add_block_to_list")
335}
336
337pub fn remove_block_from_list(
338 ctx: &AppContext,
339 stack_id: Option<u64>,
340 dto: &RemoveBlockFromListDto,
341) -> Result<()> {
342 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
343 document_editing_controller::remove_block_from_list(
344 &ctx.db_context,
345 &ctx.event_hub,
346 &mut undo_redo_manager,
347 stack_id,
348 dto,
349 )
350 .context("remove_block_from_list")
351}