From 41313f09af6eae646f392da610b153bda903f69d Mon Sep 17 00:00:00 2001 From: misha Date: Thu, 23 Oct 2025 17:25:12 +0300 Subject: [PATCH] feat(marketing): added marketing bottom sheet --- assets/icons/logo_2.svg | 9 ++ assets/images/logo_bg.png | Bin 0 -> 103652 bytes lib/core/app_config.dart | 2 + lib/core/cubit/marketing/marketing_cubit.dart | 29 ++++ .../marketing/marketing_cubit_state.dart | 3 + lib/core/di/cubit_registrations.dart | 6 +- .../mixins/registration_date_cache_mixin.dart | 11 ++ lib/core/prefs_keys.dart | 2 +- lib/core/theme/custom_text_style.dart | 6 + lib/core/theme/theme_helper.dart | 2 + lib/core/widgets/marketing_bottom_sheet.dart | 124 ++++++++++++++++++ .../bloc/oauth_cubit/oauth_cubit.dart | 9 +- .../feed/presentation/pages/feed_screen.dart | 12 ++ .../registration_cubit.dart | 12 +- lib/generated/intl/messages_en.dart | 13 ++ lib/generated/l10n.dart | 67 +++++++++- lib/l10n/intl_en.arb | 9 +- .../registration/basic_widget_test.dart | 7 +- .../registration/integration_widget_test.dart | 5 +- 19 files changed, 309 insertions(+), 19 deletions(-) create mode 100644 assets/icons/logo_2.svg create mode 100644 assets/images/logo_bg.png create mode 100644 lib/core/cubit/marketing/marketing_cubit.dart create mode 100644 lib/core/cubit/marketing/marketing_cubit_state.dart create mode 100644 lib/core/mixins/registration_date_cache_mixin.dart create mode 100644 lib/core/widgets/marketing_bottom_sheet.dart diff --git a/assets/icons/logo_2.svg b/assets/icons/logo_2.svg new file mode 100644 index 00000000..e37bf02f --- /dev/null +++ b/assets/icons/logo_2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/logo_bg.png b/assets/images/logo_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d377c91c4c5e83ccfd03b218b130e046b7db8a GIT binary patch literal 103652 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 literal 0 HcmV?d00001 diff --git a/lib/core/app_config.dart b/lib/core/app_config.dart index 7dc49aa0..afe814e0 100644 --- a/lib/core/app_config.dart +++ b/lib/core/app_config.dart @@ -1,4 +1,5 @@ import 'package:eatvio_app/core/app_initializer.dart'; +import 'package:eatvio_app/core/cubit/marketing/marketing_cubit.dart'; import 'package:eatvio_app/core/env_config.dart'; import 'package:eatvio_app/core/internet_connection_cubit/internet_connection_cubit.dart'; import 'package:eatvio_app/core/locator_service.dart'; @@ -40,6 +41,7 @@ class AppConfig { BlocProvider(create: (context) => sl()..getChatRoomsWithLoading()), BlocProvider(create: (context) => sl()), BlocProvider(lazy: false, create: (context) => sl()), + BlocProvider(create: (context) => sl()), ]; /// Делегаты локализации diff --git a/lib/core/cubit/marketing/marketing_cubit.dart b/lib/core/cubit/marketing/marketing_cubit.dart new file mode 100644 index 00000000..cf5b0c13 --- /dev/null +++ b/lib/core/cubit/marketing/marketing_cubit.dart @@ -0,0 +1,29 @@ +import 'package:eatvio_app/core/cubit/marketing/marketing_cubit_state.dart'; +import 'package:eatvio_app/core/prefs.dart'; +import 'package:eatvio_app/core/prefs_keys.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class MarketingCubit extends Cubit { + final Prefs prefs; + MarketingCubit(this.prefs) : super(const MarketingCubitState()); + + Future checkRegistrationDate() async { + try { + final milliseconds = prefs.getInt(PrefsKeys.registrationDate); + final marketingBottomSheetHasBeenShown = prefs.getBool(PrefsKeys.marketingBottomSheetHasBeenShown); + if (milliseconds == null || marketingBottomSheetHasBeenShown == true) { + return false; + } + final date = DateTime.fromMillisecondsSinceEpoch(milliseconds); + final today = DateTime.now(); + final daysCount = today.difference(date).inDays; + final needToShowMarketingBottomSheet = daysCount >= 14; + if (needToShowMarketingBottomSheet) { + await prefs.setBool(PrefsKeys.marketingBottomSheetHasBeenShown, true); + } + return needToShowMarketingBottomSheet; + } catch (e) { + rethrow; + } + } +} diff --git a/lib/core/cubit/marketing/marketing_cubit_state.dart b/lib/core/cubit/marketing/marketing_cubit_state.dart new file mode 100644 index 00000000..164a0afe --- /dev/null +++ b/lib/core/cubit/marketing/marketing_cubit_state.dart @@ -0,0 +1,3 @@ +class MarketingCubitState { + const MarketingCubitState(); +} \ No newline at end of file diff --git a/lib/core/di/cubit_registrations.dart b/lib/core/di/cubit_registrations.dart index ca3ece97..f637d5dc 100644 --- a/lib/core/di/cubit_registrations.dart +++ b/lib/core/di/cubit_registrations.dart @@ -1,3 +1,4 @@ +import 'package:eatvio_app/core/cubit/marketing/marketing_cubit.dart'; import 'package:eatvio_app/core/internet_connection_cubit/internet_connection_cubit.dart'; import 'package:eatvio_app/core/views/cubit/views_cubit.dart'; import 'package:eatvio_app/features/auth/presentation/bloc/auth_cubit/auth_cubit.dart'; @@ -74,10 +75,10 @@ class CubitRegistrations { static void _registerFactoryCubits() { // Auth related cubits sl.registerFactory(() => AuthCubit(authRepository: sl())); - sl.registerFactory(() => RegistrationCubit(registrationRepository: sl())); + sl.registerFactory(() => RegistrationCubit(registrationRepository: sl(), prefs: sl())); sl.registerFactory(() => ResetPasswordCubit(resetPasswordRepository: sl())); sl.registerFactory(() => VerifyEmailCubit(profileRepository: sl())); - sl.registerFactory(() => OAuthCubit(authRepository: sl())); + sl.registerFactory(() => OAuthCubit(authRepository: sl(), prefs: sl())); // Feed related cubits sl.registerFactory(() => FeedCubit(feedRepository: sl())); sl.registerFactory(() => RecipesCubit(feedRepository: sl(), recipeRepository: sl(), aboutRecipeRepository: sl())); @@ -143,5 +144,6 @@ class CubitRegistrations { sl.registerFactory(() => ViewsCubit(viewsRepository: sl())); sl.registerFactory(() => UserDetailsCubit(profileRepository: sl())); sl.registerFactory(() => MenuCubit(sl())); + sl.registerFactory(() => MarketingCubit(sl())); } } diff --git a/lib/core/mixins/registration_date_cache_mixin.dart b/lib/core/mixins/registration_date_cache_mixin.dart new file mode 100644 index 00000000..6d5fb922 --- /dev/null +++ b/lib/core/mixins/registration_date_cache_mixin.dart @@ -0,0 +1,11 @@ +import 'package:eatvio_app/core/prefs.dart'; +import 'package:eatvio_app/core/prefs_keys.dart'; + +mixin RegistrationDateCacheMixin { + late final Prefs prefs; + + + Future cacheRegistrationDate(DateTime date) async { + await prefs.setInt(PrefsKeys.registrationDate, date.millisecondsSinceEpoch); + } +} diff --git a/lib/core/prefs_keys.dart b/lib/core/prefs_keys.dart index 0ba552d5..ea23e1d4 100644 --- a/lib/core/prefs_keys.dart +++ b/lib/core/prefs_keys.dart @@ -1 +1 @@ -enum PrefsKeys { hasAnonymousTokenBeenSent, welcomeScreenWasShowed } +enum PrefsKeys { hasAnonymousTokenBeenSent, welcomeScreenWasShowed, registrationDate, marketingBottomSheetHasBeenShown } diff --git a/lib/core/theme/custom_text_style.dart b/lib/core/theme/custom_text_style.dart index 62544e86..1c065748 100644 --- a/lib/core/theme/custom_text_style.dart +++ b/lib/core/theme/custom_text_style.dart @@ -249,4 +249,10 @@ abstract class TextStyles { fontWeight: FontWeight.w500, height: 1.255, ); + + static const textFS24FW700 = TextStyle( + fontSize: 24, + fontWeight: FontWeight.w700, + height: 1.255, + ); } diff --git a/lib/core/theme/theme_helper.dart b/lib/core/theme/theme_helper.dart index c202129e..be650ad3 100644 --- a/lib/core/theme/theme_helper.dart +++ b/lib/core/theme/theme_helper.dart @@ -141,6 +141,8 @@ class PrimaryColors { Color get gray60003 => const Color(0XFF707070); + Color get gray60005 => const Color(0xFF6C7C93); + // Green Color get greenA700 => const Color(0XFF019A3E); diff --git a/lib/core/widgets/marketing_bottom_sheet.dart b/lib/core/widgets/marketing_bottom_sheet.dart new file mode 100644 index 00000000..53b833ae --- /dev/null +++ b/lib/core/widgets/marketing_bottom_sheet.dart @@ -0,0 +1,124 @@ +import 'package:eatvio_app/core/theme/custom_text_style.dart'; +import 'package:eatvio_app/core/theme/theme_helper.dart'; +import 'package:eatvio_app/core/widgets/custom_outlined_button.dart'; +import 'package:eatvio_app/generated/l10n.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:share_plus/share_plus.dart'; + +void showMarketingBottomSheet(BuildContext context) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (context) => Container( + margin: EdgeInsets.only(left: 8, right: 8, bottom: MediaQuery.of(context).viewInsets.bottom + MediaQuery.of(context).padding.bottom + 20), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: appTheme.whiteA700), + child: const MarketingBottomSheet(), + ), + ); +} + +class MarketingBottomSheet extends StatelessWidget { + const MarketingBottomSheet({super.key}); + + @override + Widget build(BuildContext context) { + final s = S.of(context); + return Padding( + padding: const EdgeInsetsGeometry.all(4), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Container( + height: 180, + width: double.infinity, + decoration: const BoxDecoration( + image: DecorationImage(image: AssetImage('assets/images/logo_bg.png'), fit: BoxFit.cover), + ), + child: Center(child: SvgPicture.asset('assets/icons/logo_2.svg', height: 90)), + ), + ), + const SizedBox(height: 16), + Text(s.congratulations, style: TextStyles.textFS24FW700.copyWith(color: appTheme.blueA400)), + const SizedBox(height: 12), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Container( + decoration: BoxDecoration(color: appTheme.lightGray0, borderRadius: BorderRadius.circular(20)), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: Row( + children: [ + const Spacer(), + Container( + decoration: BoxDecoration(shape: BoxShape.circle, color: appTheme.blueA400), + padding: const EdgeInsets.all(8), + child: Text('14', style: TextStyles.textFS24FW700.copyWith(color: appTheme.whiteA700)), + ), + const SizedBox(width: 12), + RichText( + text: TextSpan( + text: s.youWithUs, + + style: TextStyles.textSMedium.copyWith(color: appTheme.gray60005), + children: [ + TextSpan( + text: s.fourteenDays, + style: TextStyles.textLMedium.copyWith(color: appTheme.black), + ), + ], + ), + ), + const Spacer(), + ], + ), + ), + ), + ), + const SizedBox(height: 12), + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Text( + s.weAreLookingFor, + textAlign: TextAlign.center, + style: TextStyles.textMMediumAuto.copyWith(color: appTheme.black), + ), + ), + Text( + s.letsInvite, + textAlign: TextAlign.center, + style: TextStyles.textMMediumAuto.copyWith(color: appTheme.black), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 4), + child: CustomOutlinedButton( + text: s.invite, + height: 52, + buttonTextStyle: TextStyles.textMSemibold.copyWith(color: appTheme.whiteA700), + leftIcon: Padding( + padding: const EdgeInsets.only(right: 12), + child: Transform.rotate( + angle: 3.14, + child: SvgPicture.asset('assets/icons/share.svg', width: 14, height: 14, colorFilter: ColorFilter.mode(appTheme.whiteA700, BlendMode.srcIn)), + ), + ), + buttonStyle: ButtonStyle(side: const WidgetStatePropertyAll(BorderSide.none), backgroundColor: WidgetStatePropertyAll(appTheme.blueA400)), + onPressed: () async { + SharePlus.instance.share(ShareParams(uri: Uri.parse('https://promo.eatvio.ru/'))); + }, + ), + ), + Text( + s.eatvioIsAHelthyHabbit, + textAlign: TextAlign.center, + style: TextStyles.textSMedium.copyWith(color: appTheme.blueA400), + ), + const SizedBox(height: 16), + ], + ), + ); + } +} diff --git a/lib/features/auth/presentation/bloc/oauth_cubit/oauth_cubit.dart b/lib/features/auth/presentation/bloc/oauth_cubit/oauth_cubit.dart index 52a0e73b..b4f78b4a 100644 --- a/lib/features/auth/presentation/bloc/oauth_cubit/oauth_cubit.dart +++ b/lib/features/auth/presentation/bloc/oauth_cubit/oauth_cubit.dart @@ -1,14 +1,18 @@ import 'dart:developer'; import 'package:dio/dio.dart'; +import 'package:eatvio_app/core/mixins/registration_date_cache_mixin.dart'; +import 'package:eatvio_app/core/prefs.dart'; import 'package:eatvio_app/core/token_storage.dart'; import 'package:eatvio_app/features/auth/presentation/bloc/oauth_cubit/oauth_state.dart'; import 'package:eatvio_app/features/auth/repositories/auth_repository.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -class OAuthCubit extends Cubit { +class OAuthCubit extends Cubit with RegistrationDateCacheMixin { final AuthRepository authRepository; - OAuthCubit({required this.authRepository}) : super(const OAuthState()); + OAuthCubit({required this.authRepository, required Prefs prefs}) : super(const OAuthState()) { + this.prefs = prefs; + } Future signInViaSocialMedia({required String provider, required String accessToken, required String refreshToken, required String clientId}) async { try { @@ -63,6 +67,7 @@ class OAuthCubit extends Cubit { clientId: clientId, ); TokenStorage.saveTokenInStorage(token); + cacheRegistrationDate(DateTime.now()); emit(OAuthState.loaded(token: token)); } on DioException catch (e) { emit(OAuthState.error(errorMessage: e.toString())); diff --git a/lib/features/feed/presentation/pages/feed_screen.dart b/lib/features/feed/presentation/pages/feed_screen.dart index e664d78f..47447e49 100644 --- a/lib/features/feed/presentation/pages/feed_screen.dart +++ b/lib/features/feed/presentation/pages/feed_screen.dart @@ -1,9 +1,11 @@ import 'package:easy_debounce/easy_debounce.dart'; import 'package:eatvio_app/app_keys.dart'; import 'package:eatvio_app/core/const.dart'; +import 'package:eatvio_app/core/cubit/marketing/marketing_cubit.dart'; import 'package:eatvio_app/core/views/cubit/views_cubit.dart'; import 'package:eatvio_app/core/widgets/add_item_button.dart'; import 'package:eatvio_app/core/widgets/custom_search_bar.dart'; +import 'package:eatvio_app/core/widgets/marketing_bottom_sheet.dart'; import 'package:eatvio_app/features/create_diet/presentation/create_diet_screen.dart'; import 'package:eatvio_app/features/create_plan/presentation/create_plan_screen.dart'; import 'package:eatvio_app/features/feed/presentation/bloc/consultants_cubit/consultants_cubit.dart'; @@ -71,6 +73,7 @@ class _FeedScreenContentState extends State { void initState() { chipsLabelList = hidePlans ? ['Все', 'Рецепты', 'Диеты', 'Консультанты'] : ['Все', 'Рецепты', 'Диеты', 'Планы питания', 'Консультанты']; consultantsScrollController.addListener(_onScrollConsultants); + _checkRegistrationDate(context); super.initState(); } @@ -78,6 +81,15 @@ class _FeedScreenContentState extends State { if (consultantsScrollController.offset >= consultantsScrollController.position.maxScrollExtent && !consultantsScrollController.position.outOfRange) {} } + void _checkRegistrationDate(BuildContext context) { + WidgetsBinding.instance.addPostFrameCallback((_) async { + final needToShowMarketingBottomSheet = await context.read().checkRegistrationDate(); + if (needToShowMarketingBottomSheet && context.mounted) { + showMarketingBottomSheet(context); + } + }); + } + @override void dispose() { blogPostsScrollController.dispose(); diff --git a/lib/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart b/lib/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart index ccf9cae4..3bd0a6a1 100644 --- a/lib/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart +++ b/lib/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart @@ -3,6 +3,8 @@ import 'dart:developer'; import 'package:eatvio_app/core/app_router.dart'; import 'package:eatvio_app/core/firebase_api.dart'; import 'package:eatvio_app/core/locator_service.dart'; +import 'package:eatvio_app/core/mixins/registration_date_cache_mixin.dart'; +import 'package:eatvio_app/core/prefs.dart'; import 'package:eatvio_app/core/token_storage.dart'; import 'package:eatvio_app/features/registration/models/user_registration_model.dart'; @@ -12,10 +14,9 @@ import 'package:eatvio_app/features/registration/services/registration_analytics import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; -class RegistrationCubit extends Cubit { +class RegistrationCubit extends Cubit with RegistrationDateCacheMixin { final RegistrationRepository registrationRepository; - - RegistrationCubit({required this.registrationRepository}) + RegistrationCubit({required this.registrationRepository, required Prefs prefs}) : super( const RegistrationState( sheet: UserRegistrationSheet( @@ -47,7 +48,9 @@ class RegistrationCubit extends Cubit { phone: '', ), ), - ); + ) { + this.prefs = prefs; + } void updateSheet(UserRegistrationSheet sheet) => emit(RegistrationState(sheet: sheet)); @@ -59,6 +62,7 @@ class RegistrationCubit extends Cubit { await TokenStorage.saveTokenInStorage(token); await sl().registerPushToken(); RegistrationAnalyticsService.reportRegistrationComplete(); + cacheRegistrationDate(DateTime.now()); AppRouter.navigatorKey.currentContext?.replaceNamed('verifyEmailScreen'); } catch (e, st) { log(e.toString(), stackTrace: st); diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index dc9e4c16..b6e87433 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -199,6 +199,7 @@ class MessageLookup extends MessageLookupByLibrary { "congratsYouHaveFinishedPlan": MessageLookupByLibrary.simpleMessage( "Поздравляем, Вы закончили план", ), + "congratulations": MessageLookupByLibrary.simpleMessage("Поздравляем!"), "consultantLeftComment": m0, "consultations_count": MessageLookupByLibrary.simpleMessage( "Кол-во проведенных консулдьтаций", @@ -305,6 +306,9 @@ class MessageLookup extends MessageLookupByLibrary { "eating_behavior_type_desc": MessageLookupByLibrary.simpleMessage( "Формирование здорового пищевого поведения — это процесс, который включает в себя изменение привычек и отношения к еде. Он направлен на то, чтобы помочь людям научиться правильно питаться и поддерживать здоровый образ жизни.Основные принципы формирования здорового пищевого поведения: \n● Разнообразие продуктов; \n● Сбалансированный рацион; \n● Питьевой режим; \n● Ограничение вредных продуктов; \n● Регулярные приёмы пищи; \n● Умеренность;Осознанное питание; \n● Физическая активность;", ), + "eatvioIsAHelthyHabbit": MessageLookupByLibrary.simpleMessage( + "Итвио — это полезная привычка", + ), "economy": MessageLookupByLibrary.simpleMessage("Эконом"), "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), "email": MessageLookupByLibrary.simpleMessage("Электронная почта"), @@ -378,6 +382,7 @@ class MessageLookup extends MessageLookupByLibrary { "for_whole_period_of_time": MessageLookupByLibrary.simpleMessage( "За всё время", ), + "fourteenDays": MessageLookupByLibrary.simpleMessage("14 дней"), "fraud": MessageLookupByLibrary.simpleMessage("Мошенничество"), "fraud_description": MessageLookupByLibrary.simpleMessage( "Мошенничество с целью наживы. Если вас обманули, пожалуйста, сообщите об этом в правоохранительные органы.", @@ -418,6 +423,7 @@ class MessageLookup extends MessageLookupByLibrary { "initial_measurements": MessageLookupByLibrary.simpleMessage( "Первичные замеры", ), + "invite": MessageLookupByLibrary.simpleMessage("Пригласить"), "invited_people_count": MessageLookupByLibrary.simpleMessage( "Количество приглашенных", ), @@ -440,6 +446,9 @@ class MessageLookup extends MessageLookupByLibrary { "leaveComplainRequest": MessageLookupByLibrary.simpleMessage( "Подать жалобу", ), + "letsInvite": MessageLookupByLibrary.simpleMessage( + "Давайте пригласим близких в итвио", + ), "light_type": MessageLookupByLibrary.simpleMessage("Легкая"), "light_type_desc": MessageLookupByLibrary.simpleMessage( "С некоторыми видами диет можно употреблять алкоголь в умеренных количествах. Рекомендуется совмещать вместе с низкокалорийными закусками.", @@ -773,6 +782,9 @@ class MessageLookup extends MessageLookupByLibrary { "want_to_see_tomorrow": MessageLookupByLibrary.simpleMessage( "Хотите заглянуть в будущее?", ), + "weAreLookingFor": MessageLookupByLibrary.simpleMessage( + "Мы собираем самое большое сообщество людей, желающих вести здоровый образ жизни!", + ), "weapon": MessageLookupByLibrary.simpleMessage("Оружие"), "weight": MessageLookupByLibrary.simpleMessage("Вес"), "weight_chart": MessageLookupByLibrary.simpleMessage("График веса"), @@ -801,6 +813,7 @@ class MessageLookup extends MessageLookupByLibrary { "youShureYouWantToDeleteAccount": MessageLookupByLibrary.simpleMessage( "Вы уверены, что хотите удалить аккаунт?", ), + "youWithUs": MessageLookupByLibrary.simpleMessage("Вы с итвио уже\n"), "you_can_not_open_this_day": MessageLookupByLibrary.simpleMessage( "Вы не можете перейти в этот день", ), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 1055e664..c13ab041 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -28,10 +28,9 @@ class S { static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); static Future load(Locale locale) { - final name = - (locale.countryCode?.isEmpty ?? false) - ? locale.languageCode - : locale.toString(); + final name = (locale.countryCode?.isEmpty ?? false) + ? locale.languageCode + : locale.toString(); final localeName = Intl.canonicalizedLocale(name); return initializeMessages(localeName).then((_) { Intl.defaultLocale = localeName; @@ -3499,6 +3498,66 @@ class S { args: [], ); } + + /// `Поздравляем!` + String get congratulations { + return Intl.message( + 'Поздравляем!', + name: 'congratulations', + desc: '', + args: [], + ); + } + + /// `Вы с итвио уже\n` + String get youWithUs { + return Intl.message( + 'Вы с итвио уже\n', + name: 'youWithUs', + desc: '', + args: [], + ); + } + + /// `14 дней` + String get fourteenDays { + return Intl.message('14 дней', name: 'fourteenDays', desc: '', args: []); + } + + /// `Мы собираем самое большое сообщество людей, желающих вести здоровый образ жизни!` + String get weAreLookingFor { + return Intl.message( + 'Мы собираем самое большое сообщество людей, желающих вести здоровый образ жизни!', + name: 'weAreLookingFor', + desc: '', + args: [], + ); + } + + /// `Давайте пригласим близких в итвио` + String get letsInvite { + return Intl.message( + 'Давайте пригласим близких в итвио', + name: 'letsInvite', + desc: '', + args: [], + ); + } + + /// `Итвио — это полезная привычка` + String get eatvioIsAHelthyHabbit { + return Intl.message( + 'Итвио — это полезная привычка', + name: 'eatvioIsAHelthyHabbit', + desc: '', + args: [], + ); + } + + /// `Пригласить` + String get invite { + return Intl.message('Пригласить', name: 'invite', desc: '', args: []); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 1fc575a8..a2fe549e 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -414,6 +414,13 @@ "delete": "Удалить", "cannotDeleteAccount": "Не получилось удалить ваш аккаунт", "resend": "Отправить повторно", - "notifications": "Уведомления" + "notifications": "Уведомления", + "congratulations": "Поздравляем!", + "youWithUs": "Вы с итвио уже\n", + "fourteenDays": "14 дней", + "weAreLookingFor": "Мы собираем самое большое сообщество людей, желающих вести здоровый образ жизни!", + "letsInvite": "Давайте пригласим близких в итвио", + "eatvioIsAHelthyHabbit": "Итвио — это полезная привычка", + "invite": "Пригласить" } diff --git a/test/features/registration/basic_widget_test.dart b/test/features/registration/basic_widget_test.dart index 1a51a4b2..16995a82 100644 --- a/test/features/registration/basic_widget_test.dart +++ b/test/features/registration/basic_widget_test.dart @@ -1,5 +1,6 @@ // ignore_for_file: deprecated_member_use +import 'package:eatvio_app/core/prefs.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart'; import 'package:eatvio_app/features/registration/repositories/registration_repository.dart'; @@ -10,7 +11,7 @@ import 'package:mockito/annotations.dart'; import 'basic_widget_test.mocks.dart'; -@GenerateMocks([RegistrationRepository]) +@GenerateMocks([RegistrationRepository, Prefs]) void main() { group('Registration Basic Widget Tests', () { late MockRegistrationRepository mockRegistrationRepository; @@ -18,7 +19,7 @@ void main() { setUp(() { mockRegistrationRepository = MockRegistrationRepository(); - registrationCubit = RegistrationCubit(registrationRepository: mockRegistrationRepository); + registrationCubit = RegistrationCubit(registrationRepository: mockRegistrationRepository, prefs: MockPrefs()); }); tearDown(() { @@ -37,7 +38,7 @@ void main() { testWidgets('should create RegistrationCubit successfully', (WidgetTester tester) async { // Arrange & Act - final cubit = RegistrationCubit(registrationRepository: mockRegistrationRepository); + final cubit = RegistrationCubit(registrationRepository: mockRegistrationRepository, prefs: MockPrefs()); // Assert expect(cubit, isA()); diff --git a/test/features/registration/integration_widget_test.dart b/test/features/registration/integration_widget_test.dart index 8a9afc15..e5559a80 100644 --- a/test/features/registration/integration_widget_test.dart +++ b/test/features/registration/integration_widget_test.dart @@ -1,3 +1,4 @@ +import 'package:eatvio_app/core/prefs.dart'; import 'package:eatvio_app/core/theme/theme_helper.dart'; import 'package:eatvio_app/features/registration/presentation/bloc/registration_cubit/registration_cubit.dart'; import 'package:eatvio_app/features/registration/repositories/registration_repository.dart'; @@ -8,7 +9,7 @@ import 'package:mockito/annotations.dart'; import 'integration_widget_test.mocks.dart'; -@GenerateMocks([RegistrationRepository]) +@GenerateMocks([RegistrationRepository, Prefs]) void main() { group('Registration Integration Widget Tests', () { late MockRegistrationRepository mockRegistrationRepository; @@ -16,7 +17,7 @@ void main() { setUp(() { mockRegistrationRepository = MockRegistrationRepository(); - registrationCubit = RegistrationCubit(registrationRepository: mockRegistrationRepository); + registrationCubit = RegistrationCubit(registrationRepository: mockRegistrationRepository, prefs: MockPrefs()); }); tearDown(() {