diff --git a/lib/providers/chat_provider.dart b/lib/providers/chat_provider.dart index 899c748c..68b6eb5f 100644 --- a/lib/providers/chat_provider.dart +++ b/lib/providers/chat_provider.dart @@ -11,7 +11,7 @@ class ChatProvider extends ChangeNotifier { final Channel channelInfo; final channel = WebSocketChannel.connect(Uri.parse('wss://irc-ws.chat.twitch.tv:443')); - final messages = []; + final messages = []; final scrollController = ScrollController(); final _assetToUrl = {}; @@ -69,7 +69,7 @@ class ChatProvider extends ChangeNotifier { void handleWebsocketData(Object? data) { for (final message in data.toString().split('\r\n')) { if (message.startsWith('@')) { - parseIrcMessage(message); + messages.add(message); continue; } if (message.startsWith('P')) { @@ -79,7 +79,7 @@ class ChatProvider extends ChangeNotifier { } } - void parseIrcMessage(String whole) { + Widget parseIrcMessage(String whole) { var mappedTags = {}; final tagAndIrcMessageDivider = whole.indexOf(' '); @@ -109,16 +109,24 @@ class ChatProvider extends ChangeNotifier { break; case 'PRIVMSG': final message = splitMessage.sublist(3).join(' ').substring(1); - messages.add(const SizedBox(height: 10)); - messages.add(ChatMessage( - children: privateMessage(tags: mappedTags, chatMessage: message), - )); + if (autoScroll) { SchedulerBinding.instance?.addPostFrameCallback((_) { scrollController.jumpTo(scrollController.position.maxScrollExtent); }); } - break; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + ChatMessage( + children: privateMessage(tags: mappedTags, chatMessage: message), + ), + ], + ); + case 'ROOMSTATE': break; case 'USERNOTICE': @@ -126,6 +134,7 @@ class ChatProvider extends ChangeNotifier { case 'USERSTATE': break; } + return const SizedBox(); } List privateMessage({required Map tags, required String chatMessage}) { diff --git a/lib/widgets/chat.dart b/lib/widgets/chat.dart index 4faa5d47..12f3211c 100644 --- a/lib/widgets/chat.dart +++ b/lib/widgets/chat.dart @@ -32,7 +32,7 @@ class Chat extends StatelessWidget { controller: viewModel.scrollController, padding: const EdgeInsets.all(5.0), itemBuilder: (context, index) { - return viewModel.messages[index]; + return viewModel.parseIrcMessage(viewModel.messages[index]); }, ), Consumer( diff --git a/lib/widgets/video.dart b/lib/widgets/video.dart index add884d8..3a3b752f 100644 --- a/lib/widgets/video.dart +++ b/lib/widgets/video.dart @@ -9,7 +9,7 @@ class Video extends StatelessWidget { @override Widget build(BuildContext context) { return WebView( - initialUrl: 'https://player.twitch.tv/?channel=$channelName&muted=false&parent=localhost.com', + initialUrl: 'https://player.twitch.tv/?channel=$channelName&muted=false&parent=frosty', javascriptMode: JavascriptMode.unrestricted, allowsInlineMediaPlayback: true, initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,