fix(android): only ask battery optimization once #1252

This commit is contained in:
Kingkor Roy Tirtho 2024-03-09 00:00:36 +06:00
parent a248a4b48c
commit e516afb185
2 changed files with 15 additions and 36 deletions

View File

@ -1,47 +1,21 @@
import 'package:disable_battery_optimization/disable_battery_optimization.dart';
import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:spotube/hooks/utils/use_async_effect.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
bool _asked = false;
void useDisableBatteryOptimizations() {
useAsyncEffect(() async {
if (!DesktopTools.platform.isAndroid || _asked) return;
final localStorage = await SharedPreferences.getInstance();
if (!DesktopTools.platform.isAndroid ||
KVStoreService.askedForBatteryOptimization) return;
final rawIsBatteryOptimizationDisabled =
localStorage.getBool("isBatteryOptimizationDisabled");
final isBatteryOptimizationDisabled =
await DisableBatteryOptimization.isBatteryOptimizationDisabled;
if (rawIsBatteryOptimizationDisabled != false &&
isBatteryOptimizationDisabled == false) {
final hasDisabled = await DisableBatteryOptimization
.showDisableBatteryOptimizationSettings();
await DisableBatteryOptimization.showDisableBatteryOptimizationSettings();
localStorage.setBool(
"isBatteryOptimizationDisabled",
hasDisabled == true,
);
}
await DisableBatteryOptimization
.showDisableManufacturerBatteryOptimizationSettings(
"Your device has additional battery optimization",
"Follow the steps and disable the optimizations to allow smooth functioning of this app",
);
final rawIsManBatteryOptimizationDisabled =
localStorage.getBool("isManufacturerBatteryOptimizationDisabled");
final isManBatteryOptimizationDisabled = await DisableBatteryOptimization
.isManufacturerBatteryOptimizationDisabled;
if (rawIsManBatteryOptimizationDisabled != false &&
isManBatteryOptimizationDisabled == false) {
final hasDisabled = await DisableBatteryOptimization
.showDisableManufacturerBatteryOptimizationSettings(
"Your device has additional battery optimization",
"Follow the steps and disable the optimizations to allow smooth functioning of this app",
);
localStorage.setBool(
"isManufacturerBatteryOptimizationDisabled",
hasDisabled == true,
);
}
_asked = true;
await KVStoreService.setAskedForBatteryOptimization(true);
}, null, []);
}

View File

@ -12,4 +12,9 @@ abstract class KVStoreService {
sharedPreferences.getBool('doneGettingStarted') ?? false;
static Future<void> setDoneGettingStarted(bool value) async =>
await sharedPreferences.setBool('doneGettingStarted', value);
static bool get askedForBatteryOptimization =>
sharedPreferences.getBool('askedForBatteryOptimization') ?? false;
static Future<void> setAskedForBatteryOptimization(bool value) async =>
await sharedPreferences.setBool('askedForBatteryOptimization', value);
}