diff --git a/lib/app/bloc/app_bloc.dart b/lib/app/bloc/app_bloc.dart index 67419dc..9523a25 100644 --- a/lib/app/bloc/app_bloc.dart +++ b/lib/app/bloc/app_bloc.dart @@ -21,9 +21,8 @@ class AppBloc extends Bloc { }) : _authenticationRepository = authenticationRepository, _userAppSettingsRepository = userAppSettingsRepository, _appConfigRepository = appConfigRepository, - _environment = environment, super( - const AppState(), + AppState(environment: environment), ) { on(_onAppUserChanged); on(_onLogoutRequested); @@ -37,7 +36,6 @@ class AppBloc extends Bloc { final HtAuthRepository _authenticationRepository; final HtDataRepository _userAppSettingsRepository; final HtDataRepository _appConfigRepository; - final local_config.AppEnvironment _environment; late final StreamSubscription _userSubscription; /// Handles user changes and loads initial settings once user is available. diff --git a/lib/authentication/view/email_code_verification_page.dart b/lib/authentication/view/email_code_verification_page.dart index 78fd606..cf4f668 100644 --- a/lib/authentication/view/email_code_verification_page.dart +++ b/lib/authentication/view/email_code_verification_page.dart @@ -82,7 +82,7 @@ class EmailCodeVerificationPage extends StatelessWidget { children: [ const SizedBox(height: AppSpacing.md), Text( - l10n.demoVerificationCodeMessage('123456'), + l10n.demoCodeHint('123456'), style: textTheme.bodyMedium?.copyWith( color: colorScheme.secondary, fontWeight: FontWeight.bold, diff --git a/lib/authentication/view/request_code_page.dart b/lib/authentication/view/request_code_page.dart index 8ebada2..36722cb 100644 --- a/lib/authentication/view/request_code_page.dart +++ b/lib/authentication/view/request_code_page.dart @@ -3,6 +3,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:ht_dashboard/app/bloc/app_bloc.dart'; +import 'package:ht_dashboard/app/config/config.dart'; import 'package:go_router/go_router.dart'; import 'package:ht_dashboard/authentication/bloc/authentication_bloc.dart'; import 'package:ht_dashboard/l10n/l10n.dart'; @@ -129,6 +131,26 @@ class _RequestCodeView extends StatelessWidget { ), textAlign: TextAlign.center, ), + // Display demo email if in demo environment + BlocSelector( + selector: (state) => state.environment, + builder: (context, environment) { + if (environment == AppEnvironment.demo) { + return Padding( + padding: const EdgeInsets.only(top: AppSpacing.lg), + child: Text( + l10n.demoEmailHint('admin@example.com'), + style: textTheme.bodyMedium?.copyWith( + color: colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + ), + ); + } + return const SizedBox.shrink(); + }, + ), const SizedBox(height: AppSpacing.xxl), _EmailLinkForm(isLoading: isLoading), ], diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 21205b9..c736cab 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1417,6 +1417,18 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Disabled'** String get appStatusDisabled; + + /// Hint text shown in demo environment for the login email. + /// + /// In en, this message translates to: + /// **'For demo, use email: {email}'** + String demoEmailHint(String email); + + /// Hint text shown in demo environment for the verification code. + /// + /// In en, this message translates to: + /// **'For demo, use code: {code}'** + String demoCodeHint(String code); } class _AppLocalizationsDelegate diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 90c2537..2923918 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -737,4 +737,14 @@ class AppLocalizationsAr extends AppLocalizations { @override String get appStatusDisabled => 'معطل'; + + @override + String demoEmailHint(String email) { + return 'للعرض التجريبي، استخدم البريد الإلكتروني: $email'; + } + + @override + String demoCodeHint(String code) { + return 'للعرض التجريبي، استخدم الرمز: $code'; + } } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index e8c93ef..d9a4e30 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -735,4 +735,14 @@ class AppLocalizationsEn extends AppLocalizations { @override String get appStatusDisabled => 'Disabled'; + + @override + String demoEmailHint(String email) { + return 'For demo, use email: $email'; + } + + @override + String demoCodeHint(String code) { + return 'For demo, use code: $code'; + } } diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index dc78022..2ae6fa0 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -893,5 +893,25 @@ "appStatusDisabled": "معطل", "@appStatusDisabled": { "description": "نص حالة التطبيق 'معطل'" + }, + "demoEmailHint": "للعرض التجريبي، استخدم البريد الإلكتروني: {email}", + "@demoEmailHint": { + "description": "Hint text shown in demo environment for the login email.", + "placeholders": { + "email": { + "type": "String", + "example": "admin@example.com" + } + } + }, + "demoCodeHint": "للعرض التجريبي، استخدم الرمز: {code}", + "@demoCodeHint": { + "description": "Hint text shown in demo environment for the verification code.", + "placeholders": { + "code": { + "type": "String", + "example": "123456" + } + } } } \ No newline at end of file diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 6e7b9f9..e3b0732 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -893,5 +893,26 @@ "appStatusDisabled": "Disabled", "@appStatusDisabled": { "description": "Text for the 'Disabled' app status" + }, + "demoEmailHint": "For demo, use email: {email}", + "@demoEmailHint": { + "description": "Hint text shown in demo environment for the login email.", + "placeholders": { + "email": { + "type": "String", + "example": "admin@example.com" + } + } + }, + "demoCodeHint": "For demo, use code: {code}", + "@demoCodeHint": { + "description": "Hint text shown in demo environment for the verification code.", + "placeholders": { + "code": { + "type": "String", + "example": "123456" + } + } } + } \ No newline at end of file