Skip to content

Commit b2e5a28

Browse files
authored
Merge pull request #38 from warreth/fixes
Various Fixes
2 parents a0a2107 + 0611e0e commit b2e5a28

19 files changed

Lines changed: 1629 additions & 352 deletions

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ jobs:
290290
- name: Install dependencies
291291
run: |
292292
sudo apt-get update
293-
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libfuse2
293+
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libfuse2 libwebkit2gtk-4.1-dev
294294
295295
- name: Set up Flutter
296296
uses: subosito/flutter-action@v2

lib/main.dart

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,22 @@ import 'package:openlib/services/files.dart'
2626
show moveFilesToAndroidInternalStorage;
2727
import 'package:openlib/services/download_manager.dart';
2828
import 'package:openlib/services/download_notification.dart';
29+
import 'package:openlib/services/instance_manager.dart';
2930
import '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

3946
void 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

Comments
 (0)