@@ -1138,131 +1138,3 @@ class _AdConfigFormState extends State<_AdConfigForm> {
11381138 }
11391139 }
11401140}
1141-
1142- class _AccountActionConfigForm extends StatefulWidget {
1143- const _AccountActionConfigForm ({
1144- required this .userRole,
1145- required this .remoteConfig,
1146- required this .onConfigChanged,
1147- required this .buildIntField,
1148- });
1149-
1150- final AppUserRole userRole;
1151- final RemoteConfig remoteConfig;
1152- final ValueChanged <RemoteConfig > onConfigChanged;
1153- final Widget Function (
1154- BuildContext context, {
1155- required String label,
1156- required String description,
1157- required int value,
1158- required ValueChanged <int > onChanged,
1159- TextEditingController ? controller,
1160- })
1161- buildIntField;
1162-
1163- @override
1164- State <_AccountActionConfigForm > createState () =>
1165- _AccountActionConfigFormState ();
1166- }
1167-
1168- class _AccountActionConfigFormState extends State <_AccountActionConfigForm > {
1169- late final Map <FeedActionType , TextEditingController > _controllers;
1170-
1171- @override
1172- void initState () {
1173- super .initState ();
1174- _controllers = _initializeControllers ();
1175- }
1176-
1177- @override
1178- void didUpdateWidget (covariant _AccountActionConfigForm oldWidget) {
1179- super .didUpdateWidget (oldWidget);
1180- if (widget.remoteConfig.accountActionConfig !=
1181- oldWidget.remoteConfig.accountActionConfig) {
1182- _updateControllers ();
1183- }
1184- }
1185-
1186- Map <FeedActionType , TextEditingController > _initializeControllers () {
1187- final config = widget.remoteConfig.accountActionConfig;
1188- final daysMap = _getDaysMap (config);
1189- return {
1190- for (final type in FeedActionType .values)
1191- type: TextEditingController (text: (daysMap[type] ?? 0 ).toString ()),
1192- };
1193- }
1194-
1195- void _updateControllers () {
1196- final config = widget.remoteConfig.accountActionConfig;
1197- final daysMap = _getDaysMap (config);
1198- for (final type in FeedActionType .values) {
1199- _controllers[type]? .text = (daysMap[type] ?? 0 ).toString ();
1200- }
1201- }
1202-
1203- Map <FeedActionType , int > _getDaysMap (AccountActionConfig config) {
1204- switch (widget.userRole) {
1205- case AppUserRole .guestUser:
1206- return config.guestDaysBetweenActions;
1207- case AppUserRole .standardUser:
1208- return config.standardUserDaysBetweenActions;
1209- case AppUserRole .premiumUser:
1210- return {};
1211- }
1212- }
1213-
1214- @override
1215- void dispose () {
1216- for (final controller in _controllers.values) {
1217- controller.dispose ();
1218- }
1219- super .dispose ();
1220- }
1221-
1222- @override
1223- Widget build (BuildContext context) {
1224- final accountActionConfig = widget.remoteConfig.accountActionConfig;
1225- final relevantActionTypes = _getDaysMap (accountActionConfig).keys.toList ();
1226- final l10n = AppLocalizationsX (context).l10n;
1227-
1228- return Column (
1229- children: relevantActionTypes.map ((actionType) {
1230- final localizedActionType = switch (actionType) {
1231- FeedActionType .linkAccount => l10n.feedActionTypeLinkAccount,
1232- FeedActionType .rateApp => l10n.feedActionTypeRateApp,
1233- FeedActionType .followTopics => l10n.feedActionTypeFollowTopics,
1234- FeedActionType .followSources => l10n.feedActionTypeFollowSources,
1235- FeedActionType .upgrade => l10n.feedActionTypeUpgrade,
1236- FeedActionType .enableNotifications =>
1237- l10n.feedActionTypeEnableNotifications,
1238- };
1239- return widget.buildIntField (
1240- context,
1241- label: '$localizedActionType ${l10n .daysSuffix }' ,
1242- description: l10n.daysBetweenPromptDescription (localizedActionType),
1243- value: _getDaysMap (accountActionConfig)[actionType] ?? 0 ,
1244- onChanged: (value) {
1245- final currentMap = Map <FeedActionType , int >.from (
1246- _getDaysMap (accountActionConfig),
1247- );
1248- final updatedMap = Map <FeedActionType , int >.from (currentMap)
1249- ..[actionType] = value;
1250-
1251- final newConfig = widget.userRole == AppUserRole .guestUser
1252- ? accountActionConfig.copyWith (
1253- guestDaysBetweenActions: updatedMap,
1254- )
1255- : accountActionConfig.copyWith (
1256- standardUserDaysBetweenActions: updatedMap,
1257- );
1258-
1259- widget.onConfigChanged (
1260- widget.remoteConfig.copyWith (accountActionConfig: newConfig),
1261- );
1262- },
1263- controller: _controllers[actionType],
1264- );
1265- }).toList (),
1266- );
1267- }
1268- }
0 commit comments