[mob] ServiceLocator for UserRemoteFlagService

This commit is contained in:
Neeraj Gupta
2024-10-18 16:55:02 +05:30
parent 722cdb2f42
commit af94e8163a
10 changed files with 35 additions and 37 deletions

View File

@@ -47,7 +47,6 @@ import 'package:photos/services/remote_sync_service.dart';
import 'package:photos/services/search_service.dart';
import 'package:photos/services/sync_service.dart';
import 'package:photos/services/trash_sync_service.dart';
import 'package:photos/services/user_remote_flag_service.dart';
import 'package:photos/services/user_service.dart';
import 'package:photos/ui/tools/app_lock.dart';
import 'package:photos/ui/tools/lock_screen.dart';
@@ -245,10 +244,6 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
await UserService.instance.init();
_logger.info("UserService init done $tlog");
_logger.info("UserRemoteFlagService init $tlog");
await UserRemoteFlagService.instance.init();
_logger.info("UserRemoteFlagService init done $tlog");
_logger.info("BillingService init $tlog");
BillingService.instance.init();
_logger.info("BillingService init done $tlog");

View File

@@ -8,6 +8,7 @@ import "package:photos/services/entity_service.dart";
import "package:photos/services/location_service.dart";
import "package:photos/services/storage_bonus_service.dart";
import "package:photos/services/update_service.dart";
import "package:photos/services/user_remote_flag_service.dart";
import "package:photos/utils/local_settings.dart";
import "package:shared_preferences/shared_preferences.dart";
@@ -85,3 +86,12 @@ LocationService get locationService {
_locationService ??= LocationService(ServiceLocator.instance.prefs);
return _locationService!;
}
UserRemoteFlagService? _userRemoteFlagService;
UserRemoteFlagService get userRemoteFlagService {
_userRemoteFlagService ??= UserRemoteFlagService(
ServiceLocator.instance.enteDio,
ServiceLocator.instance.prefs,
);
return _userRemoteFlagService!;
}

View File

@@ -2,23 +2,19 @@ import 'dart:async';
import 'dart:io';
import 'package:collection/collection.dart';
import "package:dio/dio.dart";
import "package:flutter/foundation.dart";
import 'package:logging/logging.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/core/network/network.dart';
import 'package:photos/events/notification_event.dart';
import "package:photos/service_locator.dart";
import 'package:photos/services/user_service.dart';
import 'package:shared_preferences/shared_preferences.dart';
class UserRemoteFlagService {
final _enteDio = NetworkClient.instance.enteDio;
final Dio _enteDio;
final _logger = Logger((UserRemoteFlagService).toString());
late SharedPreferences _prefs;
UserRemoteFlagService._privateConstructor();
static final UserRemoteFlagService instance =
UserRemoteFlagService._privateConstructor();
final SharedPreferences _prefs;
static const String recoveryVerificationFlag = "recoveryKeyVerified";
static const String mapEnabled = "mapEnabled";
@@ -26,8 +22,8 @@ class UserRemoteFlagService {
static const String needRecoveryKeyVerification =
"needRecoveryKeyVerification";
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
UserRemoteFlagService(this._enteDio, this._prefs) {
debugPrint("UserRemoteFlagService constructor");
}
bool shouldShowRecoveryVerification() {

View File

@@ -1,5 +1,3 @@
import 'dart:ui';
import 'package:bip39/bip39.dart' as bip39;
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
@@ -8,8 +6,8 @@ import 'package:photos/core/event_bus.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/events/notification_event.dart';
import "package:photos/generated/l10n.dart";
import "package:photos/service_locator.dart";
import 'package:photos/services/local_authentication_service.dart';
import 'package:photos/services/user_remote_flag_service.dart';
import 'package:photos/services/user_service.dart';
import "package:photos/theme/ente_theme.dart";
import 'package:photos/ui/account/recovery_key_page.dart';
@@ -42,7 +40,7 @@ class _VerifyRecoveryPageState extends State<VerifyRecoveryPage> {
final String recoveryKeyWords = bip39.entropyToMnemonic(recoveryKey);
if (inputKey == recoveryKey || inputKey == recoveryKeyWords) {
try {
await UserRemoteFlagService.instance.markRecoveryVerificationAsDone();
await userRemoteFlagService.markRecoveryVerificationAsDone();
} catch (e) {
await dialog.hide();
if (e is DioError && e.type == DioErrorType.other) {

View File

@@ -8,8 +8,8 @@ import 'package:photos/ente_theme_data.dart';
import 'package:photos/events/notification_event.dart';
import 'package:photos/events/sync_status_update_event.dart';
import "package:photos/generated/l10n.dart";
import "package:photos/service_locator.dart";
import 'package:photos/services/sync_service.dart';
import 'package:photos/services/user_remote_flag_service.dart';
import "package:photos/theme/ente_theme.dart";
import 'package:photos/theme/text_style.dart';
import 'package:photos/ui/account/verify_recovery_page.dart';
@@ -112,7 +112,7 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
_showErrorBanner
? HeaderErrorWidget(error: _syncError)
: const SizedBox.shrink(),
UserRemoteFlagService.instance.shouldShowRecoveryVerification() &&
userRemoteFlagService.shouldShowRecoveryVerification() &&
!_showErrorBanner
? Padding(
padding:

View File

@@ -1,6 +1,7 @@
import "package:flutter/cupertino.dart";
import "package:photos/generated/l10n.dart";
import 'package:photos/models/button_result.dart';
import "package:photos/service_locator.dart";
import "package:photos/services/user_remote_flag_service.dart";
import "package:photos/ui/components/buttons/button_widget.dart";
import "package:photos/ui/components/dialog_widget.dart";
@@ -9,7 +10,7 @@ import "package:photos/utils/toast_util.dart";
Future<bool> requestForMapEnable(BuildContext context) async {
const String flagName = UserRemoteFlagService.mapEnabled;
if (UserRemoteFlagService.instance.getCachedBoolValue(flagName)) {
if (userRemoteFlagService.getCachedBoolValue(flagName)) {
return true;
}
@@ -25,7 +26,7 @@ Future<bool> requestForMapEnable(BuildContext context) async {
labelText: S.of(context).enableMaps,
isInAlert: true,
onTap: () async {
await UserRemoteFlagService.instance.setBoolValue(
await userRemoteFlagService.setBoolValue(
flagName,
true,
);
@@ -51,6 +52,5 @@ Future<bool> requestForMapEnable(BuildContext context) async {
//For debugging.
void disableMap() {
UserRemoteFlagService.instance
.setBoolValue(UserRemoteFlagService.mapEnabled, false);
userRemoteFlagService.setBoolValue(UserRemoteFlagService.mapEnabled, false);
}

View File

@@ -173,19 +173,17 @@ class _AdvancedSettingsScreenState extends State<AdvancedSettingsScreen> {
singleBorderRadius: 8,
alignCaptionedTextToLeft: true,
trailingWidget: ToggleSwitchWidget(
value: () => UserRemoteFlagService.instance
.getCachedBoolValue(
value: () =>
userRemoteFlagService.getCachedBoolValue(
UserRemoteFlagService.mapEnabled,
),
onChanged: () async {
final isEnabled = UserRemoteFlagService
.instance
.getCachedBoolValue(
final isEnabled =
userRemoteFlagService.getCachedBoolValue(
UserRemoteFlagService.mapEnabled,
);
await UserRemoteFlagService.instance
.setBoolValue(
await userRemoteFlagService.setBoolValue(
UserRemoteFlagService.mapEnabled,
!isEnabled,
);

View File

@@ -1,5 +1,6 @@
import "package:flutter/material.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/service_locator.dart";
import "package:photos/services/user_remote_flag_service.dart";
import "package:photos/theme/ente_theme.dart";
import "package:photos/ui/common/web_page.dart";
@@ -140,7 +141,7 @@ class _EnableMachineLearningConsentState
Future<void> enableMlConsent(BuildContext context) async {
try {
await UserRemoteFlagService.instance.setBoolValue(
await userRemoteFlagService.setBoolValue(
UserRemoteFlagService.mlEnabled,
true,
);

View File

@@ -210,7 +210,7 @@ class _MachineLearningSettingsPageState
}
Future<void> toggleIndexingState() async {
final hasGivenConsent = UserRemoteFlagService.instance
final hasGivenConsent = userRemoteFlagService
.getCachedBoolValue(UserRemoteFlagService.mlEnabled);
if (!localSettings.isMLIndexingEnabled && !hasGivenConsent) {
final result = await Navigator.push(
@@ -232,8 +232,8 @@ class _MachineLearningSettingsPageState
unawaited(MLService.instance.runAllML(force: true));
} else {
MLService.instance.pauseIndexingAndClustering();
await UserRemoteFlagService.instance
.setBoolValue(UserRemoteFlagService.mlEnabled, false);
await userRemoteFlagService.setBoolValue(
UserRemoteFlagService.mlEnabled, false);
}
if (mounted) {
setState(() {});

View File

@@ -183,7 +183,7 @@ class _InfoMapState extends State<InfoMap> {
@override
void initState() {
super.initState();
_hasEnabledMap = UserRemoteFlagService.instance
_hasEnabledMap = userRemoteFlagService
.getCachedBoolValue(UserRemoteFlagService.mapEnabled);
_fileLat = widget.file.location!.latitude!;
_fileLng = widget.file.location!.longitude!;