diff --git a/lib/screens/channel/video/video_overlay.dart b/lib/screens/channel/video/video_overlay.dart index 25b896da..4ab3b1bd 100644 --- a/lib/screens/channel/video/video_overlay.dart +++ b/lib/screens/channel/video/video_overlay.dart @@ -125,7 +125,7 @@ class VideoOverlay extends StatelessWidget { Icons.refresh, color: Color(0xFFFFFFFF), ), - onPressed: videoStore.controller?.reload, + onPressed: videoStore.handleRefresh, ), if (Platform.isIOS && videoStore.settingsStore.pictureInPicture) IconButton( diff --git a/lib/screens/channel/video/video_store.dart b/lib/screens/channel/video/video_store.dart index aadd1480..37acc3b1 100644 --- a/lib/screens/channel/video/video_store.dart +++ b/lib/screens/channel/video/video_store.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; import 'package:frosty/api/twitch_api.dart'; import 'package:frosty/core/auth/auth_store.dart'; import 'package:frosty/models/stream.dart'; @@ -81,6 +82,11 @@ abstract class _VideoStoreBase with Store { overlayTimer = Timer(const Duration(seconds: 5), () => _menuVisible = false); } + void handleRefresh() async { + HapticFeedback.lightImpact(); + controller?.reload(); + } + void initVideo() { try { controller?.runJavascript('document.getElementsByTagName("video")[0].muted = false;'); diff --git a/lib/screens/home/streams_list.dart b/lib/screens/home/streams_list.dart index 29c2706b..da6e0133 100644 --- a/lib/screens/home/streams_list.dart +++ b/lib/screens/home/streams_list.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:frosty/screens/home/stores/list_store.dart'; import 'package:frosty/screens/settings/stores/settings_store.dart'; @@ -24,7 +25,10 @@ class _StreamsListState extends State with AutomaticKeepAliveClient store.refreshStreams(); return RefreshIndicator( - onRefresh: store.refreshStreams, + onRefresh: () async { + HapticFeedback.lightImpact(); + await store.refreshStreams(); + }, child: Observer( builder: (_) { if (store.streams.isEmpty && store.isLoading) { diff --git a/lib/screens/home/top/categories/categories.dart b/lib/screens/home/top/categories/categories.dart index 96015792..cfd7fc7f 100644 --- a/lib/screens/home/top/categories/categories.dart +++ b/lib/screens/home/top/categories/categories.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:frosty/screens/home/stores/categories_store.dart'; import 'package:frosty/screens/home/top/categories/category_card.dart'; @@ -24,7 +25,10 @@ class _CategoriesState extends State with AutomaticKeepAliveClientMi store.refreshCategories(); return RefreshIndicator( - onRefresh: store.refreshCategories, + onRefresh: () async { + HapticFeedback.lightImpact(); + await store.refreshCategories(); + }, child: Observer( builder: (_) { return Stack( diff --git a/lib/screens/home/top/categories/category_streams.dart b/lib/screens/home/top/categories/category_streams.dart index 0cb20099..e4abd206 100644 --- a/lib/screens/home/top/categories/category_streams.dart +++ b/lib/screens/home/top/categories/category_streams.dart @@ -1,5 +1,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:frosty/screens/home/stores/list_store.dart'; import 'package:frosty/screens/settings/stores/settings_store.dart'; @@ -16,7 +17,10 @@ class CategoryStreams extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( body: RefreshIndicator( - onRefresh: store.refreshStreams, + onRefresh: () async { + HapticFeedback.lightImpact(); + await store.refreshStreams(); + }, child: Observer( builder: (context) { return Stack(