|
@@ -156,23 +156,46 @@ abstract class IFieldTypeOptionLoader {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// Uses when creating a new field
|
|
class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader {
|
|
class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader {
|
|
|
|
+ FieldTypeOptionDataPB? fieldTypeOption;
|
|
|
|
+
|
|
@override
|
|
@override
|
|
final String gridId;
|
|
final String gridId;
|
|
NewFieldTypeOptionLoader({
|
|
NewFieldTypeOptionLoader({
|
|
required this.gridId,
|
|
required this.gridId,
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ /// Creates the field type option if the fieldTypeOption is null.
|
|
|
|
+ /// Otherwise, it loads the type option data from the backend.
|
|
@override
|
|
@override
|
|
Future<Either<FieldTypeOptionDataPB, FlowyError>> load() {
|
|
Future<Either<FieldTypeOptionDataPB, FlowyError>> load() {
|
|
- final payload = CreateFieldPayloadPB.create()
|
|
|
|
- ..gridId = gridId
|
|
|
|
- ..fieldType = FieldType.RichText;
|
|
|
|
-
|
|
|
|
- return GridEventCreateFieldTypeOption(payload).send();
|
|
|
|
|
|
+ if (fieldTypeOption != null) {
|
|
|
|
+ final payload = FieldTypeOptionIdPB.create()
|
|
|
|
+ ..gridId = gridId
|
|
|
|
+ ..fieldId = fieldTypeOption!.field_2.id
|
|
|
|
+ ..fieldType = fieldTypeOption!.field_2.fieldType;
|
|
|
|
+
|
|
|
|
+ return GridEventGetFieldTypeOption(payload).send();
|
|
|
|
+ } else {
|
|
|
|
+ final payload = CreateFieldPayloadPB.create()
|
|
|
|
+ ..gridId = gridId
|
|
|
|
+ ..fieldType = FieldType.RichText;
|
|
|
|
+
|
|
|
|
+ return GridEventCreateFieldTypeOption(payload).send().then((result) {
|
|
|
|
+ return result.fold(
|
|
|
|
+ (newFieldTypeOption) {
|
|
|
|
+ fieldTypeOption = newFieldTypeOption;
|
|
|
|
+ return left(newFieldTypeOption);
|
|
|
|
+ },
|
|
|
|
+ (err) => right(err),
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// Uses when editing a existing field
|
|
class FieldTypeOptionLoader extends IFieldTypeOptionLoader {
|
|
class FieldTypeOptionLoader extends IFieldTypeOptionLoader {
|
|
@override
|
|
@override
|
|
final String gridId;
|
|
final String gridId;
|