ente/mobile/lib/services/app_lifecycle_service.dart
2024-03-01 12:25:37 +05:30

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();
void init(SharedPreferences preferences) {
_preferences = preferences;
}
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;
}
}