[mob] Use flagservice for map consent
This commit is contained in:
@@ -17,7 +17,6 @@ class UserRemoteFlagService {
|
||||
final SharedPreferences _prefs;
|
||||
|
||||
static const String recoveryVerificationFlag = "recoveryKeyVerified";
|
||||
static const String mapEnabled = "mapEnabled";
|
||||
static const String mlEnabled = "faceSearchEnabled";
|
||||
static const String videoStreamingEnabled = "videoStreamingEnabled";
|
||||
static const String needRecoveryKeyVerification =
|
||||
@@ -44,9 +43,7 @@ class UserRemoteFlagService {
|
||||
|
||||
bool getCachedBoolValue(String key) {
|
||||
bool defaultValue = false;
|
||||
if (key == mapEnabled) {
|
||||
defaultValue = flagService.mapEnabled;
|
||||
} else if (key == mlEnabled) {
|
||||
if (key == mlEnabled) {
|
||||
defaultValue = flagService.hasGrantedMLConsent;
|
||||
}
|
||||
return _prefs.getBool(key) ?? defaultValue;
|
||||
|
||||
@@ -2,15 +2,13 @@ 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";
|
||||
import "package:photos/ui/components/models/button_type.dart";
|
||||
import "package:photos/utils/toast_util.dart";
|
||||
|
||||
Future<bool> requestForMapEnable(BuildContext context) async {
|
||||
const String flagName = UserRemoteFlagService.mapEnabled;
|
||||
if (userRemoteFlagService.getCachedBoolValue(flagName)) {
|
||||
if (flagService.mapEnabled) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -26,10 +24,7 @@ Future<bool> requestForMapEnable(BuildContext context) async {
|
||||
labelText: S.of(context).enableMaps,
|
||||
isInAlert: true,
|
||||
onTap: () async {
|
||||
await userRemoteFlagService.setBoolValue(
|
||||
flagName,
|
||||
true,
|
||||
);
|
||||
await flagService.setMapEnabled(true);
|
||||
},
|
||||
),
|
||||
ButtonWidget(
|
||||
@@ -52,5 +47,5 @@ Future<bool> requestForMapEnable(BuildContext context) async {
|
||||
|
||||
//For debugging.
|
||||
void disableMap() {
|
||||
userRemoteFlagService.setBoolValue(UserRemoteFlagService.mapEnabled, false);
|
||||
flagService.setMapEnabled(false);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ import "package:photos/core/error-reporting/super_logging.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/service_locator.dart";
|
||||
import "package:photos/services/preview_video_store.dart";
|
||||
import "package:photos/services/user_remote_flag_service.dart";
|
||||
import 'package:photos/theme/ente_theme.dart';
|
||||
import 'package:photos/ui/components/buttons/icon_button_widget.dart';
|
||||
import 'package:photos/ui/components/captioned_text_widget.dart';
|
||||
@@ -101,19 +100,10 @@ class AdvancedSettingsScreen extends StatelessWidget {
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () => userRemoteFlagService.getCachedBoolValue(
|
||||
UserRemoteFlagService.mapEnabled,
|
||||
),
|
||||
value: () => flagService.mapEnabled,
|
||||
onChanged: () async {
|
||||
final isEnabled =
|
||||
userRemoteFlagService.getCachedBoolValue(
|
||||
UserRemoteFlagService.mapEnabled,
|
||||
);
|
||||
|
||||
await userRemoteFlagService.setBoolValue(
|
||||
UserRemoteFlagService.mapEnabled,
|
||||
!isEnabled,
|
||||
);
|
||||
final isEnabled = flagService.mapEnabled;
|
||||
await flagService.setMapEnabled(!isEnabled);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
@@ -11,7 +11,6 @@ import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/models/file/file.dart";
|
||||
import "package:photos/service_locator.dart";
|
||||
import "package:photos/services/search_service.dart";
|
||||
import "package:photos/services/user_remote_flag_service.dart";
|
||||
import "package:photos/states/location_screen_state.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/components/buttons/chip_button_widget.dart";
|
||||
@@ -183,8 +182,7 @@ class _InfoMapState extends State<InfoMap> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_hasEnabledMap = userRemoteFlagService
|
||||
.getCachedBoolValue(UserRemoteFlagService.mapEnabled);
|
||||
_hasEnabledMap = flagService.mapEnabled;
|
||||
_fileLat = widget.file.location!.latitude!;
|
||||
_fileLng = widget.file.location!.longitude!;
|
||||
|
||||
|
||||
@@ -26,6 +26,31 @@ class RemoteFlags {
|
||||
required this.castUrl,
|
||||
});
|
||||
|
||||
// CopyWith
|
||||
RemoteFlags copyWith({
|
||||
bool? enableStripe,
|
||||
bool? disableCFWorker,
|
||||
bool? mapEnabled,
|
||||
bool? faceSearchEnabled,
|
||||
bool? recoveryKeyVerified,
|
||||
bool? internalUser,
|
||||
bool? betaUser,
|
||||
bool? enableMobMultiPart,
|
||||
String? castUrl,
|
||||
}) {
|
||||
return RemoteFlags(
|
||||
enableStripe: enableStripe ?? this.enableStripe,
|
||||
disableCFWorker: disableCFWorker ?? this.disableCFWorker,
|
||||
mapEnabled: mapEnabled ?? this.mapEnabled,
|
||||
faceSearchEnabled: faceSearchEnabled ?? this.faceSearchEnabled,
|
||||
recoveryKeyVerified: recoveryKeyVerified ?? this.recoveryKeyVerified,
|
||||
internalUser: internalUser ?? this.internalUser,
|
||||
betaUser: betaUser ?? this.betaUser,
|
||||
enableMobMultiPart: enableMobMultiPart ?? this.enableMobMultiPart,
|
||||
castUrl: castUrl ?? this.castUrl,
|
||||
);
|
||||
}
|
||||
|
||||
static RemoteFlags defaultValue = RemoteFlags(
|
||||
enableStripe: Platform.isAndroid,
|
||||
disableCFWorker: false,
|
||||
|
||||
@@ -38,6 +38,28 @@ class FlagService {
|
||||
}
|
||||
}
|
||||
|
||||
bool get disableCFWorker => flags.disableCFWorker;
|
||||
|
||||
bool get internalUser => flags.internalUser || kDebugMode;
|
||||
|
||||
bool get betaUser => flags.betaUser;
|
||||
|
||||
bool get internalOrBetaUser => internalUser || betaUser;
|
||||
|
||||
bool get enableStripe => Platform.isIOS ? false : flags.enableStripe;
|
||||
|
||||
bool get mapEnabled => flags.mapEnabled;
|
||||
|
||||
bool get isBetaUser => internalUser || flags.betaUser;
|
||||
|
||||
bool get recoveryKeyVerified => flags.recoveryKeyVerified;
|
||||
|
||||
bool get hasGrantedMLConsent => flags.faceSearchEnabled;
|
||||
|
||||
bool get enableMobMultiPart => flags.enableMobMultiPart || internalUser;
|
||||
|
||||
String get castUrl => flags.castUrl;
|
||||
|
||||
Completer<void>? _fetchCompleter;
|
||||
Future<void> _fetch() async {
|
||||
if (_fetchCompleter != null) {
|
||||
@@ -65,25 +87,32 @@ class FlagService {
|
||||
}
|
||||
}
|
||||
|
||||
bool get disableCFWorker => flags.disableCFWorker;
|
||||
Future<void> _updateKeyValue(String key, String value) async {
|
||||
try {
|
||||
final response = await _enteDio.post(
|
||||
"/remote-store/update",
|
||||
data: {
|
||||
"key": key,
|
||||
"value": value,
|
||||
},
|
||||
);
|
||||
if (response.statusCode != HttpStatus.ok) {
|
||||
throw Exception("Unexpected state");
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("Failed to set flag for $key $e");
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
bool get internalUser => flags.internalUser || kDebugMode;
|
||||
Future<void> setMapEnabled(bool isEnabled) async {
|
||||
await _updateKeyValue("mapEnabled", isEnabled.toString());
|
||||
_updateFlags(flags.copyWith(mapEnabled: isEnabled));
|
||||
}
|
||||
|
||||
bool get betaUser => flags.betaUser;
|
||||
|
||||
bool get internalOrBetaUser => internalUser || betaUser;
|
||||
|
||||
bool get enableStripe => Platform.isIOS ? false : flags.enableStripe;
|
||||
|
||||
bool get mapEnabled => flags.mapEnabled;
|
||||
|
||||
bool get isBetaUser => internalUser || flags.betaUser;
|
||||
|
||||
bool get recoveryKeyVerified => flags.recoveryKeyVerified;
|
||||
|
||||
bool get hasGrantedMLConsent => flags.faceSearchEnabled;
|
||||
|
||||
bool get enableMobMultiPart => flags.enableMobMultiPart || internalUser;
|
||||
|
||||
String get castUrl => flags.castUrl;
|
||||
void _updateFlags(RemoteFlags flags) {
|
||||
_flags = flags;
|
||||
_prefs.setString("remote_flags", flags.toJson());
|
||||
_fetch().ignore();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user