@@ -52,9 +52,9 @@ class _AppConfigurationPageState extends State<AppConfigurationPage>
5252 controller: _tabController,
5353 isScrollable: true ,
5454 tabs: const [
55- Tab (text: 'User Preferences ' ),
56- Tab (text: 'Ad Config ' ),
57- Tab (text: 'Account Actions ' ),
55+ Tab (text: 'User Content Limits ' ),
56+ Tab (text: 'Ad Settings ' ),
57+ Tab (text: 'In-App Prompts ' ),
5858 Tab (text: 'App Operational Status' ),
5959 Tab (text: 'Force Update' ),
6060 ],
@@ -231,12 +231,15 @@ class _AppConfigurationPageState extends State<AppConfigurationPage>
231231 crossAxisAlignment: CrossAxisAlignment .start,
232232 children: [
233233 Text (
234- 'User Preference Limits' ,
234+ 'User Content Limits' ,
235235 style: Theme .of (context).textTheme.headlineSmall,
236236 ),
237237 const SizedBox (height: AppSpacing .md),
238238 Text (
239- 'These settings define the maximum number of items a user can follow or save, tiered by user role. Changes here directly impact user capabilities.' ,
239+ 'These settings define the maximum number of countries, news sources, '
240+ 'categories, and saved headlines a user can follow or save. '
241+ 'Limits vary by user type (Guest, Standard, Premium) and directly '
242+ 'impact what content users can curate.' ,
240243 style: Theme .of (context).textTheme.bodySmall? .copyWith (
241244 color: Theme .of (context).colorScheme.onSurface.withOpacity (0.7 ),
242245 ),
@@ -313,12 +316,16 @@ class _AppConfigurationPageState extends State<AppConfigurationPage>
313316 crossAxisAlignment: CrossAxisAlignment .start,
314317 children: [
315318 Text (
316- 'Ad Configuration ' ,
319+ 'Ad Settings ' ,
317320 style: Theme .of (context).textTheme.headlineSmall,
318321 ),
319322 const SizedBox (height: AppSpacing .md),
320323 Text (
321- 'These settings control how ads are injected and displayed in the application, tiered by user role. AdFrequency determines how often an ad can be injected, and AdPlacementInterval sets a minimum number of primary items before the first ad.' ,
324+ 'These settings control how advertisements are displayed within '
325+ 'the app\' s news feed, with different rules for Guest, Standard, '
326+ 'and Premium users. "Ad Frequency" determines how often an ad '
327+ 'can appear, while "Ad Placement Interval" sets how many news '
328+ 'items must be shown before the very first ad appears.' ,
322329 style: Theme .of (context).textTheme.bodySmall? .copyWith (
323330 color: Theme .of (context).colorScheme.onSurface.withOpacity (0.7 ),
324331 ),
@@ -327,7 +334,7 @@ class _AppConfigurationPageState extends State<AppConfigurationPage>
327334 TabBar (
328335 tabs: const [
329336 Tab (text: 'Guest' ),
330- Tab (text: 'Authenticated ' ),
337+ Tab (text: 'Standard User ' ),
331338 Tab (text: 'Premium' ),
332339 ],
333340 labelColor: Theme .of (context).colorScheme.primary,
@@ -398,12 +405,16 @@ class _AppConfigurationPageState extends State<AppConfigurationPage>
398405 crossAxisAlignment: CrossAxisAlignment .start,
399406 children: [
400407 Text (
401- 'Account Action Configuration ' ,
408+ 'In-App Prompts ' ,
402409 style: Theme .of (context).textTheme.headlineSmall,
403410 ),
404411 const SizedBox (height: AppSpacing .md),
405412 Text (
406- 'These settings control the display frequency of in-feed account actions (e.g., link account, upgrade prompts), tiered by user role.' ,
413+ 'These settings control how often special in-app messages or '
414+ '"prompts" are shown to users in their news feed. These prompts '
415+ 'encourage actions like linking an account (for guests) or '
416+ 'upgrading to a premium subscription (for authenticated users). '
417+ 'The frequency varies by user type.' ,
407418 style: Theme .of (context).textTheme.bodySmall? .copyWith (
408419 color: Theme .of (context).colorScheme.onSurface.withOpacity (0.7 ),
409420 ),
@@ -972,7 +983,8 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
972983 context,
973984 label: 'Guest Followed Items Limit' ,
974985 description:
975- 'Max countries, sources, or categories a Guest user can follow (each).' ,
986+ 'Maximum number of countries, news sources, or categories a '
987+ 'Guest user can follow (each type has its own limit).' ,
976988 value: userPreferenceLimits.guestFollowedItemsLimit,
977989 onChanged: (value) {
978990 widget.onConfigChanged (
@@ -988,7 +1000,7 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
9881000 widget.buildIntField (
9891001 context,
9901002 label: 'Guest Saved Headlines Limit' ,
991- description: 'Max headlines a Guest user can save.' ,
1003+ description: 'Maximum number of headlines a Guest user can save.' ,
9921004 value: userPreferenceLimits.guestSavedHeadlinesLimit,
9931005 onChanged: (value) {
9941006 widget.onConfigChanged (
@@ -1008,9 +1020,10 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
10081020 children: [
10091021 widget.buildIntField (
10101022 context,
1011- label: 'Authenticated Followed Items Limit' ,
1023+ label: 'Standard User Followed Items Limit' ,
10121024 description:
1013- 'Max countries, sources, or categories an Authenticated user can follow (each).' ,
1025+ 'Maximum number of countries, news sources, or categories a '
1026+ 'Standard user can follow (each type has its own limit).' ,
10141027 value: userPreferenceLimits.authenticatedFollowedItemsLimit,
10151028 onChanged: (value) {
10161029 widget.onConfigChanged (
@@ -1025,8 +1038,9 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
10251038 ),
10261039 widget.buildIntField (
10271040 context,
1028- label: 'Authenticated Saved Headlines Limit' ,
1029- description: 'Max headlines an Authenticated user can save.' ,
1041+ label: 'Standard User Saved Headlines Limit' ,
1042+ description:
1043+ 'Maximum number of headlines a Standard user can save.' ,
10301044 value: userPreferenceLimits.authenticatedSavedHeadlinesLimit,
10311045 onChanged: (value) {
10321046 widget.onConfigChanged (
@@ -1048,7 +1062,8 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
10481062 context,
10491063 label: 'Premium Followed Items Limit' ,
10501064 description:
1051- 'Max countries, sources, or categories a Premium user can follow (each).' ,
1065+ 'Maximum number of countries, news sources, or categories a '
1066+ 'Premium user can follow (each type has its own limit).' ,
10521067 value: userPreferenceLimits.premiumFollowedItemsLimit,
10531068 onChanged: (value) {
10541069 widget.onConfigChanged (
@@ -1064,7 +1079,8 @@ class _UserPreferenceLimitsFormState extends State<_UserPreferenceLimitsForm> {
10641079 widget.buildIntField (
10651080 context,
10661081 label: 'Premium Saved Headlines Limit' ,
1067- description: 'Max headlines a Premium user can save.' ,
1082+ description:
1083+ 'Maximum number of headlines a Premium user can save.' ,
10681084 value: userPreferenceLimits.premiumSavedHeadlinesLimit,
10691085 onChanged: (value) {
10701086 widget.onConfigChanged (
@@ -1302,7 +1318,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13021318 context,
13031319 label: 'Guest Ad Frequency' ,
13041320 description:
1305- 'How often an ad can be injected for Guest users (e.g., 5 means after every 5 primary items).' ,
1321+ 'How often an ad can appear for Guest users (e.g., a value '
1322+ 'of 5 means an ad could be placed after every 5 news items).' ,
13061323 value: adConfig.guestAdFrequency,
13071324 onChanged: (value) {
13081325 widget.onConfigChanged (
@@ -1317,7 +1334,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13171334 context,
13181335 label: 'Guest Ad Placement Interval' ,
13191336 description:
1320- 'Minimum primary items before the first ad for Guest users.' ,
1337+ 'Minimum number of news items that must be shown before the '
1338+ 'very first ad appears for Guest users.' ,
13211339 value: adConfig.guestAdPlacementInterval,
13221340 onChanged: (value) {
13231341 widget.onConfigChanged (
@@ -1334,7 +1352,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13341352 context,
13351353 label: 'Guest Articles Before Interstitial Ads' ,
13361354 description:
1337- 'Number of articles a Guest user reads before an interstitial ad is shown.' ,
1355+ 'Number of articles a Guest user needs to read before a '
1356+ 'full-screen interstitial ad is shown.' ,
13381357 value: adConfig.guestArticlesToReadBeforeShowingInterstitialAds,
13391358 onChanged: (value) {
13401359 widget.onConfigChanged (
@@ -1355,9 +1374,10 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13551374 children: [
13561375 widget.buildIntField (
13571376 context,
1358- label: 'Authenticated Ad Frequency' ,
1377+ label: 'Standard User Ad Frequency' ,
13591378 description:
1360- 'How often an ad can be injected for Authenticated users.' ,
1379+ 'How often an ad can appear for Standard users (e.g., a value '
1380+ 'of 10 means an ad could be placed after every 10 news items).' ,
13611381 value: adConfig.authenticatedAdFrequency,
13621382 onChanged: (value) {
13631383 widget.onConfigChanged (
@@ -1372,9 +1392,10 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13721392 ),
13731393 widget.buildIntField (
13741394 context,
1375- label: 'Authenticated Ad Placement Interval' ,
1395+ label: 'Standard User Ad Placement Interval' ,
13761396 description:
1377- 'Minimum primary items before the first ad for Authenticated users.' ,
1397+ 'Minimum number of news items that must be shown before the '
1398+ 'very first ad appears for Standard users.' ,
13781399 value: adConfig.authenticatedAdPlacementInterval,
13791400 onChanged: (value) {
13801401 widget.onConfigChanged (
@@ -1391,7 +1412,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
13911412 context,
13921413 label: 'Standard User Articles Before Interstitial Ads' ,
13931414 description:
1394- 'Number of articles a Standard user reads before an interstitial ad is shown.' ,
1415+ 'Number of articles a Standard user needs to read before a '
1416+ 'full-screen interstitial ad is shown.' ,
13951417 value: adConfig
13961418 .standardUserArticlesToReadBeforeShowingInterstitialAds,
13971419 onChanged: (value) {
@@ -1416,7 +1438,7 @@ class _AdConfigFormState extends State<_AdConfigForm> {
14161438 context,
14171439 label: 'Premium Ad Frequency' ,
14181440 description:
1419- 'How often an ad can be injected for Premium users (0 for no ads).' ,
1441+ 'How often an ad can appear for Premium users (0 for no ads).' ,
14201442 value: adConfig.premiumAdFrequency,
14211443 onChanged: (value) {
14221444 widget.onConfigChanged (
@@ -1431,7 +1453,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
14311453 context,
14321454 label: 'Premium Ad Placement Interval' ,
14331455 description:
1434- 'Minimum primary items before the first ad for Premium users.' ,
1456+ 'Minimum number of news items that must be shown before the '
1457+ 'very first ad appears for Premium users.' ,
14351458 value: adConfig.premiumAdPlacementInterval,
14361459 onChanged: (value) {
14371460 widget.onConfigChanged (
@@ -1448,7 +1471,8 @@ class _AdConfigFormState extends State<_AdConfigForm> {
14481471 context,
14491472 label: 'Premium User Articles Before Interstitial Ads' ,
14501473 description:
1451- 'Number of articles a Premium user reads before an interstitial ad is shown.' ,
1474+ 'Number of articles a Premium user needs to read before a '
1475+ 'full-screen interstitial ad is shown.' ,
14521476 value: adConfig
14531477 .premiumUserArticlesToReadBeforeShowingInterstitialAds,
14541478 onChanged: (value) {
@@ -1574,9 +1598,10 @@ class _AccountActionConfigFormState extends State<_AccountActionConfigForm> {
15741598 children: [
15751599 widget.buildIntField (
15761600 context,
1577- label: 'Guest Days Between Account Actions ' ,
1601+ label: 'Guest Days Between In-App Prompts ' ,
15781602 description:
1579- 'Minimum days between showing account actions to Guest users.' ,
1603+ 'Minimum number of days that must pass before a Guest user '
1604+ 'sees another in-app prompt.' ,
15801605 value: accountActionConfig.guestDaysBetweenAccountActions,
15811606 onChanged: (value) {
15821607 widget.onConfigChanged (
@@ -1596,9 +1621,10 @@ class _AccountActionConfigFormState extends State<_AccountActionConfigForm> {
15961621 children: [
15971622 widget.buildIntField (
15981623 context,
1599- label: 'Standard User Days Between Account Actions ' ,
1624+ label: 'Standard User Days Between In-App Prompts ' ,
16001625 description:
1601- 'Minimum days between showing account actions to Standard users.' ,
1626+ 'Minimum number of days that must pass before a Standard user '
1627+ 'sees another in-app prompt.' ,
16021628 value: accountActionConfig.standardUserDaysBetweenAccountActions,
16031629 onChanged: (value) {
16041630 widget.onConfigChanged (
0 commit comments