From 81b58ba205a823c08989046385ba80b486faccc9 Mon Sep 17 00:00:00 2001 From: Tommy Chow Date: Sat, 11 Sep 2021 01:10:56 -0400 Subject: [PATCH] Fix chat PONG, move some logic to provider Fixes #3 --- lib/providers/chat_provider.dart | 16 +++++++++++++++- lib/screens/chat.dart | 10 +--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/providers/chat_provider.dart b/lib/providers/chat_provider.dart index 7cbfb531..50923ff2 100644 --- a/lib/providers/chat_provider.dart +++ b/lib/providers/chat_provider.dart @@ -1,4 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/scheduler.dart'; import 'package:flutter/widgets.dart'; import 'package:frosty/models/channel.dart'; import 'package:frosty/providers/authentication_provider.dart'; @@ -66,6 +67,14 @@ class ChatProvider extends ChangeNotifier { } void parseIrcMessage(String whole) { + if (whole.startsWith('P')) { + channel.sink.add('PONG :tmi.twitch.tv'); + return; + } + if (!whole.startsWith('@')) { + return; + } + var mappedTags = {}; final tagAndIrcMessageDivider = whole.indexOf(' '); @@ -99,6 +108,11 @@ class ChatProvider extends ChangeNotifier { messages.add(ChatMessage( children: privateMessage(tags: mappedTags, chatMessage: message), )); + if (autoScroll) { + SchedulerBinding.instance?.addPostFrameCallback((_) { + scrollController.jumpTo(scrollController.position.maxScrollExtent); + }); + } break; case 'ROOMSTATE': break; @@ -110,7 +124,7 @@ class ChatProvider extends ChangeNotifier { } List privateMessage({required Map tags, required String chatMessage}) { - debugPrint(chatMessage); + // debugPrint(chatMessage); var result = []; final emoteTags = tags['emotes']; diff --git a/lib/screens/chat.dart b/lib/screens/chat.dart index 863c4d10..9f35e6b5 100644 --- a/lib/screens/chat.dart +++ b/lib/screens/chat.dart @@ -22,15 +22,7 @@ class Chat extends StatelessWidget { stream: viewModel.channel.stream, builder: (context, snapshot) { for (final message in snapshot.data.toString().split('\r\n')) { - // print(message); - if (message.startsWith('@')) { - viewModel.parseIrcMessage(message); - } - if (viewModel.autoScroll) { - SchedulerBinding.instance?.addPostFrameCallback((_) { - viewModel.scrollController.jumpTo(viewModel.scrollController.position.maxScrollExtent); - }); - } + viewModel.parseIrcMessage(message); } return Stack( alignment: AlignmentDirectional.bottomCenter,