[client] Show foreground notification on Android, tap to open

This commit is contained in:
Abhishek Shroff
2025-04-25 15:39:31 +05:30
parent 924bce612f
commit 09eabe6dbb
6 changed files with 69 additions and 3 deletions
@@ -6,9 +6,7 @@
<application
android:label="phylum"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true"
>
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
@@ -1,5 +1,8 @@
import 'dart:io';
import 'package:background_downloader/background_downloader.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:phylum/libphylum/db/db.dart';
import 'package:phylum/libphylum/phylum_account.dart';
@@ -19,6 +22,15 @@ class DownloadManager with ChangeNotifier {
progressBar: true,
);
_downloader.registerCallbacks(
taskNotificationTapCallback: (task, notificationType) async {
if (notificationType == NotificationType.complete) {
final path = await _downloader.pathInSharedStorage(await task.filePath(), SharedStorage.downloads);
if (path != null) {
_downloader.openFile(filePath: path);
}
}
},
taskProgressCallback: (update) {
final task = update.task;
if (task is DownloadTask) {
@@ -54,6 +66,9 @@ class DownloadManager with ChangeNotifier {
Future<void> downloadResource(Resource r) async {
await _downloader.ready;
if (Platform.isAndroid || Platform.isAndroid) {
await Permission.notification.request();
}
final uri = _account.apiClient.createUriBuilder('/api/v1/fs/contents/${r.id}');
final task = DownloadTask(
url: uri.toString(),
+48
View File
@@ -753,6 +753,54 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.4"
permission_handler:
dependency: "direct main"
description:
name: permission_handler
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
url: "https://pub.dev"
source: hosted
version: "12.0.0+1"
permission_handler_android:
dependency: transitive
description:
name: permission_handler_android
sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
url: "https://pub.dev"
source: hosted
version: "13.0.1"
permission_handler_apple:
dependency: transitive
description:
name: permission_handler_apple
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev"
source: hosted
version: "9.4.7"
permission_handler_html:
dependency: transitive
description:
name: permission_handler_html
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
url: "https://pub.dev"
source: hosted
version: "0.1.3+5"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
url: "https://pub.dev"
source: hosted
version: "4.3.0"
permission_handler_windows:
dependency: transitive
description:
name: permission_handler_windows
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
url: "https://pub.dev"
source: hosted
version: "0.2.1"
petitparser:
dependency: transitive
description:
+1
View File
@@ -28,6 +28,7 @@ dependencies:
open_file:
path:
path_provider:
permission_handler:
printing:
provider:
sqlite3:
@@ -8,6 +8,7 @@
#include <file_selector_windows/file_selector_windows.h>
#include <irondash_engine_context/irondash_engine_context_plugin_c_api.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h>
#include <printing/printing_plugin.h>
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
#include <super_native_extensions/super_native_extensions_plugin_c_api.h>
@@ -17,6 +18,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("FileSelectorWindows"));
IrondashEngineContextPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("IrondashEngineContextPluginCApi"));
PermissionHandlerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
PrintingPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PrintingPlugin"));
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
@@ -5,6 +5,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
file_selector_windows
irondash_engine_context
permission_handler_windows
printing
sqlite3_flutter_libs
super_native_extensions