Line data Source code
1 : import 'package:pal/src/database/entity/helper/helper_type.dart';
2 : import 'package:pal/src/services/editor/helper/helper_editor_models.dart';
3 : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor_viewmodel.dart';
4 : import 'package:pal/src/extensions/color_extension.dart';
5 : import 'package:pal/src/database/entity/helper/helper_entity.dart';
6 :
7 : import 'helpers/editor_fullscreen_helper/editor_fullscreen_helper_viewmodel.dart';
8 : import 'helpers/editor_simple_helper/editor_simple_helper_viewmodel.dart';
9 : import 'helpers/editor_update_helper/editor_update_helper_viewmodel.dart';
10 :
11 : class EditorViewModelFactory {
12 :
13 0 : @deprecated
14 : static HelperViewModel transform(HelperViewModel model) {
15 0 : switch (model?.helperType) {
16 0 : case HelperType.HELPER_FULL_SCREEN:
17 0 : return FullscreenHelperViewModel.fromHelperViewModel(model);
18 0 : case HelperType.SIMPLE_HELPER:
19 0 : return SimpleHelperViewModel.fromHelperViewModel(model);
20 0 : case HelperType.UPDATE_HELPER:
21 0 : return UpdateHelperViewModel.fromHelperViewModel(model);
22 0 : case HelperType.ANCHORED_OVERLAYED_HELPER:
23 : return model;
24 : default:
25 : return null;
26 : }
27 : }
28 :
29 0 : static HelperViewModel build(HelperEntity helperEntity) {
30 0 : switch (helperEntity?.type) {
31 0 : case HelperType.HELPER_FULL_SCREEN:
32 0 : return FullscreenHelperViewModel.fromHelperEntity(helperEntity);
33 0 : case HelperType.SIMPLE_HELPER:
34 0 : return SimpleHelperViewModel.fromHelperEntity(helperEntity);
35 0 : case HelperType.UPDATE_HELPER:
36 0 : return UpdateHelperViewModel.fromHelperEntity(helperEntity);
37 : default:
38 : return null;
39 : }
40 : }
41 : }
42 :
43 : class EditorEntityFactory {
44 :
45 1 : static CreateFullScreenHelper buildFullscreenArgs(
46 : CreateHelperConfig config,
47 : FullscreenHelperViewModel model,
48 : ) =>
49 1 : CreateFullScreenHelper(
50 : config: config,
51 1 : title: HelperTextConfig(
52 2 : id: model.titleField?.id,
53 3 : text: model.titleField?.text?.value,
54 4 : fontColor: model.titleField?.fontColor?.value?.toHex(),
55 3 : fontWeight: model.titleField?.fontWeight?.value,
56 3 : fontSize: model.titleField?.fontSize?.value,
57 3 : fontFamily: model.titleField?.fontFamily?.value,
58 : ),
59 1 : description: HelperTextConfig(
60 2 : id: model.descriptionField?.id,
61 3 : text: model.descriptionField?.text?.value,
62 4 : fontColor: model.descriptionField?.fontColor?.value?.toHex(),
63 3 : fontWeight: model.descriptionField?.fontWeight?.value,
64 3 : fontSize: model.descriptionField?.fontSize?.value,
65 3 : fontFamily: model.descriptionField?.fontFamily?.value,
66 : ),
67 1 : mediaHeader: HelperMediaConfig(
68 2 : id: model.media?.id,
69 3 : url: model.media?.url?.value,
70 : ),
71 1 : bodyBox: HelperBoxConfig(
72 2 : id: model.bodyBox?.id,
73 4 : color: model.bodyBox?.backgroundColor?.value?.toHex(),
74 : ),
75 1 : positivButton: HelperTextConfig(
76 2 : id: model.positivButtonField?.id,
77 3 : text: model.positivButtonField?.text?.value,
78 4 : fontColor: model.positivButtonField?.fontColor?.value?.toHex(),
79 3 : fontWeight: model.positivButtonField?.fontWeight?.value,
80 3 : fontSize: model.positivButtonField?.fontSize?.value,
81 3 : fontFamily: model.positivButtonField?.fontFamily?.value,
82 : ),
83 1 : negativButton: HelperTextConfig(
84 2 : id: model.negativButtonField?.id,
85 3 : text: model.negativButtonField?.text?.value,
86 4 : fontColor: model.negativButtonField?.fontColor?.value?.toHex(),
87 3 : fontWeight: model.negativButtonField?.fontWeight?.value,
88 3 : fontSize: model.negativButtonField?.fontSize?.value,
89 3 : fontFamily: model.negativButtonField?.fontFamily?.value,
90 : ),
91 : );
92 :
93 1 : static CreateSimpleHelper buildSimpleArgs(
94 : CreateHelperConfig config, SimpleHelperViewModel model) =>
95 1 : CreateSimpleHelper(
96 : config: config,
97 1 : boxConfig: HelperBoxConfig(
98 2 : id: model.bodyBox?.id,
99 4 : color: model.bodyBox?.backgroundColor?.value?.toHex(),
100 : ),
101 1 : titleText: HelperTextConfig(
102 3 : text: model.detailsField?.text?.value,
103 4 : fontColor: model.detailsField?.fontColor?.value?.toHex(),
104 3 : fontWeight: model.detailsField?.fontWeight?.value,
105 3 : fontSize: model.detailsField?.fontSize?.value,
106 3 : fontFamily: model.detailsField?.fontFamily?.value,
107 : ),
108 : );
109 :
110 1 : static CreateUpdateHelper buildUpdateArgs(
111 : CreateHelperConfig config, UpdateHelperViewModel model) {
112 1 : List<HelperTextConfig> lines = [];
113 3 : for (var note in model.changelogsFields.entries) {
114 1 : lines.add(
115 1 : HelperTextConfig(
116 2 : id: note?.value?.id,
117 3 : text: note?.value?.text?.value,
118 4 : fontColor: note?.value?.fontColor?.value?.toHex(),
119 3 : fontWeight: note?.value?.fontWeight?.value,
120 3 : fontSize: note?.value?.fontSize?.value,
121 3 : fontFamily: note?.value?.fontFamily?.value,
122 : ),
123 : );
124 : }
125 1 : return CreateUpdateHelper(
126 : config: config,
127 1 : title: HelperTextConfig(
128 2 : id: model.titleField?.id,
129 3 : text: model.titleField?.text?.value,
130 4 : fontColor: model.titleField?.fontColor?.value?.toHex(),
131 3 : fontWeight: model.titleField?.fontWeight?.value,
132 3 : fontSize: model.titleField?.fontSize?.value,
133 3 : fontFamily: model.titleField?.fontFamily?.value,
134 : ),
135 1 : headerMedia: HelperMediaConfig(
136 2 : id: model.media?.id,
137 3 : url: model.media?.url?.value,
138 : ),
139 1 : bodyBox: HelperBoxConfig(
140 2 : id: model.bodyBox?.id,
141 4 : color: model.bodyBox?.backgroundColor?.value?.toHex(),
142 : ),
143 : lines: lines,
144 1 : positivButton: HelperTextConfig(
145 2 : id: model.thanksButton?.id,
146 3 : text: model.thanksButton?.text?.value,
147 4 : fontColor: model.thanksButton?.fontColor?.value?.toHex(),
148 3 : fontWeight: model.thanksButton?.fontWeight?.value,
149 3 : fontSize: model.thanksButton?.fontSize?.value,
150 3 : fontFamily: model.thanksButton?.fontFamily?.value,
151 : ),
152 : );
153 : }
154 : }
|