diff --git a/lib/widgets/local_notifications_extension.dart b/lib/widgets/local_notifications_extension.dart index 36a7920e..41ef927c 100644 --- a/lib/widgets/local_notifications_extension.dart +++ b/lib/widgets/local_notifications_extension.dart @@ -3,9 +3,10 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:desktop_notifications/desktop_notifications.dart'; -import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:http/http.dart' as http; import 'package:matrix/matrix.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:universal_html/html.dart' as html; import 'package:fluffychat/config/app_config.dart'; @@ -45,14 +46,23 @@ extension LocalNotificationsExtension on MatrixState { icon: icon.toString(), ); } else if (Platform.isLinux) { - final appIconUrl = room.avatar - ?.getThumbnail( - room.client, - width: 56, - height: 56, - ) - .toString(); - final appIconFile = await DefaultCacheManager().getSingleFile(appIconUrl); + final appIconUrl = room.avatar?.getThumbnail( + room.client, + width: 56, + height: 56, + ); + File appIconFile; + if (appIconUrl != null) { + final tempDirectory = await getApplicationSupportDirectory(); + final avatarDirectory = + await Directory('${tempDirectory.path}/notiavatars/').create(); + appIconFile = File( + '${avatarDirectory.path}/${Uri.encodeComponent(appIconUrl.toString())}'); + if (await appIconFile.exists() == false) { + final response = await http.get(appIconUrl); + await appIconFile.writeAsBytes(response.bodyBytes); + } + } final notification = await linuxNotifications.notify( title, body: body,