From df629913eac06838dc54874c2bc15370007adeda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=BA=D0=BE=D0=B2=20=D0=A1=D0=B5=D1=80?= =?UTF-8?q?=D0=B3=D0=B5=D0=B9=20=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=87?= Date: Thu, 7 Dec 2023 15:58:30 +0300 Subject: [PATCH] aurora platform is add --- .vscode/settings.json | 2 +- .../desktop/su.markow.nextcloud-neon.desktop | 2 +- .../aurora/rpm/su.markow.nextcloud-neon.spec | 1 - packages/app/pubspec.yaml | 2 + .../neon/neon/lib/src/platform/android.dart | 2 + .../neon/neon/lib/src/platform/aurora.dart | 51 +++++++++++++++++++ .../neon/neon/lib/src/platform/linux.dart | 2 + .../neon/neon/lib/src/platform/platform.dart | 5 +- .../neon/lib/src/utils/global_options.dart | 7 ++- 9 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 packages/neon/neon/lib/src/platform/aurora.dart diff --git a/.vscode/settings.json b/.vscode/settings.json index a703676f..60b29350 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "dart.lineLength": 120, "yaml.format.singleQuote": true, - "dart.flutterSdkPath": ".fvm/flutter_sdk", + "dart.flutterSdkPath": "/home/mars/.local/opt/flutter", "files.insertFinalNewline": true, "search.exclude": { "**/.fvm": true diff --git a/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop b/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop index c31f3077..47092c67 100644 --- a/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop +++ b/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop @@ -7,6 +7,6 @@ Exec=/usr/bin/su.markow.nextcloud-neon X-Nemo-Application-Type=silica-qt5 [X-Application] -Permissions=UserDirs +Permissions=UserDirs;Internet;Camera OrganizationName=su.markow ApplicationName=nextcloud-neon diff --git a/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec b/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec index 4e85c667..510c7210 100644 --- a/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec +++ b/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec @@ -11,7 +11,6 @@ Source0: %{name}-%{version}.tar.zst BuildRequires: cmake BuildRequires: pkgconfig(flutter-embedder) BuildRequires: pkgconfig(sqlite3) -BuildRequires: pkgconfig(camera) %description %{summary}. diff --git a/packages/app/pubspec.yaml b/packages/app/pubspec.yaml index d67b8905..7160e046 100644 --- a/packages/app/pubspec.yaml +++ b/packages/app/pubspec.yaml @@ -9,6 +9,8 @@ environment: dependencies: flutter: sdk: flutter + + sqflite: ^2.3.0 sqflite_aurora: git: diff --git a/packages/neon/neon/lib/src/platform/android.dart b/packages/neon/neon/lib/src/platform/android.dart index f6776360..16fec76f 100644 --- a/packages/neon/neon/lib/src/platform/android.dart +++ b/packages/neon/neon/lib/src/platform/android.dart @@ -1,4 +1,5 @@ import 'package:meta/meta.dart'; +import 'package:neon/src/platform/aurora.dart'; import 'package:neon/src/platform/linux.dart'; import 'package:neon/src/platform/platform.dart'; import 'package:neon/src/utils/exceptions.dart'; @@ -10,6 +11,7 @@ import 'package:permission_handler/permission_handler.dart'; /// /// See: /// * [NeonPlatform] to initialize and acquire an instance +/// * [AuroraNeonPlatform] for the Android implementation /// * [LinuxNeonPlatform] for the Linux implementation @immutable @internal diff --git a/packages/neon/neon/lib/src/platform/aurora.dart b/packages/neon/neon/lib/src/platform/aurora.dart new file mode 100644 index 00000000..3e8ae576 --- /dev/null +++ b/packages/neon/neon/lib/src/platform/aurora.dart @@ -0,0 +1,51 @@ +import 'package:meta/meta.dart'; +import 'package:neon/src/platform/android.dart'; +import 'package:neon/src/platform/linux.dart'; +import 'package:neon/src/platform/platform.dart'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; + +/// Aurora specific platform information. +/// +/// See: +/// * [NeonPlatform] to initialize and acquire an instance +/// * [AndroidNeonPlatform] for the Android implementation +/// * [LinuxNeonPlatform] for the Linux implementation +@immutable +@internal +class AuroraNeonPlatform implements NeonPlatform { + /// Creates a new Aurora Neon platform. + const AuroraNeonPlatform(); + + @override + bool get canUseCamera => true; + + @override + bool get canUsePushNotifications => true; + + @override + bool get canUseQuickActions => true; + + @override + bool get canUseSystemTray => false; + + @override + bool get canUseWebView => true; + + @override + bool get canUseWindowManager => false; + + @override + bool get canUseSharing => true; + + @override + bool get shouldUseFileDialog => true; + + @override + Future get userAccessibleAppDataPath async { + return p.join((await getDownloadsDirectory())!.path); + } + + @override + void init() {} +} diff --git a/packages/neon/neon/lib/src/platform/linux.dart b/packages/neon/neon/lib/src/platform/linux.dart index 51f18797..53eab2d1 100644 --- a/packages/neon/neon/lib/src/platform/linux.dart +++ b/packages/neon/neon/lib/src/platform/linux.dart @@ -1,5 +1,6 @@ import 'package:meta/meta.dart'; import 'package:neon/src/platform/android.dart'; +import 'package:neon/src/platform/aurora.dart'; import 'package:neon/src/platform/platform.dart'; import 'package:path/path.dart' as p; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; @@ -10,6 +11,7 @@ import 'package:universal_io/io.dart'; /// See: /// * [NeonPlatform] to initialize and acquire an instance /// * [AndroidNeonPlatform] for the Android implementation +/// * [AuroraNeonPlatform] for the Android implementation @immutable @internal class LinuxNeonPlatform implements NeonPlatform { diff --git a/packages/neon/neon/lib/src/platform/platform.dart b/packages/neon/neon/lib/src/platform/platform.dart index 169c40e5..216237a8 100644 --- a/packages/neon/neon/lib/src/platform/platform.dart +++ b/packages/neon/neon/lib/src/platform/platform.dart @@ -1,7 +1,8 @@ import 'dart:async'; -import 'package:meta/meta.dart'; +import 'package:flutter/foundation.dart'; import 'package:neon/src/platform/android.dart'; +import 'package:neon/src/platform/aurora.dart'; import 'package:neon/src/platform/linux.dart'; import 'package:universal_io/io.dart'; @@ -30,6 +31,8 @@ abstract interface class NeonPlatform { if (Platform.isAndroid) { _platform = const AndroidNeonPlatform(); + } else if (TargetPlatform.aurora == defaultTargetPlatform) { + _platform = const AuroraNeonPlatform(); } else if (Platform.isLinux) { _platform = const LinuxNeonPlatform(); } else { diff --git a/packages/neon/neon/lib/src/utils/global_options.dart b/packages/neon/neon/lib/src/utils/global_options.dart index 01d93d90..dcc4b2fe 100644 --- a/packages/neon/neon/lib/src/utils/global_options.dart +++ b/packages/neon/neon/lib/src/utils/global_options.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:meta/meta.dart'; import 'package:neon/l10n/localizations.dart'; @@ -267,10 +268,12 @@ class GlobalOptions extends OptionsCollection { storage: storage, key: GlobalOptionKeys.navigationMode, label: (final context) => NeonLocalizations.of(context).globalOptionsNavigationMode, - defaultValue: Platform.isAndroid || Platform.isIOS ? NavigationMode.drawer : NavigationMode.drawerAlwaysVisible, + defaultValue: Platform.isAndroid || Platform.isIOS || TargetPlatform.aurora == defaultTargetPlatform + ? NavigationMode.drawer + : NavigationMode.drawerAlwaysVisible, values: { NavigationMode.drawer: (final context) => NeonLocalizations.of(context).globalOptionsNavigationModeDrawer, - if (!Platform.isAndroid && !Platform.isIOS) + if (!Platform.isAndroid && !Platform.isIOS && TargetPlatform.aurora != defaultTargetPlatform) NavigationMode.drawerAlwaysVisible: (final context) => NeonLocalizations.of(context).globalOptionsNavigationModeDrawerAlwaysVisible, },