ente/lib/services/app_lifecycle_service.dart

47 lines
1.3 KiB
Dart

import 'package:logging/logging.dart';
import 'package:media_extension/media_extension_action_types.dart';
import "package:shared_preferences/shared_preferences.dart";
class AppLifecycleService {
static const String keyLastAppOpenTime = "last_app_open_time";
final _logger = Logger("AppLifecycleService");
bool isForeground = false;
MediaExtentionAction mediaExtensionAction =
MediaExtentionAction(action: IntentAction.main);
late SharedPreferences _preferences;
static final AppLifecycleService instance =
AppLifecycleService._privateConstructor();
AppLifecycleService._privateConstructor();
Future<void> init() async {
_preferences = await SharedPreferences.getInstance();
}
void setMediaExtensionAction(MediaExtentionAction mediaExtensionAction) {
_logger.info("App invoked via ${mediaExtensionAction.action}");
this.mediaExtensionAction = mediaExtensionAction;
}
void onAppInForeground(String reason) {
_logger.info("App in foreground via $reason");
isForeground = true;
}
void onAppInBackground(String reason) {
_logger.info("App in background $reason");
_preferences.setInt(
keyLastAppOpenTime,
DateTime.now().microsecondsSinceEpoch,
);
isForeground = false;
}
int getLastAppOpenTime() {
return _preferences.getInt(keyLastAppOpenTime) ?? 0;
}
}