Merge branch 'main' of https://github.com/pangeachat/client into fix-reply-scrolling

pull/1384/head
Kelrap 1 year ago
commit b021a2214c

@ -14,7 +14,6 @@ import 'package:fluffychat/pangea/choreographer/widgets/start_igc_button.dart';
import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart';
import 'package:fluffychat/pangea/widgets/chat/chat_floating_action_button.dart'; import 'package:fluffychat/pangea/widgets/chat/chat_floating_action_button.dart';
import 'package:fluffychat/utils/account_config.dart'; import 'package:fluffychat/utils/account_config.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/chat_settings_popup_menu.dart'; import 'package:fluffychat/widgets/chat_settings_popup_menu.dart';
import 'package:fluffychat/widgets/connection_status_header.dart'; import 'package:fluffychat/widgets/connection_status_header.dart';
import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/matrix.dart';
@ -299,7 +298,12 @@ class ChatView extends StatelessWidget {
), ),
), ),
SafeArea( SafeArea(
child: Column( child:
// #Pangea
Stack(
children: [
// Pangea#
Column(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: GestureDetector( child: GestureDetector(
@ -308,7 +312,8 @@ class ChatView extends StatelessWidget {
builder: (context) { builder: (context) {
if (controller.timeline == null) { if (controller.timeline == null) {
return const Center( return const Center(
child: CircularProgressIndicator.adaptive( child:
CircularProgressIndicator.adaptive(
strokeWidth: 2, strokeWidth: 2,
), ),
); );
@ -341,7 +346,8 @@ class ChatView extends StatelessWidget {
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
Radius.circular(24), Radius.circular(24),
), ),
child: controller.room.isAbandonedDMRoom == true child: controller.room.isAbandonedDMRoom ==
true
? Row( ? Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
@ -353,14 +359,16 @@ class ChatView extends StatelessWidget {
padding: const EdgeInsets.all( padding: const EdgeInsets.all(
16, 16,
), ),
foregroundColor: Theme.of(context) foregroundColor:
Theme.of(context)
.colorScheme .colorScheme
.error, .error,
), ),
icon: const Icon( icon: const Icon(
Icons.archive_outlined, Icons.archive_outlined,
), ),
onPressed: controller.archiveChat, onPressed:
controller.archiveChat,
label: Text( label: Text(
L10n.of(context)!.archive, L10n.of(context)!.archive,
), ),
@ -371,7 +379,8 @@ class ChatView extends StatelessWidget {
padding: const EdgeInsets.all( padding: const EdgeInsets.all(
16, 16,
), ),
foregroundColor: Theme.of(context) foregroundColor:
Theme.of(context)
.colorScheme .colorScheme
.error, .error,
), ),
@ -395,7 +404,8 @@ class ChatView extends StatelessWidget {
icon: const Icon( icon: const Icon(
Icons.forum_outlined, Icons.forum_outlined,
), ),
onPressed: controller.recreateChat, onPressed:
controller.recreateChat,
label: Text( label: Text(
L10n.of(context)!.reopenChat, L10n.of(context)!.reopenChat,
), ),
@ -424,25 +434,13 @@ class ChatView extends StatelessWidget {
), ),
// #Pangea // #Pangea
// Keep messages above minimum input bar height // Keep messages above minimum input bar height
SizedBox( const SizedBox(
height: (PlatformInfos.isMobile ? 30 : 60), height: 60,
), ),
// Pangea# // Pangea#
], ],
), ),
),
// #Pangea // #Pangea
// if (controller.dragging)
// Container(
// color: Theme.of(context)
// .scaffoldBackgroundColor
// .withOpacity(0.9),
// alignment: Alignment.center,
// child: const Icon(
// Icons.upload_outlined,
// size: 100,
// ),
// ),
Positioned( Positioned(
left: 0, left: 0,
right: 0, right: 0,
@ -462,7 +460,8 @@ class ChatView extends StatelessWidget {
maxWidth: FluffyThemes.columnWidth * 2.4, maxWidth: FluffyThemes.columnWidth * 2.4,
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
StartIGCButton( StartIGCButton(
controller: controller, controller: controller,
@ -511,6 +510,22 @@ class ChatView extends StatelessWidget {
// Pangea# // Pangea#
], ],
), ),
// #Pangea
// if (controller.dragging)
// Container(
// color: Theme.of(context)
// .scaffoldBackgroundColor
// .withOpacity(0.9),
// alignment: Alignment.center,
// child: const Icon(
// Icons.upload_outlined,
// size: 100,
// ),
// ),
// Pangea#
),
],
),
); );
}, },
), ),

@ -911,11 +911,12 @@ class ChatListController extends State<ChatList>
await client.roomsLoading; await client.roomsLoading;
await client.accountDataLoading; await client.accountDataLoading;
await client.userDeviceKeysLoading; await client.userDeviceKeysLoading;
if (client.prevBatch == null) {
await client.onSync.stream.first;
// #Pangea // #Pangea
pangeaController.startChatWithBotIfNotPresent(); // See here for explanation of this change: https://github.com/pangeachat/client/pull/539
// if (client.prevBatch == null) {
if (client.onSync.value?.nextBatch == null) {
// Pangea# // Pangea#
await client.onSync.stream.first;
// Display first login bootstrap if enabled // Display first login bootstrap if enabled
// #Pangea // #Pangea
@ -930,9 +931,19 @@ class ChatListController extends State<ChatList>
} }
// #Pangea // #Pangea
await _initPangeaControllers(client);
// Pangea#
if (!mounted) return;
setState(() {
waitForFirstSync = true;
});
}
// #Pangea
Future<void> _initPangeaControllers(Client client) async {
if (mounted) { if (mounted) {
// TODO try not to await so much
GoogleAnalytics.analyticsUserUpdate(client.userID); GoogleAnalytics.analyticsUserUpdate(client.userID);
pangeaController.startChatWithBotIfNotPresent();
await pangeaController.subscriptionController.initialize(); await pangeaController.subscriptionController.initialize();
await pangeaController.myAnalytics.initialize(); await pangeaController.myAnalytics.initialize();
pangeaController.afterSyncAndFirstLoginInitialization(context); pangeaController.afterSyncAndFirstLoginInitialization(context);
@ -943,14 +954,9 @@ class ChatListController extends State<ChatList>
ErrorHandler.logError( ErrorHandler.logError(
m: "didn't run afterSyncAndFirstLoginInitialization because not mounted", m: "didn't run afterSyncAndFirstLoginInitialization because not mounted",
); );
// debugger(when: kDebugMode);
} }
// Pangea#
if (!mounted) return;
setState(() {
waitForFirstSync = true;
});
} }
// Pangea#
void cancelAction() { void cancelAction() {
if (selectMode == SelectMode.share) { if (selectMode == SelectMode.share) {

@ -435,7 +435,11 @@ class MessageToolbarState extends State<MessageToolbar> {
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Flexible( Container(
constraints: const BoxConstraints(
minWidth: 300,
maxHeight: 228,
),
child: SingleChildScrollView( child: SingleChildScrollView(
child: AnimatedSize( child: AnimatedSize(
duration: FluffyThemes.animationDuration, duration: FluffyThemes.animationDuration,

Loading…
Cancel
Save