mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-08-02 22:08:49 +00:00
86 lines
2.5 KiB
Dart
86 lines
2.5 KiB
Dart
![]() |
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
||
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||
|
import 'package:appflowy_backend/protobuf/flowy-ai/protobuf.dart';
|
||
|
import 'package:easy_localization/easy_localization.dart';
|
||
|
import 'package:equatable/equatable.dart';
|
||
|
|
||
|
class PredefinedFormat extends Equatable {
|
||
|
const PredefinedFormat({
|
||
|
required this.imageFormat,
|
||
|
required this.textFormat,
|
||
|
});
|
||
|
|
||
|
final ImageFormat imageFormat;
|
||
|
final TextFormat? textFormat;
|
||
|
|
||
|
PredefinedFormatPB toPB() {
|
||
|
return PredefinedFormatPB(
|
||
|
imageFormat: switch (imageFormat) {
|
||
|
ImageFormat.text => ResponseImageFormatPB.TextOnly,
|
||
|
ImageFormat.image => ResponseImageFormatPB.ImageOnly,
|
||
|
ImageFormat.textAndImage => ResponseImageFormatPB.TextAndImage,
|
||
|
},
|
||
|
textFormat: switch (textFormat) {
|
||
|
TextFormat.paragraph => ResponseTextFormatPB.Paragraph,
|
||
|
TextFormat.bulletList => ResponseTextFormatPB.BulletedList,
|
||
|
TextFormat.numberedList => ResponseTextFormatPB.NumberedList,
|
||
|
TextFormat.table => ResponseTextFormatPB.Table,
|
||
|
_ => null,
|
||
|
},
|
||
|
);
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
List<Object?> get props => [imageFormat, textFormat];
|
||
|
}
|
||
|
|
||
|
enum ImageFormat {
|
||
|
text,
|
||
|
image,
|
||
|
textAndImage;
|
||
|
|
||
|
bool get hasText => this == text || this == textAndImage;
|
||
|
|
||
|
FlowySvgData get icon {
|
||
|
return switch (this) {
|
||
|
ImageFormat.text => FlowySvgs.ai_text_s,
|
||
|
ImageFormat.image => FlowySvgs.ai_image_s,
|
||
|
ImageFormat.textAndImage => FlowySvgs.ai_text_image_s,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
String get i18n {
|
||
|
return switch (this) {
|
||
|
ImageFormat.text => LocaleKeys.chat_changeFormat_textOnly.tr(),
|
||
|
ImageFormat.image => LocaleKeys.chat_changeFormat_imageOnly.tr(),
|
||
|
ImageFormat.textAndImage =>
|
||
|
LocaleKeys.chat_changeFormat_textAndImage.tr(),
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
enum TextFormat {
|
||
|
paragraph,
|
||
|
bulletList,
|
||
|
numberedList,
|
||
|
table;
|
||
|
|
||
|
FlowySvgData get icon {
|
||
|
return switch (this) {
|
||
|
TextFormat.paragraph => FlowySvgs.ai_paragraph_s,
|
||
|
TextFormat.bulletList => FlowySvgs.ai_list_s,
|
||
|
TextFormat.numberedList => FlowySvgs.ai_number_list_s,
|
||
|
TextFormat.table => FlowySvgs.ai_table_s,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
String get i18n {
|
||
|
return switch (this) {
|
||
|
TextFormat.paragraph => LocaleKeys.chat_changeFormat_text.tr(),
|
||
|
TextFormat.bulletList => LocaleKeys.chat_changeFormat_bullet.tr(),
|
||
|
TextFormat.numberedList => LocaleKeys.chat_changeFormat_number.tr(),
|
||
|
TextFormat.table => LocaleKeys.chat_changeFormat_table.tr(),
|
||
|
};
|
||
|
}
|
||
|
}
|