Skip to content

Commit 4bb91b1

Browse files
committed
Unify path eraser and eraser in one tool, closes #1130
1 parent f412911 commit 4bb91b1

17 files changed

Lines changed: 218 additions & 440 deletions

File tree

api/lib/src/converter/note.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,10 @@ NoteData _migrate(NoteData noteData, FileMetadata metadata) {
254254

255255
void updateTool(Map? item) {
256256
if (item == null) return;
257+
if (item['type'] == 'pathEraser') {
258+
item['type'] = 'eraser';
259+
item['mode'] = 'path';
260+
}
257261
final property = item['property'] as Map?;
258262
switch (item['type']) {
259263
case 'pen':

api/lib/src/models/tool.dart

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ enum HitElementMode {
6363
}
6464
}
6565

66+
enum EraserMode { stroke, path }
67+
6668
@Freezed(equal: false)
6769
sealed class Tool with _$Tool {
6870
Tool._();
@@ -127,20 +129,12 @@ sealed class Tool with _$Tool {
127129
@Default('') String name,
128130
@Default('') String displayIcon,
129131
@IdJsonConverter() String? id,
132+
@Default(EraserMode.stroke) EraserMode mode,
130133
@Default(5) double strokeWidth,
131134
@Default(HitElementMode.touchAnywhere) HitElementMode hitElementMode,
132135
@Default(false) bool eraseElements,
133136
}) = EraserTool;
134137

135-
factory Tool.pathEraser({
136-
@Default('') String name,
137-
@Default('') String displayIcon,
138-
@IdJsonConverter() String? id,
139-
@Default(5) double strokeWidth,
140-
@Default(HitElementMode.touchAnywhere) HitElementMode hitElementMode,
141-
@Default(false) bool eraseElements,
142-
}) = PathEraserTool;
143-
144138
factory Tool.collection({
145139
@Default('') String name,
146140
@Default('') String displayIcon,
@@ -290,7 +284,6 @@ sealed class Tool with _$Tool {
290284
LabelTool() => ToolCategory.normal,
291285
PenTool() => ToolCategory.normal,
292286
EraserTool() => ToolCategory.normal,
293-
PathEraserTool() => ToolCategory.normal,
294287
CollectionTool() => ToolCategory.normal,
295288
AreaTool() => ToolCategory.normal,
296289
LaserTool() => ToolCategory.normal,

api/lib/src/models/tool.freezed.dart

Lines changed: 7 additions & 85 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/lib/src/models/tool.g.dart

Lines changed: 8 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/test/migration_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ void main() {
2121
expect(info!.tools.length, 10);
2222
expect(info.tools[0], isA<SelectTool>());
2323
expect(info.tools[1], isA<PenTool>());
24-
expect(info.tools[2], isA<PathEraserTool>());
24+
expect(info.tools[2], isA<EraserTool>());
25+
expect((info.tools[2] as EraserTool).mode, EraserMode.path);
2526
expect(info.tools[3], isA<UndoTool>());
2627
expect(info.tools[4], isA<RedoTool>());
2728
expect(info.tools[5], isA<AreaTool>());

app/lib/dialogs/import/add.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,11 @@ class _AddDialogState extends State<AddDialog> {
253253
() => Tool.select(mode: SelectMode.rectangle),
254254
Tool.pen,
255255
Tool.laser,
256-
Tool.pathEraser,
257256
Tool.label,
258-
Tool.eraser,
257+
...EraserMode.values.map(
258+
(e) =>
259+
() => Tool.eraser(mode: e),
260+
),
259261
Tool.area,
260262
Tool.presentation,
261263
Tool.polygon,

0 commit comments

Comments
 (0)