chore: in empty chat popup, listen for changes to participant count and close self if it increases (#2372)
This commit is contained in:
parent
b333c45026
commit
da727a9660
2 changed files with 74 additions and 11 deletions
|
|
@ -46,8 +46,8 @@ import 'package:fluffychat/pangea/events/models/pangea_token_model.dart';
|
|||
import 'package:fluffychat/pangea/events/models/representation_content_model.dart';
|
||||
import 'package:fluffychat/pangea/events/models/tokens_event_content_model.dart';
|
||||
import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart';
|
||||
import 'package:fluffychat/pangea/instructions/empty_chat_popup.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_enum.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_show_popup.dart';
|
||||
import 'package:fluffychat/pangea/learning_settings/widgets/p_language_dialog.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart';
|
||||
import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart';
|
||||
|
|
@ -421,16 +421,6 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
ignorePointer: true,
|
||||
);
|
||||
});
|
||||
|
||||
if (room.summary.mJoinedMemberCount == 1) {
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => instructionsShowPopup(
|
||||
context,
|
||||
InstructionsEnum.emptyChatWarning,
|
||||
choreographer.inputLayerLinkAndKey.transformTargetId,
|
||||
),
|
||||
);
|
||||
}
|
||||
// Pangea#
|
||||
_tryLoadTimeline();
|
||||
if (kIsWeb) {
|
||||
|
|
@ -1934,6 +1924,13 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
final theme = Theme.of(context);
|
||||
return Row(
|
||||
children: [
|
||||
// #Pangea
|
||||
EmptyChatPopup(
|
||||
room: room,
|
||||
transformTargetId:
|
||||
choreographer.inputLayerLinkAndKey.transformTargetId,
|
||||
),
|
||||
// Pangea#
|
||||
Expanded(
|
||||
child: ChatView(this),
|
||||
),
|
||||
|
|
|
|||
66
lib/pangea/instructions/empty_chat_popup.dart
Normal file
66
lib/pangea/instructions/empty_chat_popup.dart
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
import 'package:fluffychat/pangea/instructions/instructions_enum.dart';
|
||||
import 'package:fluffychat/pangea/instructions/instructions_show_popup.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
|
||||
class EmptyChatPopup extends StatefulWidget {
|
||||
const EmptyChatPopup({
|
||||
super.key,
|
||||
required this.room,
|
||||
required this.transformTargetId,
|
||||
});
|
||||
|
||||
final Room room;
|
||||
final String transformTargetId;
|
||||
|
||||
@override
|
||||
State<EmptyChatPopup> createState() => EmptyChatPopupState();
|
||||
}
|
||||
|
||||
class EmptyChatPopupState extends State<EmptyChatPopup> {
|
||||
StreamSubscription? _memberSubscription;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.room.summary.mJoinedMemberCount == 1) {
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => instructionsShowPopup(
|
||||
context,
|
||||
InstructionsEnum.emptyChatWarning,
|
||||
widget.transformTargetId,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_memberSubscription = widget.room.client.onRoomState.stream.where(
|
||||
(u) {
|
||||
return u.roomId == widget.room.id &&
|
||||
u.state.type == EventTypes.RoomMember;
|
||||
},
|
||||
).listen((event) {
|
||||
final members = widget.room.summary.mJoinedMemberCount;
|
||||
if (members != null && members > 1) {
|
||||
MatrixState.pAnyState.closeOverlay(
|
||||
InstructionsEnum.emptyChatWarning.toString(),
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_memberSubscription?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue