Refactor: use the platform package

This commit is contained in:
Ming Ming 2023-08-27 18:58:05 +08:00
parent cd525f5168
commit 0f129f839d
39 changed files with 116 additions and 114 deletions

View file

@ -43,9 +43,9 @@ import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/mobile/self_signed_cert_manager.dart'; import 'package:nc_photos/mobile/self_signed_cert_manager.dart';
import 'package:nc_photos/platform/features.dart' as features; import 'package:nc_photos/platform/features.dart' as features;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/touch_manager.dart'; import 'package:nc_photos/touch_manager.dart';
import 'package:np_log/np_log.dart' as np_log; import 'package:np_log/np_log.dart' as np_log;
import 'package:np_platform_util/np_platform_util.dart';
import 'package:visibility_detector/visibility_detector.dart'; import 'package:visibility_detector/visibility_detector.dart';
enum InitIsolateType { enum InitIsolateType {
@ -80,7 +80,7 @@ Future<void> init(InitIsolateType isolateType) async {
await _initDiContainer(isolateType); await _initDiContainer(isolateType);
_initVisibilityDetector(); _initVisibilityDetector();
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
if (isolateType == InitIsolateType.main) { if (isolateType == InitIsolateType.main) {
try { try {
_isNewGMapsRenderer = await Activity.isNewGMapsRenderer(); _isNewGMapsRenderer = await Activity.isNewGMapsRenderer();
@ -109,7 +109,7 @@ void initDrift() {
} }
Future<void> _initDriftWorkaround() async { Future<void> _initDriftWorkaround() async {
if (platform_k.isAndroid && AndroidInfo().sdkInt < 24) { if (getRawPlatform() == NpPlatform.android && AndroidInfo().sdkInt < 24) {
_log.info("[_initDriftWorkaround] Workaround Android 6- bug"); _log.info("[_initDriftWorkaround] Workaround Android 6- bug");
// see: https://github.com/flutter/flutter/issues/73318 and // see: https://github.com/flutter/flutter/issues/73318 and
// https://github.com/simolus3/drift/issues/895 // https://github.com/simolus3/drift/issues/895
@ -146,7 +146,7 @@ Future<void> _initAccountPrefs() async {
} }
Future<void> _initDeviceInfo() async { Future<void> _initDeviceInfo() async {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
await AndroidInfo.init(); await AndroidInfo.init();
} }
} }
@ -206,7 +206,7 @@ Future<void> _initDiContainer(InitIsolateType isolateType) async {
c.touchManager = TouchManager(c); c.touchManager = TouchManager(c);
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
// local file currently only supported on Android // local file currently only supported on Android
c.localFileRepo = const LocalFileRepo(LocalFileMediaStoreDataSource()); c.localFileRepo = const LocalFileRepo(LocalFileMediaStoreDataSource());
} }
@ -222,7 +222,7 @@ Future<sql.SqliteDb> _createDb(InitIsolateType isolateType) async {
switch (isolateType) { switch (isolateType) {
case InitIsolateType.main: case InitIsolateType.main:
// use driftIsolate to prevent DB blocking the UI thread // use driftIsolate to prevent DB blocking the UI thread
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
// no isolate support on web // no isolate support on web
return sql.SqliteDb(); return sql.SqliteDb();
} else { } else {

View file

@ -16,7 +16,6 @@ import 'package:nc_photos/entity/pref.dart';
import 'package:nc_photos/event/event.dart'; import 'package:nc_photos/event/event.dart';
import 'package:nc_photos/event/native_event.dart'; import 'package:nc_photos/event/native_event.dart';
import 'package:nc_photos/exception.dart'; import 'package:nc_photos/exception.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/progress_util.dart'; import 'package:nc_photos/progress_util.dart';
import 'package:nc_photos/throttler.dart'; import 'package:nc_photos/throttler.dart';
import 'package:nc_photos/use_case/ls.dart'; import 'package:nc_photos/use_case/ls.dart';
@ -24,6 +23,7 @@ import 'package:nc_photos/use_case/scan_dir.dart';
import 'package:nc_photos/use_case/scan_dir_offline.dart'; import 'package:nc_photos/use_case/scan_dir_offline.dart';
import 'package:nc_photos/use_case/sync_dir.dart'; import 'package:nc_photos/use_case/sync_dir.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
part 'scan_account_dir.g.dart'; part 'scan_account_dir.g.dart';
@ -523,13 +523,14 @@ class ScanAccountDirBloc
late final _accountPrefUpdatedEventListener = late final _accountPrefUpdatedEventListener =
AppEventListener<AccountPrefUpdatedEvent>(_onAccountPrefUpdatedEvent); AppEventListener<AccountPrefUpdatedEvent>(_onAccountPrefUpdatedEvent);
late final _nativeFileExifUpdatedListener = platform_k.isWeb late final _nativeFileExifUpdatedListener = getRawPlatform() == NpPlatform.web
? null ? null
: NativeEventListener<FileExifUpdatedEvent>(_onNativeFileExifUpdated); : NativeEventListener<FileExifUpdatedEvent>(_onNativeFileExifUpdated);
late final _imageProcessorUploadSuccessListener = platform_k.isWeb late final _imageProcessorUploadSuccessListener =
? null getRawPlatform() == NpPlatform.web
: NativeEventListener<ImageProcessorUploadSuccessEvent>( ? null
_onImageProcessorUploadSuccessEvent); : NativeEventListener<ImageProcessorUploadSuccessEvent>(
_onImageProcessorUploadSuccessEvent);
late final _refreshThrottler = Throttler( late final _refreshThrottler = Throttler(
onTriggered: (_) { onTriggered: (_) {

View file

@ -1,8 +1,8 @@
import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:nc_photos/platform/k.dart' as platform_k; import 'package:np_platform_util/np_platform_util.dart';
Future<bool> isWifi() async { Future<bool> isWifi() async {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
// connectivity does NOT work on web, currently it will always return mobile // connectivity does NOT work on web, currently it will always return mobile
// on Blink, and none on Gecko // on Blink, and none on Gecko
return true; return true;

View file

@ -15,12 +15,12 @@ import 'package:nc_photos/mobile/android/download.dart';
import 'package:nc_photos/mobile/notification.dart'; import 'package:nc_photos/mobile/notification.dart';
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/use_case/download_file.dart'; import 'package:nc_photos/use_case/download_file.dart';
import 'package:nc_photos/use_case/inflate_file_descriptor.dart'; import 'package:nc_photos/use_case/inflate_file_descriptor.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
part 'download_handler.g.dart'; part 'download_handler.g.dart';
@ -39,7 +39,7 @@ class DownloadHandler {
}) async { }) async {
final files = await InflateFileDescriptor(_c)(account, fds); final files = await InflateFileDescriptor(_c)(account, fds);
final _DownloadHandlerBase handler; final _DownloadHandlerBase handler;
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
handler = _DownlaodHandlerAndroid(); handler = _DownlaodHandlerAndroid();
} else { } else {
handler = _DownloadHandlerWeb(); handler = _DownloadHandlerWeb();

View file

@ -3,9 +3,9 @@ import 'package:nc_photos/account.dart';
import 'package:nc_photos/api/api_util.dart' as api_util; import 'package:nc_photos/api/api_util.dart' as api_util;
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/entity/file_descriptor.dart'; import 'package:nc_photos/entity/file_descriptor.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util; import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util;
import 'package:np_api/np_api.dart' as api; import 'package:np_api/np_api.dart' as api;
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_string/np_string.dart'; import 'package:np_string/np_string.dart';
import 'package:path/path.dart' as path_lib; import 'package:path/path.dart' as path_lib;
@ -119,7 +119,8 @@ final supportedFormatMimes = [
"image/gif", "image/gif",
"video/mp4", "video/mp4",
"video/quicktime", "video/quicktime",
if (platform_k.isAndroid || platform_k.isWeb) "video/webm", if ([NpPlatform.android, NpPlatform.web].contains(getRawPlatform()))
"video/webm",
]; ];
final supportedImageFormatMimes = final supportedImageFormatMimes =

View file

@ -14,10 +14,10 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_lock/np_platform_lock.dart'; import 'package:np_platform_lock/np_platform_lock.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'database.g.dart'; part 'database.g.dart';
part 'database/nc_album_extension.dart'; part 'database/nc_album_extension.dart';

View file

@ -148,7 +148,7 @@ extension SqliteDbExtension on SqliteDb {
return await PlatformLock.synchronized(k.appDbLockId, () async { return await PlatformLock.synchronized(k.appDbLockId, () async {
// in unit tests we use an in-memory db, which mean there's no way to // in unit tests we use an in-memory db, which mean there's no way to
// access it in other isolates // access it in other isolates
if (platform_k.isUnitTest) { if (isUnitTest) {
return await callback(this, args); return await callback(this, args);
} else { } else {
return await computeWithDb(callback, args); return await computeWithDb(callback, args);

View file

@ -9,7 +9,7 @@ import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/sqlite/database.dart'; import 'package:nc_photos/entity/sqlite/database.dart';
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/platform/k.dart' as platform_k; import 'package:np_platform_util/np_platform_util.dart';
typedef ComputeWithDbCallback<T, U> = Future<U> Function( typedef ComputeWithDbCallback<T, U> = Future<U> Function(
SqliteDb db, T message); SqliteDb db, T message);
@ -26,7 +26,7 @@ Future<SqliteDb> createDb() async {
Future<U> computeWithDb<T, U>( Future<U> computeWithDb<T, U>(
ComputeWithDbCallback<T, U> callback, T args) async { ComputeWithDbCallback<T, U> callback, T args) async {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
final c = KiwiContainer().resolve<DiContainer>(); final c = KiwiContainer().resolve<DiContainer>();
return await callback(c.sqliteDb, args); return await callback(c.sqliteDb, args);
} else { } else {

View file

@ -11,13 +11,13 @@ import 'package:nc_photos/entity/pref_util.dart' as pref_util;
import 'package:nc_photos/entity/sqlite/database.dart' as sql; import 'package:nc_photos/entity/sqlite/database.dart' as sql;
import 'package:nc_photos/help_utils.dart' as help_utils; import 'package:nc_photos/help_utils.dart' as help_utils;
import 'package:nc_photos/legacy/connect.dart'; import 'package:nc_photos/legacy/connect.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
import 'package:nc_photos/url_launcher_util.dart'; import 'package:nc_photos/url_launcher_util.dart';
import 'package:nc_photos/widget/home.dart'; import 'package:nc_photos/widget/home.dart';
import 'package:nc_photos/widget/root_picker.dart'; import 'package:nc_photos/widget/root_picker.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_string/np_string.dart'; import 'package:np_string/np_string.dart';
part 'sign_in.g.dart'; part 'sign_in.g.dart';
@ -122,7 +122,8 @@ class _SignInState extends State<SignIn> {
), ),
), ),
), ),
if (!platform_k.isWeb) Expanded(child: Container()), if (getRawPlatform() != NpPlatform.web)
Expanded(child: Container()),
Container( Container(
constraints: BoxConstraints( constraints: BoxConstraints(
maxWidth: maxWidth:

View file

@ -7,9 +7,9 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/app_init.dart' as app_init; import 'package:nc_photos/app_init.dart' as app_init;
import 'package:nc_photos/bloc_util.dart'; import 'package:nc_photos/bloc_util.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/widget/my_app.dart'; import 'package:nc_photos/widget/my_app.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'main.g.dart'; part 'main.g.dart';
@ -17,7 +17,7 @@ void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await app_init.init(app_init.InitIsolateType.main); await app_init.init(app_init.InitIsolateType.main);
if (platform_k.isMobile) { if (getRawPlatform().isMobile) {
// reset orientation override just in case, see #59 // reset orientation override just in case, see #59
unawaited(SystemChrome.setPreferredOrientations([])); unawaited(SystemChrome.setPreferredOrientations([]));
} }

View file

@ -5,9 +5,9 @@ import 'package:http/http.dart' as http;
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/exception.dart'; import 'package:nc_photos/exception.dart';
import 'package:nc_photos/platform/download.dart' as itf; import 'package:nc_photos/platform/download.dart' as itf;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
@ -23,7 +23,7 @@ class DownloadBuilder extends itf.DownloadBuilder {
String? parentDir, String? parentDir,
bool? shouldNotify, bool? shouldNotify,
}) { }) {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
return _AndroidDownload( return _AndroidDownload(
url: url, url: url,
headers: headers, headers: headers,

View file

@ -1,13 +1,13 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:nc_photos/platform/file_saver.dart' as itf; import 'package:nc_photos/platform/file_saver.dart' as itf;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_platform_util/np_platform_util.dart';
class FileSaver extends itf.FileSaver { class FileSaver extends itf.FileSaver {
@override @override
saveFile(String filename, Uint8List content) { saveFile(String filename, Uint8List content) {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
return _saveFileAndroid(filename, content); return _saveFileAndroid(filename, content);
} else { } else {
throw UnimplementedError(); throw UnimplementedError();

View file

@ -1,5 +1,6 @@
import 'package:nc_photos/platform/k.dart' as platform_k; import 'package:np_platform_util/np_platform_util.dart';
final isSupportMapView = platform_k.isWeb || platform_k.isAndroid; final isSupportMapView =
final isSupportSelfSignedCert = platform_k.isAndroid; [NpPlatform.android, NpPlatform.web].contains(getRawPlatform());
final isSupportEnhancement = platform_k.isAndroid; final isSupportSelfSignedCert = getRawPlatform() == NpPlatform.android;
final isSupportEnhancement = getRawPlatform() == NpPlatform.android;

View file

@ -1,11 +0,0 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
const isWeb = kIsWeb;
// Platform n/a on web, need checking kIsWeb first
final isMobile = !kIsWeb && (Platform.isAndroid || Platform.isIOS);
final isAndroid = !kIsWeb && Platform.isAndroid;
final isDesktop =
!kIsWeb && (Platform.isLinux || Platform.isMacOS || Platform.isWindows);
final isUnitTest = !kIsWeb && Platform.environment.containsKey("FLUTTER_TEST");

View file

@ -10,11 +10,11 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/internal_download_handler.dart'; import 'package:nc_photos/internal_download_handler.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/share.dart'; import 'package:nc_photos/mobile/share.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/use_case/inflate_file_descriptor.dart'; import 'package:nc_photos/use_case/inflate_file_descriptor.dart';
import 'package:nc_photos/widget/set_as_method_dialog.dart'; import 'package:nc_photos/widget/set_as_method_dialog.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'set_as_handler.g.dart'; part 'set_as_handler.g.dart';
@ -60,7 +60,7 @@ class SetAsHandler {
} }
Future<void> _setAsAsPreview(Account account, File file) async { Future<void> _setAsAsPreview(Account account, File file) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
final results = await InternalDownloadHandler(account) final results = await InternalDownloadHandler(account)
.downloadPreviews(context, [file]); .downloadPreviews(context, [file]);
final share = AndroidFileShare(results.entries final share = AndroidFileShare(results.entries
@ -70,7 +70,7 @@ class SetAsHandler {
} }
Future<void> _setAsAsFile(Account account, File file) async { Future<void> _setAsAsFile(Account account, File file) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
final results = final results =
await InternalDownloadHandler(account).downloadFiles(context, [file]); await InternalDownloadHandler(account).downloadFiles(context, [file]);
final share = AndroidFileShare(results.entries final share = AndroidFileShare(results.entries

View file

@ -20,7 +20,6 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/internal_download_handler.dart'; import 'package:nc_photos/internal_download_handler.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/share.dart'; import 'package:nc_photos/mobile/share.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util; import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/use_case/copy.dart'; import 'package:nc_photos/use_case/copy.dart';
@ -32,6 +31,7 @@ import 'package:nc_photos/widget/share_link_multiple_files_dialog.dart';
import 'package:nc_photos/widget/share_method_dialog.dart'; import 'package:nc_photos/widget/share_method_dialog.dart';
import 'package:nc_photos/widget/simple_input_dialog.dart'; import 'package:nc_photos/widget/simple_input_dialog.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'share_handler.g.dart'; part 'share_handler.g.dart';
@ -112,7 +112,7 @@ class ShareHandler {
} }
Future<void> _shareAsPreview(Account account, List<File> files) async { Future<void> _shareAsPreview(Account account, List<File> files) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
final results = final results =
await InternalDownloadHandler(account).downloadPreviews(context, files); await InternalDownloadHandler(account).downloadPreviews(context, files);
final share = AndroidFileShare(results.entries final share = AndroidFileShare(results.entries
@ -122,7 +122,7 @@ class ShareHandler {
} }
Future<void> _shareAsFile(Account account, List<File> files) async { Future<void> _shareAsFile(Account account, List<File> files) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
final results = final results =
await InternalDownloadHandler(account).downloadFiles(context, files); await InternalDownloadHandler(account).downloadFiles(context, files);
final share = AndroidFileShare(results.entries final share = AndroidFileShare(results.entries
@ -189,7 +189,7 @@ class ShareHandler {
duration: k.snackBarDurationNormal, duration: k.snackBarDurationNormal,
)); ));
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
final textShare = AndroidTextShare(share.url!); final textShare = AndroidTextShare(share.url!);
await textShare.share(); await textShare.share();
} }

View file

@ -4,12 +4,12 @@ import 'package:nc_photos/cache_manager_util.dart';
import 'package:nc_photos/entity/file_descriptor.dart'; import 'package:nc_photos/entity/file_descriptor.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/np_api_util.dart'; import 'package:nc_photos/np_api_util.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_platform_util/np_platform_util.dart';
class DownloadPreview { class DownloadPreview {
Future<dynamic> call(Account account, FileDescriptor file) async { Future<dynamic> call(Account account, FileDescriptor file) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
final previewUrl = api_util.getFilePreviewUrl( final previewUrl = api_util.getFilePreviewUrl(
account, account,
file, file,

View file

@ -10,12 +10,12 @@ import 'package:nc_photos/app_init.dart' as app_init;
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/person.dart'; import 'package:nc_photos/entity/person.dart';
import 'package:nc_photos/event/event.dart'; import 'package:nc_photos/event/event.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/use_case/person/sync_person.dart'; import 'package:nc_photos/use_case/person/sync_person.dart';
import 'package:nc_photos/use_case/sync_favorite.dart'; import 'package:nc_photos/use_case/sync_favorite.dart';
import 'package:nc_photos/use_case/sync_tag.dart'; import 'package:nc_photos/use_case/sync_tag.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_common/type.dart'; import 'package:np_common/type.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'startup_sync.g.dart'; part 'startup_sync.g.dart';
@ -31,7 +31,7 @@ class StartupSync {
static Future<SyncResult> runInIsolate( static Future<SyncResult> runInIsolate(
Account account, PersonProvider personProvider) async { Account account, PersonProvider personProvider) async {
return _mutex.protect(() async { return _mutex.protect(() async {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
// not supported on web // not supported on web
final c = KiwiContainer().resolve<DiContainer>(); final c = KiwiContainer().resolve<DiContainer>();
return await StartupSync(c)(account, personProvider); return await StartupSync(c)(account, personProvider);

View file

@ -15,7 +15,6 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/android/android_info.dart'; import 'package:nc_photos/mobile/android/android_info.dart';
import 'package:nc_photos/mobile/android/permission_util.dart'; import 'package:nc_photos/mobile/android/permission_util.dart';
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/empty_list_indicator.dart'; import 'package:nc_photos/widget/empty_list_indicator.dart';
@ -28,6 +27,7 @@ import 'package:nc_photos/widget/selection_app_bar.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'enhanced_photo_browser.g.dart'; part 'enhanced_photo_browser.g.dart';
@ -337,7 +337,7 @@ class _EnhancedPhotoBrowserState extends State<EnhancedPhotoBrowser>
} }
Future<bool> _ensurePermission() async { Future<bool> _ensurePermission() async {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
if (AndroidInfo().sdkInt >= AndroidVersion.R) { if (AndroidInfo().sdkInt >= AndroidVersion.R) {
if (!await Permission.hasReadExternalStorage()) { if (!await Permission.hasReadExternalStorage()) {
final results = await requestPermissionsForResult([ final results = await requestPermissionsForResult([

View file

@ -19,7 +19,6 @@ import 'package:nc_photos/exception_event.dart';
import 'package:nc_photos/exception_util.dart' as exception_util; import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/share.dart'; import 'package:nc_photos/mobile/share.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util; import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util;
import 'package:nc_photos/toast.dart'; import 'package:nc_photos/toast.dart';
import 'package:nc_photos/use_case/copy.dart'; import 'package:nc_photos/use_case/copy.dart';
@ -34,6 +33,7 @@ import 'package:nc_photos/widget/simple_input_dialog.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
@ -153,7 +153,7 @@ class _ShareMethodDialog extends StatelessWidget {
return SimpleDialog( return SimpleDialog(
title: Text(L10n.global().shareMethodDialogTitle), title: Text(L10n.global().shareMethodDialogTitle),
children: [ children: [
if (platform_k.isAndroid) ...[ if (getRawPlatform() == NpPlatform.android) ...[
if (isSupportPerview) if (isSupportPerview)
SimpleDialogOption( SimpleDialogOption(
child: ListTile( child: ListTile(

View file

@ -70,7 +70,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
} }
Future<void> _doShareFile(Emitter<_State> emit) async { Future<void> _doShareFile(Emitter<_State> emit) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
emit(state.copyWith( emit(state.copyWith(
previewState: _PreviewState(index: 0, count: files.length), previewState: _PreviewState(index: 0, count: files.length),
)); ));
@ -103,7 +103,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
} }
Future<void> _doSharePreview(Emitter<_State> emit) async { Future<void> _doSharePreview(Emitter<_State> emit) async {
assert(platform_k.isAndroid); assert(getRawPlatform() == NpPlatform.android);
emit(state.copyWith( emit(state.copyWith(
previewState: _PreviewState(index: 0, count: files.length), previewState: _PreviewState(index: 0, count: files.length),
)); ));
@ -186,7 +186,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
); );
await Clipboard.setData(ClipboardData(text: share.url)); await Clipboard.setData(ClipboardData(text: share.url));
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
final textShare = AndroidTextShare(share.url!); final textShare = AndroidTextShare(share.url!);
unawaited(textShare.share()); unawaited(textShare.share());
} }

View file

@ -5,8 +5,8 @@ import 'package:nc_photos/app_init.dart' as app_init;
import 'package:nc_photos/entity/pref.dart'; import 'package:nc_photos/entity/pref.dart';
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/url_launcher_util.dart'; import 'package:nc_photos/url_launcher_util.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
enum GpsMapProvider { enum GpsMapProvider {
@ -39,7 +39,8 @@ class GpsMap extends StatelessWidget {
build(BuildContext context) { build(BuildContext context) {
if (GpsMapProvider.values[Pref().getGpsMapProviderOr(0)] == if (GpsMapProvider.values[Pref().getGpsMapProviderOr(0)] ==
GpsMapProvider.osm || GpsMapProvider.osm ||
(platform_k.isAndroid && !app_init.isNewGMapsRenderer())) { (getRawPlatform() == NpPlatform.android &&
!app_init.isNewGMapsRenderer())) {
return _OsmGpsMap( return _OsmGpsMap(
center: center, center: center,
zoom: zoom, zoom: zoom,

View file

@ -3,16 +3,16 @@ import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/android/android_info.dart'; import 'package:nc_photos/mobile/android/android_info.dart';
import 'package:nc_photos/mobile/android/permission_util.dart'; import 'package:nc_photos/mobile/android/permission_util.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_platform_util/np_platform_util.dart';
/// Handle platform permissions /// Handle platform permissions
class PermissionHandler { class PermissionHandler {
const PermissionHandler(); const PermissionHandler();
Future<bool> ensureStorageWritePermission() async { Future<bool> ensureStorageWritePermission() async {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
if (AndroidInfo().sdkInt < AndroidVersion.R && if (AndroidInfo().sdkInt < AndroidVersion.R &&
!await Permission.hasWriteExternalStorage()) { !await Permission.hasWriteExternalStorage()) {
final results = await requestPermissionsForResult([ final results = await requestPermissionsForResult([

View file

@ -29,7 +29,6 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/language_util.dart' as language_util; import 'package:nc_photos/language_util.dart' as language_util;
import 'package:nc_photos/metadata_task_manager.dart'; import 'package:nc_photos/metadata_task_manager.dart';
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/service.dart' as service; import 'package:nc_photos/service.dart' as service;
import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/share_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
@ -53,6 +52,7 @@ import 'package:nc_photos/widget/settings.dart';
import 'package:nc_photos/widget/viewer.dart'; import 'package:nc_photos/widget/viewer.dart';
import 'package:nc_photos/widget/zoom_menu_button.dart'; import 'package:nc_photos/widget/zoom_menu_button.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:visibility_detector/visibility_detector.dart'; import 'package:visibility_detector/visibility_detector.dart';
part 'home_photos.g.dart'; part 'home_photos.g.dart';
@ -726,14 +726,16 @@ class _HomePhotosState extends State<HomePhotos>
late final _prefUpdatedListener = late final _prefUpdatedListener =
AppEventListener<PrefUpdatedEvent>(_onPrefUpdated); AppEventListener<PrefUpdatedEvent>(_onPrefUpdated);
late final _imageProcessorUploadSuccessListener = platform_k.isWeb late final _imageProcessorUploadSuccessListener =
? null getRawPlatform() == NpPlatform.web
: NativeEventListener<ImageProcessorUploadSuccessEvent>( ? null
_onImageProcessorUploadSuccessEvent); : NativeEventListener<ImageProcessorUploadSuccessEvent>(
_onImageProcessorUploadSuccessEvent);
late final _onBackToTopListener = late final _onBackToTopListener =
AppEventListener<HomePhotosBackToTopEvent>(_onBackToTop); AppEventListener<HomePhotosBackToTopEvent>(_onBackToTop);
late final _Web? _web = platform_k.isWeb ? _Web(this) : null; late final _Web? _web =
getRawPlatform() == NpPlatform.web ? _Web(this) : null;
var _isScrollbarVisible = false; var _isScrollbarVisible = false;
var _isRefreshIndicatorActive = false; var _isRefreshIndicatorActive = false;

View file

@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/widget/page_changed_listener.dart'; import 'package:nc_photos/widget/page_changed_listener.dart';
import 'package:np_platform_util/np_platform_util.dart';
class HorizontalPageViewer extends StatefulWidget { class HorizontalPageViewer extends StatefulWidget {
HorizontalPageViewer({ HorizontalPageViewer({
@ -54,7 +54,7 @@ class _HorizontalPageViewerState extends State<HorizontalPageViewer> {
_updateNavigationState(widget.initialPage); _updateNavigationState(widget.initialPage);
_hasInit = true; _hasInit = true;
} }
return platform_k.isWeb return getRawPlatform() == NpPlatform.web
? _buildWebContent(context) ? _buildWebContent(context)
: _buildContent(context); : _buildContent(context);
} }
@ -66,7 +66,7 @@ class _HorizontalPageViewerState extends State<HorizontalPageViewer> {
} }
Widget _buildWebContent(BuildContext context) { Widget _buildWebContent(BuildContext context) {
assert(platform_k.isWeb); assert(getRawPlatform() == NpPlatform.web);
// support switching pages with keyboard on web // support switching pages with keyboard on web
return RawKeyboardListener( return RawKeyboardListener(
onKey: (ev) { onKey: (ev) {
@ -91,11 +91,13 @@ class _HorizontalPageViewerState extends State<HorizontalPageViewer> {
controller: widget.controller._pageController, controller: widget.controller._pageController,
itemCount: widget.pageCount, itemCount: widget.pageCount,
itemBuilder: widget.pageBuilder, itemBuilder: widget.pageBuilder,
physics: !platform_k.isWeb && widget.canSwitchPage physics:
? null getRawPlatform() != NpPlatform.web && widget.canSwitchPage
: const NeverScrollableScrollPhysics(), ? null
: const NeverScrollableScrollPhysics(),
), ),
if (platform_k.isWeb) ..._buildNavigationButtons(context), if (getRawPlatform() == NpPlatform.web)
..._buildNavigationButtons(context),
], ],
); );
} }
@ -221,7 +223,7 @@ class _HorizontalPageViewerState extends State<HorizontalPageViewer> {
/// Update the navigation state for [page] /// Update the navigation state for [page]
void _updateNavigationState(int page) { void _updateNavigationState(int page) {
// currently useless to run on non-web platform // currently useless to run on non-web platform
if (!platform_k.isWeb) { if (getRawPlatform() != NpPlatform.web) {
return; return;
} }
final hasNext = widget.pageCount == null || page < widget.pageCount! - 1; final hasNext = widget.pageCount == null || page < widget.pageCount! - 1;

View file

@ -20,7 +20,6 @@ import 'package:nc_photos/mobile/android/content_uri_image_provider.dart';
import 'package:nc_photos/mobile/android/k.dart' as android; import 'package:nc_photos/mobile/android/k.dart' as android;
import 'package:nc_photos/np_api_util.dart'; import 'package:nc_photos/np_api_util.dart';
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
import 'package:nc_photos/url_launcher_util.dart'; import 'package:nc_photos/url_launcher_util.dart';
@ -30,6 +29,7 @@ import 'package:nc_photos/widget/selectable.dart';
import 'package:nc_photos/widget/settings/enhancement_settings.dart'; import 'package:nc_photos/widget/settings/enhancement_settings.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart'; import 'package:nc_photos_plugin/nc_photos_plugin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_ui/np_ui.dart'; import 'package:np_ui/np_ui.dart';
part 'image_enhancer.g.dart'; part 'image_enhancer.g.dart';
@ -525,7 +525,7 @@ class _ImageEnhancerState extends State<ImageEnhancer> {
} }
late final _options = [ late final _options = [
if (platform_k.isAndroid) ...[ if (getRawPlatform() == NpPlatform.android) ...[
_Option( _Option(
title: L10n.global().enhanceRetouchTitle, title: L10n.global().enhanceRetouchTitle,
description: L10n.global().enhanceRetouchDescription, description: L10n.global().enhanceRetouchDescription,

View file

@ -6,12 +6,12 @@ import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/session_storage.dart'; import 'package:nc_photos/session_storage.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/selectable.dart'; import 'package:nc_photos/widget/selectable.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_util/np_platform_util.dart';
part 'selectable_item_list.g.dart'; part 'selectable_item_list.g.dart';
@ -75,7 +75,7 @@ class _SelectableItemListState<T extends SelectableItemMetadata>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
// support shift+click group selection on web // support shift+click group selection on web
return RawKeyboardListener( return RawKeyboardListener(
onKey: (ev) { onKey: (ev) {
@ -178,7 +178,7 @@ class _SelectableItemListState<T extends SelectableItemMetadata>
if (!SessionStorage().hasShowRangeSelectNotification) { if (!SessionStorage().hasShowRangeSelectNotification) {
SnackBarManager().showSnackBar( SnackBarManager().showSnackBar(
SnackBar( SnackBar(
content: Text(platform_k.isWeb content: Text(getRawPlatform() == NpPlatform.web
? L10n.global().webSelectRangeNotification ? L10n.global().webSelectRangeNotification
: L10n.global().mobileSelectRangeNotification), : L10n.global().mobileSelectRangeNotification),
duration: k.snackBarDurationNormal, duration: k.snackBarDurationNormal,

View file

@ -6,13 +6,13 @@ import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/session_storage.dart'; import 'package:nc_photos/session_storage.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/measurable_item_list.dart'; import 'package:nc_photos/widget/measurable_item_list.dart';
import 'package:nc_photos/widget/selectable.dart'; import 'package:nc_photos/widget/selectable.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_collection/np_collection.dart'; import 'package:np_collection/np_collection.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import 'package:visibility_detector/visibility_detector.dart'; import 'package:visibility_detector/visibility_detector.dart';
@ -47,7 +47,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
BuildContext context, { BuildContext context, {
required Widget child, required Widget child,
}) { }) {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
// support shift+click group selection on web // support shift+click group selection on web
return RawKeyboardListener( return RawKeyboardListener(
onKey: (ev) { onKey: (ev) {
@ -105,7 +105,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
mainAxisSpacing: mainAxisSpacing, mainAxisSpacing: mainAxisSpacing,
); );
} }
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
return WillPopScope( return WillPopScope(
onWillPop: onBackButtonPressed, onWillPop: onBackButtonPressed,
child: content, child: content,
@ -182,7 +182,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
childBorderRadius: childBorderRadius, childBorderRadius: childBorderRadius,
indicatorAlignment: indicatorAlignment, indicatorAlignment: indicatorAlignment,
onTap: () => _onItemTap(item, index), onTap: () => _onItemTap(item, index),
onLongPress: isSelectionMode && platform_k.isWeb onLongPress: isSelectionMode && getRawPlatform() == NpPlatform.web
? null ? null
: () => _onItemLongPress(item, index), : () => _onItemLongPress(item, index),
child: content, child: content,
@ -242,7 +242,9 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
return; return;
} }
final wasSelectionMode = isSelectionMode; final wasSelectionMode = isSelectionMode;
if (!platform_k.isWeb && wasSelectionMode && _lastSelectPosition != null) { if (getRawPlatform() != NpPlatform.web &&
wasSelectionMode &&
_lastSelectPosition != null) {
setState(() { setState(() {
_selectedItems.addAll(_items _selectedItems.addAll(_items
.sublist(math.min(_lastSelectPosition!, index), .sublist(math.min(_lastSelectPosition!, index),
@ -262,7 +264,7 @@ mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
if (!SessionStorage().hasShowRangeSelectNotification) { if (!SessionStorage().hasShowRangeSelectNotification) {
SnackBarManager().showSnackBar( SnackBarManager().showSnackBar(
SnackBar( SnackBar(
content: Text(platform_k.isWeb content: Text(getRawPlatform() == NpPlatform.web
? L10n.global().webSelectRangeNotification ? L10n.global().webSelectRangeNotification
: L10n.global().mobileSelectRangeNotification), : L10n.global().mobileSelectRangeNotification),
duration: k.snackBarDurationNormal, duration: k.snackBarDurationNormal,

View file

@ -14,11 +14,11 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/platform.dart' import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform; if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/mobile/self_signed_cert_manager.dart'; import 'package:nc_photos/mobile/self_signed_cert_manager.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/page_visibility_mixin.dart'; import 'package:nc_photos/widget/page_visibility_mixin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_lock/np_platform_lock.dart'; import 'package:np_platform_lock/np_platform_lock.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
part 'developer/bloc.dart'; part 'developer/bloc.dart';
@ -105,7 +105,7 @@ class _WrappedDeveloperSettingsState extends State<_WrappedDeveloperSettings>
context.read<_Bloc>().add(const _ExportDb()); context.read<_Bloc>().add(const _ExportDb());
}, },
), ),
if (platform_k.isMobile) if (getRawPlatform().isMobile)
ListTile( ListTile(
title: const Text("Clear whitelisted certs"), title: const Text("Clear whitelisted certs"),
onTap: () { onTap: () {

View file

@ -8,11 +8,11 @@ import 'package:nc_photos/controller/pref_controller.dart';
import 'package:nc_photos/exception_event.dart'; import 'package:nc_photos/exception_event.dart';
import 'package:nc_photos/exception_util.dart' as exception_util; import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/service.dart'; import 'package:nc_photos/service.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/page_visibility_mixin.dart'; import 'package:nc_photos/widget/page_visibility_mixin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
part 'metadata/bloc.dart'; part 'metadata/bloc.dart';
@ -93,7 +93,7 @@ class _WrappedMetadataSettingsState extends State<_WrappedMetadataSettings>
); );
}, },
), ),
if (platform_k.isMobile) if (getRawPlatform().isMobile)
_BlocBuilder( _BlocBuilder(
buildWhen: (previous, current) => buildWhen: (previous, current) =>
previous.isEnable != current.isEnable || previous.isEnable != current.isEnable ||

View file

@ -13,12 +13,12 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/android/android_info.dart'; import 'package:nc_photos/mobile/android/android_info.dart';
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/session_storage.dart'; import 'package:nc_photos/session_storage.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
import 'package:nc_photos/widget/page_visibility_mixin.dart'; import 'package:nc_photos/widget/page_visibility_mixin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
part 'theme/bloc.dart'; part 'theme/bloc.dart';
@ -87,7 +87,7 @@ class _WrappedThemeSettingsState extends State<_WrappedThemeSettings>
delegate: SliverChildListDelegate( delegate: SliverChildListDelegate(
[ [
const _SeedColorOption(), const _SeedColorOption(),
if (platform_k.isAndroid && if (getRawPlatform() == NpPlatform.android &&
AndroidInfo().sdkInt >= AndroidVersion.Q) AndroidInfo().sdkInt >= AndroidVersion.Q)
_BlocSelector<bool>( _BlocSelector<bool>(
selector: (state) => state.isFollowSystemTheme, selector: (state) => state.isFollowSystemTheme,

View file

@ -8,12 +8,12 @@ import 'package:nc_photos/controller/pref_controller.dart';
import 'package:nc_photos/exception_event.dart'; import 'package:nc_photos/exception_event.dart';
import 'package:nc_photos/exception_util.dart' as exception_util; import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/widget/fancy_option_picker.dart'; import 'package:nc_photos/widget/fancy_option_picker.dart';
import 'package:nc_photos/widget/gps_map.dart'; import 'package:nc_photos/widget/gps_map.dart';
import 'package:nc_photos/widget/page_visibility_mixin.dart'; import 'package:nc_photos/widget/page_visibility_mixin.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_ui/np_ui.dart'; import 'package:np_ui/np_ui.dart';
import 'package:screen_brightness/screen_brightness.dart'; import 'package:screen_brightness/screen_brightness.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
@ -82,7 +82,7 @@ class _WrappedViewerSettingsState extends State<_WrappedViewerSettings>
SliverList( SliverList(
delegate: SliverChildListDelegate( delegate: SliverChildListDelegate(
[ [
if (platform_k.isMobile) if (getRawPlatform().isMobile)
_BlocSelector<int>( _BlocSelector<int>(
selector: (state) => state.screenBrightness, selector: (state) => state.screenBrightness,
builder: (context, state) { builder: (context, state) {
@ -97,7 +97,7 @@ class _WrappedViewerSettingsState extends State<_WrappedViewerSettings>
); );
}, },
), ),
if (platform_k.isMobile) if (getRawPlatform().isMobile)
_BlocSelector<bool>( _BlocSelector<bool>(
selector: (state) => state.isForceRotation, selector: (state) => state.isForceRotation,
builder: (context, state) { builder: (context, state) {

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/platform/k.dart' as platform_k; import 'package:np_platform_util/np_platform_util.dart';
enum ShareMethod { enum ShareMethod {
file, file,
@ -20,7 +20,7 @@ class ShareMethodDialog extends StatelessWidget {
return SimpleDialog( return SimpleDialog(
title: Text(L10n.global().shareMethodDialogTitle), title: Text(L10n.global().shareMethodDialogTitle),
children: [ children: [
if (platform_k.isAndroid) ...[ if (getRawPlatform() == NpPlatform.android) ...[
if (isSupportPerview) if (isSupportPerview)
SimpleDialogOption( SimpleDialogOption(
child: ListTile( child: ListTile(

View file

@ -11,7 +11,6 @@ import 'package:nc_photos/entity/pref.dart';
import 'package:nc_photos/entity/sqlite/database.dart' as sql; import 'package:nc_photos/entity/sqlite/database.dart' as sql;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/android/activity.dart'; import 'package:nc_photos/mobile/android/activity.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/use_case/compat/v29.dart'; import 'package:nc_photos/use_case/compat/v29.dart';
import 'package:nc_photos/use_case/compat/v46.dart'; import 'package:nc_photos/use_case/compat/v46.dart';
import 'package:nc_photos/use_case/compat/v55.dart'; import 'package:nc_photos/use_case/compat/v55.dart';
@ -20,6 +19,7 @@ import 'package:nc_photos/widget/home.dart';
import 'package:nc_photos/widget/setup.dart'; import 'package:nc_photos/widget/setup.dart';
import 'package:nc_photos/widget/sign_in.dart'; import 'package:nc_photos/widget/sign_in.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:to_string/to_string.dart'; import 'package:to_string/to_string.dart';
part 'splash.g.dart'; part 'splash.g.dart';
@ -141,7 +141,7 @@ class _SplashState extends State<Splash> {
Navigator.pushReplacementNamed(context, Home.routeName, Navigator.pushReplacementNamed(context, Home.routeName,
arguments: HomeArguments(account)), arguments: HomeArguments(account)),
); );
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
final initialRoute = await Activity.consumeInitialRoute(); final initialRoute = await Activity.consumeInitialRoute();
if (initialRoute != null) { if (initialRoute != null) {
unawaited(Navigator.pushNamed(context, initialRoute)); unawaited(Navigator.pushNamed(context, initialRoute));

View file

@ -12,12 +12,12 @@ import 'package:nc_photos/entity/pref.dart';
import 'package:nc_photos/exception_util.dart' as exception_util; import 'package:nc_photos/exception_util.dart' as exception_util;
import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/np_api_util.dart'; import 'package:nc_photos/np_api_util.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/use_case/request_public_link.dart'; import 'package:nc_photos/use_case/request_public_link.dart';
import 'package:nc_photos/widget/disposable.dart'; import 'package:nc_photos/widget/disposable.dart';
import 'package:nc_photos/widget/wakelock_util.dart'; import 'package:nc_photos/widget/wakelock_util.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_ui/np_ui.dart'; import 'package:np_ui/np_ui.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
@ -286,7 +286,7 @@ class _VideoViewerState extends State<VideoViewer>
} }
Future<String> _getVideoUrl() async { Future<String> _getVideoUrl() async {
if (platform_k.isWeb) { if (getRawPlatform() == NpPlatform.web) {
return RequestPublicLink()(widget.account, widget.file); return RequestPublicLink()(widget.account, widget.file);
} else { } else {
return api_util.getFileUrl(widget.account, widget.file); return api_util.getFileUrl(widget.account, widget.file);

View file

@ -22,7 +22,6 @@ import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/location_util.dart' as location_util; import 'package:nc_photos/location_util.dart' as location_util;
import 'package:nc_photos/object_extension.dart'; import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos/platform/features.dart' as features; import 'package:nc_photos/platform/features.dart' as features;
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/set_as_handler.dart'; import 'package:nc_photos/set_as_handler.dart';
import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart';
import 'package:nc_photos/theme.dart'; import 'package:nc_photos/theme.dart';
@ -36,6 +35,7 @@ import 'package:nc_photos/widget/list_tile_center_leading.dart';
import 'package:nc_photos/widget/photo_date_time_edit_dialog.dart'; import 'package:nc_photos/widget/photo_date_time_edit_dialog.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_common/or_null.dart'; import 'package:np_common/or_null.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:np_string/np_string.dart'; import 'package:np_string/np_string.dart';
import 'package:np_ui/np_ui.dart'; import 'package:np_ui/np_ui.dart';
import 'package:path/path.dart' as path_lib; import 'package:path/path.dart' as path_lib;
@ -171,7 +171,7 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
label: L10n.global().addItemToCollectionTooltip, label: L10n.global().addItemToCollectionTooltip,
onPressed: () => _onAddToAlbumPressed(context), onPressed: () => _onAddToAlbumPressed(context),
), ),
if (platform_k.isAndroid && if (getRawPlatform() == NpPlatform.android &&
file_util.isSupportedImageFormat(_file!)) file_util.isSupportedImageFormat(_file!))
_DetailPaneButton( _DetailPaneButton(
icon: Icons.launch, icon: Icons.launch,
@ -433,7 +433,7 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
} }
void _onMapTap() { void _onMapTap() {
if (platform_k.isAndroid) { if (getRawPlatform() == NpPlatform.android) {
final intent = AndroidIntent( final intent = AndroidIntent(
action: "action_view", action: "action_view",
data: Uri.encodeFull("geo:${_gps!.item1},${_gps!.item2}?z=16"), data: Uri.encodeFull("geo:${_gps!.item1},${_gps!.item2}?z=16"),

View file

@ -5,10 +5,10 @@ import 'package:flutter/widgets.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:native_device_orientation/native_device_orientation.dart'; import 'package:native_device_orientation/native_device_orientation.dart';
import 'package:nc_photos/entity/pref.dart'; import 'package:nc_photos/entity/pref.dart';
import 'package:nc_photos/platform/k.dart' as platform_k;
import 'package:nc_photos/throttler.dart'; import 'package:nc_photos/throttler.dart';
import 'package:nc_photos/widget/disposable.dart'; import 'package:nc_photos/widget/disposable.dart';
import 'package:np_codegen/np_codegen.dart'; import 'package:np_codegen/np_codegen.dart';
import 'package:np_platform_util/np_platform_util.dart';
import 'package:screen_brightness/screen_brightness.dart'; import 'package:screen_brightness/screen_brightness.dart';
part 'viewer_mixin.g.dart'; part 'viewer_mixin.g.dart';
@ -19,9 +19,9 @@ mixin ViewerControllersMixin<T extends StatefulWidget>
initDisposables() { initDisposables() {
return [ return [
...super.initDisposables(), ...super.initDisposables(),
if (platform_k.isMobile) _ViewerBrightnessController(), if (getRawPlatform().isMobile) _ViewerBrightnessController(),
_ViewerSystemUiResetter(), _ViewerSystemUiResetter(),
if (platform_k.isMobile && Pref().isViewerForceRotationOr(false)) if (getRawPlatform().isMobile && Pref().isViewerForceRotationOr(false))
_ViewerOrientationController( _ViewerOrientationController(
onChanged: _onOrientationChanged, onChanged: _onOrientationChanged,
), ),

View file

@ -1005,7 +1005,7 @@ packages:
source: path source: path
version: "0.0.1" version: "0.0.1"
np_platform_util: np_platform_util:
dependency: transitive dependency: "direct main"
description: description:
path: "../np_platform_util" path: "../np_platform_util"
relative: true relative: true

View file

@ -111,6 +111,8 @@ dependencies:
path: ../np_math path: ../np_math
np_platform_lock: np_platform_lock:
path: ../np_platform_lock path: ../np_platform_lock
np_platform_util:
path: ../np_platform_util
np_string: np_string:
path: ../np_string path: ../np_string
np_ui: np_ui: