diff --git a/lib/services/notify.universal.dart b/lib/services/notify.universal.dart index ebb419da..8bec7108 100644 --- a/lib/services/notify.universal.dart +++ b/lib/services/notify.universal.dart @@ -4,10 +4,12 @@ import 'package:dio/dio.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:island/main.dart'; +import 'package:island/pods/config.dart'; import 'package:island/route.dart'; import 'package:island/models/account.dart'; import 'package:island/pods/websocket.dart'; @@ -89,6 +91,7 @@ StreamSubscription setupNotificationListener( BuildContext context, WidgetRef ref, ) { + final settings = ref.watch(appSettingsProvider); final ws = ref.watch(websocketProvider); return ws.dataStream.listen((pkt) async { if (pkt.type == "notifications.new") { @@ -98,6 +101,9 @@ StreamSubscription setupNotificationListener( talker.info( '[Notification] Showing in-app notification: ${notification.title}', ); + if (settings.notifyWithHaptic) { + HapticFeedback.heavyImpact(); + } showTopSnackBar( globalOverlay.currentState!, Center( @@ -115,12 +121,12 @@ StreamSubscription setupNotificationListener( right: 16, top: (!kIsWeb && - (Platform.isMacOS || - Platform.isWindows || - Platform.isLinux)) - ? 28 - // ignore: use_build_context_synchronously - : MediaQuery.of(context).padding.top + 16, + (Platform.isMacOS || + Platform.isWindows || + Platform.isLinux)) + ? 28 + // ignore: use_build_context_synchronously + : MediaQuery.of(context).padding.top + 16, bottom: 16, ), );