mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-12-24 21:56:47 +00:00
chore: disable add messages to page when chat is empty (#7518)
This commit is contained in:
parent
1f76412790
commit
392964ffd2
@ -19,9 +19,17 @@ class ChatSelectMessageBloc
|
||||
on<ChatSelectMessageEvent>(
|
||||
(event, emit) {
|
||||
event.when(
|
||||
enableStartSelectingMessages: () {
|
||||
emit(state.copyWith(enabled: true));
|
||||
},
|
||||
toggleSelectingMessages: () {
|
||||
if (state.isSelectingMessages) {
|
||||
emit(ChatSelectMessageState.initial());
|
||||
emit(
|
||||
state.copyWith(
|
||||
isSelectingMessages: false,
|
||||
selectedMessages: [],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
emit(state.copyWith(isSelectingMessages: true));
|
||||
}
|
||||
@ -50,8 +58,13 @@ class ChatSelectMessageBloc
|
||||
unselectAllMessages: () {
|
||||
emit(state.copyWith(selectedMessages: const []));
|
||||
},
|
||||
saveAsPage: () {
|
||||
emit(ChatSelectMessageState.initial());
|
||||
reset: () {
|
||||
emit(
|
||||
state.copyWith(
|
||||
isSelectingMessages: false,
|
||||
selectedMessages: [],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
@ -70,6 +83,8 @@ class ChatSelectMessageBloc
|
||||
|
||||
@freezed
|
||||
class ChatSelectMessageEvent with _$ChatSelectMessageEvent {
|
||||
const factory ChatSelectMessageEvent.enableStartSelectingMessages() =
|
||||
_EnableStartSelectingMessages;
|
||||
const factory ChatSelectMessageEvent.toggleSelectingMessages() =
|
||||
_ToggleSelectingMessages;
|
||||
const factory ChatSelectMessageEvent.toggleSelectMessage(Message message) =
|
||||
@ -79,7 +94,7 @@ class ChatSelectMessageEvent with _$ChatSelectMessageEvent {
|
||||
) = _SelectAllMessages;
|
||||
const factory ChatSelectMessageEvent.unselectAllMessages() =
|
||||
_UnselectAllMessages;
|
||||
const factory ChatSelectMessageEvent.saveAsPage() = _SaveAsPage;
|
||||
const factory ChatSelectMessageEvent.reset() = _Reset;
|
||||
}
|
||||
|
||||
@freezed
|
||||
@ -87,9 +102,11 @@ class ChatSelectMessageState with _$ChatSelectMessageState {
|
||||
const factory ChatSelectMessageState({
|
||||
required bool isSelectingMessages,
|
||||
required List<Message> selectedMessages,
|
||||
required bool enabled,
|
||||
}) = _ChatSelectMessageState;
|
||||
|
||||
factory ChatSelectMessageState.initial() => const ChatSelectMessageState(
|
||||
enabled: false,
|
||||
isSelectingMessages: false,
|
||||
selectedMessages: [],
|
||||
);
|
||||
|
||||
@ -178,6 +178,7 @@ class AIChatPagePluginWidgetBuilder extends PluginWidgetBuilder
|
||||
customActions: [
|
||||
CustomViewAction(
|
||||
view: notifier.view,
|
||||
disabled: !state.enabled,
|
||||
leftIcon: FlowySvgs.ai_add_to_page_s,
|
||||
label: LocaleKeys.moreAction_saveAsNewPage.tr(),
|
||||
onTap: () {
|
||||
|
||||
@ -319,6 +319,10 @@ class _ChatContentPage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
context
|
||||
.read<ChatSelectMessageBloc>()
|
||||
.add(ChatSelectMessageEvent.enableStartSelectingMessages());
|
||||
|
||||
return BlocSelector<ChatSelectMessageBloc, ChatSelectMessageState, bool>(
|
||||
selector: (state) => state.isSelectingMessages,
|
||||
builder: (context, isSelectingMessages) {
|
||||
|
||||
@ -250,7 +250,7 @@ class _SaveToPageButtonState extends State<SaveToPageButton> {
|
||||
showSaveMessageSuccessToast(context, view);
|
||||
}
|
||||
|
||||
bloc.add(const ChatSelectMessageEvent.saveAsPage());
|
||||
bloc.add(const ChatSelectMessageEvent.reset());
|
||||
|
||||
return view;
|
||||
}
|
||||
@ -275,7 +275,7 @@ class _SaveToPageButtonState extends State<SaveToPageButton> {
|
||||
showSaveMessageSuccessToast(context, newView);
|
||||
openPageFromMessage(context, newView);
|
||||
}
|
||||
bloc.add(const ChatSelectMessageEvent.saveAsPage());
|
||||
bloc.add(const ChatSelectMessageEvent.reset());
|
||||
}
|
||||
|
||||
Future<void> forceReload(String documentId) async {
|
||||
|
||||
@ -107,6 +107,7 @@ class CustomViewAction extends StatelessWidget {
|
||||
required this.view,
|
||||
required this.leftIcon,
|
||||
required this.label,
|
||||
this.disabled = false,
|
||||
this.onTap,
|
||||
this.mutex,
|
||||
});
|
||||
@ -114,6 +115,7 @@ class CustomViewAction extends StatelessWidget {
|
||||
final ViewPB view;
|
||||
final FlowySvgData leftIcon;
|
||||
final String label;
|
||||
final bool disabled;
|
||||
final VoidCallback? onTap;
|
||||
final PopoverMutex? mutex;
|
||||
|
||||
@ -122,17 +124,20 @@ class CustomViewAction extends StatelessWidget {
|
||||
return Container(
|
||||
height: 34,
|
||||
padding: const EdgeInsets.symmetric(vertical: 2.0),
|
||||
child: FlowyIconTextButton(
|
||||
child: FlowyButton(
|
||||
margin: const EdgeInsets.symmetric(horizontal: 6),
|
||||
disable: disabled,
|
||||
onTap: onTap,
|
||||
leftIconBuilder: (onHover) => FlowySvg(
|
||||
leftIcon: FlowySvg(
|
||||
leftIcon,
|
||||
size: const Size.square(16.0),
|
||||
color: disabled ? Theme.of(context).disabledColor : null,
|
||||
),
|
||||
iconPadding: 10.0,
|
||||
textBuilder: (onHover) => FlowyText(
|
||||
text: FlowyText(
|
||||
label,
|
||||
figmaLineHeight: 18.0,
|
||||
color: disabled ? Theme.of(context).disabledColor : null,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user