mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-04 15:49:49 +00:00
56 lines
2.0 KiB
Dart
56 lines
2.0 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:app_links/app_links.dart';
|
|
import 'package:file_picker/file_picker.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_foreground_task/flutter_foreground_task.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import 'app/app.dart';
|
|
import 'app/child_window_app.dart';
|
|
import 'core/capabilities/app_capabilities.dart';
|
|
import 'core/entry/app_initializer.dart';
|
|
import 'core/entry/app_startup_options.dart';
|
|
import 'core/window/app_window_bootstrap.dart';
|
|
import 'core/window/app_window_launch_context.dart';
|
|
import 'core/window/window_capability_transport.dart';
|
|
import 'util/util.dart';
|
|
|
|
Future<void> main(List<String> args) async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
if (Util.isMacos()) {
|
|
// Gopeed is not sandboxed. Configure each engine before the main/child
|
|
// window split so native file and directory dialogs work in both windows.
|
|
await FilePicker.skipEntitlementsChecks();
|
|
}
|
|
if (Util.isAndroid()) {
|
|
FlutterForegroundTask.initCommunicationPort();
|
|
}
|
|
|
|
final launchContext = AppWindowLaunchContext.fromArgs(args);
|
|
|
|
if (launchContext.isSubWindow) {
|
|
final windowController = launchContext.buildController()!;
|
|
final session = await ChildWindowSession.connect(windowController);
|
|
await AppWindowBootstrap.setupSubWindow(launchContext.payload.type, localeConfig: session.appearance.value.locale);
|
|
runApp(
|
|
ProviderScope(
|
|
overrides: [appCapabilitiesProvider.overrideWithValue(session.capabilities)],
|
|
child: ChildWindowApp(payload: launchContext.payload, session: session),
|
|
),
|
|
);
|
|
return;
|
|
}
|
|
|
|
var startupOptions = AppStartupOptions.fromArgs(args);
|
|
if (Util.isDesktop() && !startupOptions.hidden) {
|
|
try {
|
|
startupOptions = startupOptions.withInitialUri(await AppLinks().getInitialLink());
|
|
} catch (_) {}
|
|
}
|
|
|
|
await AppInitializer.ensureStorageInitialized();
|
|
await AppWindowBootstrap.setupMainWindow(hidden: startupOptions.hidden);
|
|
runApp(const ProviderScope(child: GopeedApp()));
|
|
}
|