@@ -26,15 +26,22 @@ import 'package:openlib/services/files.dart'
2626 show moveFilesToAndroidInternalStorage;
2727import 'package:openlib/services/download_manager.dart' ;
2828import 'package:openlib/services/download_notification.dart' ;
29+ import 'package:openlib/services/instance_manager.dart' ;
2930import 'package:openlib/state/state.dart'
3031 show
3132 selectedIndexProvider,
3233 themeModeProvider,
3334 openPdfWithExternalAppProvider,
3435 openEpubWithExternalAppProvider,
3536 showManualDownloadButtonProvider,
37+ autoRankInstancesProvider,
3638 userAgentProvider,
37- cookieProvider;
39+ cookieProvider,
40+ selectedTypeState,
41+ selectedSortState,
42+ selectedFileTypeState,
43+ selectedLanguageState,
44+ selectedYearState;
3845
3946void main (List <String > args) async {
4047 // Required for desktop_webview_window on Linux - must be called before ensureInitialized
@@ -81,6 +88,28 @@ void main(List<String> args) async {
8188 String browserUserAgent = await dataBase.getBrowserOptions ('userAgent' );
8289 String browserCookie = await dataBase.getBrowserOptions ('cookie' );
8390
91+ // Load search filter preferences
92+ String savedType = await dataBase
93+ .getPreference ('filterType' )
94+ .catchError ((e) => 'All' ) as String ? ??
95+ 'All' ;
96+ String savedSort = await dataBase
97+ .getPreference ('filterSort' )
98+ .catchError ((e) => 'Most Relevant' ) as String ? ??
99+ 'Most Relevant' ;
100+ String savedFileType = await dataBase
101+ .getPreference ('filterFileType' )
102+ .catchError ((e) => 'All' ) as String ? ??
103+ 'All' ;
104+ String savedLanguage = await dataBase
105+ .getPreference ('filterLanguage' )
106+ .catchError ((e) => 'All' ) as String ? ??
107+ 'All' ;
108+ String savedYear = await dataBase
109+ .getPreference ('filterYear' )
110+ .catchError ((e) => 'All' ) as String ? ??
111+ 'All' ;
112+
84113 if (Platform .isAndroid) {
85114 // Android-specific setup for system UI overlay colors
86115 SystemChrome .setSystemUIOverlayStyle (SystemUiOverlayStyle (
@@ -102,6 +131,11 @@ void main(List<String> args) async {
102131 .overrideWith ((ref) => showManualDownloadButton),
103132 userAgentProvider.overrideWith ((ref) => browserUserAgent),
104133 cookieProvider.overrideWith ((ref) => browserCookie),
134+ selectedTypeState.overrideWith ((ref) => savedType),
135+ selectedSortState.overrideWith ((ref) => savedSort),
136+ selectedFileTypeState.overrideWith ((ref) => savedFileType),
137+ selectedLanguageState.overrideWith ((ref) => savedLanguage),
138+ selectedYearState.overrideWith ((ref) => savedYear),
105139 ],
106140 child: const MyApp (),
107141 ),
@@ -161,6 +195,29 @@ class _MainScreenState extends ConsumerState<MainScreen> {
161195 WidgetsBinding .instance.addPostFrameCallback ((_) {
162196 _checkForUpdatesOnStartup ();
163197 });
198+ // Auto-rank instances on startup if enabled
199+ WidgetsBinding .instance.addPostFrameCallback ((_) {
200+ _autoRankInstancesOnStartup ();
201+ });
202+ }
203+
204+ Future <void > _autoRankInstancesOnStartup () async {
205+ // Small delay to let the UI settle first
206+ await Future .delayed (const Duration (seconds: 1 ));
207+ if (! mounted) return ;
208+
209+ try {
210+ final instanceManager = InstanceManager ();
211+ final didRank = await instanceManager.rankOnStartupIfNeeded ();
212+ if (didRank) {
213+ debugPrint ("Instances auto-ranked on startup" );
214+ // Update the provider state
215+ ref.read (autoRankInstancesProvider.notifier).state = true ;
216+ }
217+ } catch (e) {
218+ // Silently fail - don't interrupt user flow
219+ debugPrint ("Auto-ranking failed: $e " );
220+ }
164221 }
165222
166223 Future <void > _checkForUpdatesOnStartup () async {
0 commit comments