import 'dart:io'; import 'package:umbrix/core/app_info/app_info_provider.dart'; import 'package:umbrix/utils/utils.dart'; import 'package:launch_at_startup/launch_at_startup.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'auto_start_notifier.g.dart'; @Riverpod(keepAlive: true) class AutoStartNotifier extends _$AutoStartNotifier with InfraLogger { @override Future build() async { if (!PlatformUtils.isDesktop) return false; final appInfo = ref.watch(appInfoProvider).requireValue; launchAtStartup.setup( appName: appInfo.name, appPath: Platform.resolvedExecutable, ); final isEnabled = await launchAtStartup.isEnabled(); loggy.info("auto start is [${isEnabled ? "Enabled" : "Disabled"}]"); return isEnabled; } Future enable() async { loggy.debug("enabling auto start"); await launchAtStartup.enable(); state = const AsyncValue.data(true); } Future disable() async { loggy.debug("disabling auto start"); await launchAtStartup.disable(); state = const AsyncValue.data(false); } }