diff --git a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart index 15b96f0..3b685fb 100755 --- a/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart +++ b/filcnaplo_mobile_ui/lib/screens/settings/settings_screen.dart @@ -89,7 +89,7 @@ class _SettingsScreenState extends State if (!settings.presentationMode) { _firstName = _nameParts.length > 1 ? _nameParts[1] : _nameParts[0]; } else { - _firstName = "Béla"; + _firstName = "János"; } accountTiles.add(AccountTile( @@ -128,8 +128,8 @@ class _SettingsScreenState extends State icon: Icon(FeatherIcons.grid, color: AppColors.of(context).teal), title: Text("open_dkt".i18n), ), - const UserMenuNickname(), - const UserMenuProfilePic(), + UserMenuNickname(u), + UserMenuProfilePic(u), // BottomSheetMenuItem( // onPressed: () {}, // icon: Icon(FeatherIcons.camera), @@ -247,7 +247,7 @@ class _SettingsScreenState extends State child: Text( !settings.presentationMode ? (user.displayName ?? "?") - : "Béla", + : "János", maxLines: 1, softWrap: false, overflow: TextOverflow.ellipsis, diff --git a/filcnaplo_premium/lib/ui/mobile/premium/upsell.dart b/filcnaplo_premium/lib/ui/mobile/premium/upsell.dart index d5fdbbb..1576dff 100644 --- a/filcnaplo_premium/lib/ui/mobile/premium/upsell.dart +++ b/filcnaplo_premium/lib/ui/mobile/premium/upsell.dart @@ -30,7 +30,8 @@ const Map _featureAssets = { PremiumFeature.gradestats: "assets/images/premium_stats_showcase.png", PremiumFeature.customcolors: "assets/images/premium_theme_showcase.png", PremiumFeature.profile: "assets/images/premium_nickname_showcase.png", - PremiumFeature.weeklytimetable: "assets/images/premium_timetable_showcase.png", + PremiumFeature.weeklytimetable: + "assets/images/premium_timetable_showcase.png", PremiumFeature.goalplanner: "assets/images/premium_goal_showcase.png", PremiumFeature.widget: "assets/images/premium_widget_showcase.png", }; @@ -40,37 +41,51 @@ const Map _featureTitles = { PremiumFeature.customcolors: "Több személyre szabás kell?", PremiumFeature.profile: "Nem tetszik a neved?", PremiumFeature.iconpack: "Jobban tetszettek a régi ikonok?", - PremiumFeature.subjectrename: "Sokáig tart elolvasni, hogy \"Földrajz természettudomány\"?", + PremiumFeature.subjectrename: + "Sokáig tart elolvasni, hogy \"Földrajz természettudomány\"?", PremiumFeature.weeklytimetable: "Szeretnéd egyszerre az egész hetet látni?", PremiumFeature.goalplanner: "Kövesd a céljaidat, sok-sok statisztikával.", PremiumFeature.widget: "Órák a kezdőképernyőd kényelméből.", }; const Map _featureDescriptions = { - PremiumFeature.gradestats: "Támogass Kupak szinten, hogy több statisztikát láthass. ", - PremiumFeature.customcolors: "Támogass Kupak szinten, és szabd személyre az elemek, a háttér, és a panelek színeit.", - PremiumFeature.profile: "Kupak szinten változtathatod a nevedet, sőt, akár a profilképedet is.", - PremiumFeature.iconpack: "Támogass Kupak szinten, hogy ikon témát választhass.", - PremiumFeature.subjectrename: "Támogass Kupak szinten, hogy átnevezhesd Föcire.", - PremiumFeature.weeklytimetable: "Támogass Tinta szinten a heti órarend funkcióért.", + PremiumFeature.gradestats: + "Támogass Kupak szinten, hogy több statisztikát láthass. ", + PremiumFeature.customcolors: + "Támogass Kupak szinten, és szabd személyre az elemek, a háttér, és a panelek színeit.", + PremiumFeature.profile: + "Kupak szinten változtathatod a nevedet, sőt, akár a profilképedet is.", + PremiumFeature.iconpack: + "Támogass Kupak szinten, hogy ikon témát választhass.", + PremiumFeature.subjectrename: + "Támogass Kupak szinten, hogy átnevezhesd Föcire.", + PremiumFeature.weeklytimetable: + "Támogass Tinta szinten a heti órarend funkcióért.", PremiumFeature.goalplanner: "A célkövetéshez támogass Tinta szinten.", - PremiumFeature.widget: "Támogass Tinta szinten, és helyezz egy widgetet a kezdőképernyődre.", + PremiumFeature.widget: + "Támogass Tinta szinten, és helyezz egy widgetet a kezdőképernyődre.", }; class PremiumLockedFeatureUpsell extends StatelessWidget { const PremiumLockedFeatureUpsell({super.key, required this.feature}); - static void show({required BuildContext context, required PremiumFeature feature}) => - showDialog(context: context, builder: (context) => PremiumLockedFeatureUpsell(feature: feature)); + static void show( + {required BuildContext context, required PremiumFeature feature}) => + showDialog( + context: context, + builder: (context) => PremiumLockedFeatureUpsell(feature: feature)); final PremiumFeature feature; - IconData _getIcon() => _featureLevels[feature] == PremiumFeatureLevel.kupak ? FilcIcons.kupak : FilcIcons.tinta; - Color _getColor(BuildContext context) => _featureLevels[feature] == PremiumFeatureLevel.kupak - ? const Color(0xffC8A708) - : Theme.of(context).brightness == Brightness.light - ? const Color(0xff691A9B) - : const Color(0xffA66FC8); + IconData _getIcon() => _featureLevels[feature] == PremiumFeatureLevel.kupak + ? FilcIcons.kupak + : FilcIcons.tinta; + Color _getColor(BuildContext context) => + _featureLevels[feature] == PremiumFeatureLevel.kupak + ? const Color(0xffC8A708) + : Theme.of(context).brightness == Brightness.light + ? const Color(0xff691A9B) + : const Color(0xffA66FC8); String? _getAsset() => _featureAssets[feature]; String _getTitle() => _featureTitles[feature]!; String _getDescription() => _featureDescriptions[feature]!; @@ -138,11 +153,14 @@ class PremiumLockedFeatureUpsell extends StatelessWidget { width: double.infinity, child: TextButton( style: ButtonStyle( - backgroundColor: MaterialStatePropertyAll(color.withOpacity(.25)), + backgroundColor: + MaterialStatePropertyAll(color.withOpacity(.25)), foregroundColor: MaterialStatePropertyAll(color), - overlayColor: MaterialStatePropertyAll(color.withOpacity(.1))), + overlayColor: + MaterialStatePropertyAll(color.withOpacity(.1))), onPressed: () { - Navigator.of(context, rootNavigator: true).push(MaterialPageRoute(builder: (context) { + Navigator.of(context, rootNavigator: true) + .push(MaterialPageRoute(builder: (context) { return const PremiumScreen(); })); }, diff --git a/filcnaplo_premium/lib/ui/mobile/settings/nickname.dart b/filcnaplo_premium/lib/ui/mobile/settings/nickname.dart index add2e93..d8dcc15 100644 --- a/filcnaplo_premium/lib/ui/mobile/settings/nickname.dart +++ b/filcnaplo_premium/lib/ui/mobile/settings/nickname.dart @@ -1,5 +1,6 @@ import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/api/providers/user_provider.dart'; +import 'package:filcnaplo/models/user.dart'; import 'package:filcnaplo_mobile_ui/common/bottom_sheet_menu/bottom_sheet_menu_item.dart'; import 'package:filcnaplo_premium/models/premium_scopes.dart'; import 'package:filcnaplo_premium/providers/premium_provider.dart'; @@ -9,18 +10,24 @@ import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart'; import 'package:provider/provider.dart'; +// ignore: must_be_immutable class UserMenuNickname extends StatelessWidget { - const UserMenuNickname({Key? key}) : super(key: key); + late User u; + + UserMenuNickname(User u, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { return BottomSheetMenuItem( onPressed: () { - if (!Provider.of(context, listen: false).hasScope(PremiumScopes.nickname)) { - PremiumLockedFeatureUpsell.show(context: context, feature: PremiumFeature.profile); + if (!Provider.of(context, listen: false) + .hasScope(PremiumScopes.nickname)) { + PremiumLockedFeatureUpsell.show( + context: context, feature: PremiumFeature.profile); return; } - showDialog(context: context, builder: (context) => const UserNicknameEditor()); + showDialog( + context: context, builder: (context) => UserNicknameEditor(u)); }, icon: const Icon(FeatherIcons.edit2), title: Text("edit_nickname".i18n), @@ -28,8 +35,11 @@ class UserMenuNickname extends StatelessWidget { } } +// ignore: must_be_immutable class UserNicknameEditor extends StatefulWidget { - const UserNicknameEditor({Key? key}) : super(key: key); + late User u; + + UserNicknameEditor(User u, {Key? key}) : super(key: key); @override State createState() => _UserNicknameEditorState(); @@ -54,7 +64,7 @@ class _UserNicknameEditorState extends State { autofocus: true, decoration: InputDecoration( border: const OutlineInputBorder(), - label: Text(user.name!), + label: Text(widget.u.name), suffixIcon: IconButton( icon: const Icon(FeatherIcons.x), onPressed: () { @@ -81,8 +91,10 @@ class _UserNicknameEditorState extends State { style: const TextStyle(fontWeight: FontWeight.w500), ), onPressed: () { - user.user!.nickname = _userName.text.trim(); - Provider.of(context, listen: false).store.storeUser(user.user!); + widget.u.nickname = _userName.text.trim(); + Provider.of(context, listen: false) + .store + .storeUser(widget.u); Provider.of(context, listen: false).refresh(); Navigator.of(context).pop(true); }, diff --git a/filcnaplo_premium/lib/ui/mobile/settings/profile_pic.dart b/filcnaplo_premium/lib/ui/mobile/settings/profile_pic.dart index fa2d945..1b4362d 100644 --- a/filcnaplo_premium/lib/ui/mobile/settings/profile_pic.dart +++ b/filcnaplo_premium/lib/ui/mobile/settings/profile_pic.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/api/providers/user_provider.dart'; +import 'package:filcnaplo/models/user.dart'; import 'package:filcnaplo_mobile_ui/common/bottom_sheet_menu/bottom_sheet_menu_item.dart'; import 'package:filcnaplo_premium/models/premium_scopes.dart'; import 'package:filcnaplo_premium/providers/premium_provider.dart'; @@ -14,8 +15,11 @@ import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart'; import 'package:provider/provider.dart'; import 'package:image_picker/image_picker.dart'; +// ignore: must_be_immutable class UserMenuProfilePic extends StatelessWidget { - const UserMenuProfilePic({Key? key}) : super(key: key); + late User u; + + UserMenuProfilePic(User u, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -27,8 +31,7 @@ class UserMenuProfilePic extends StatelessWidget { return BottomSheetMenuItem( onPressed: () { showDialog( - context: context, - builder: (context) => const UserProfilePicEditor()); + context: context, builder: (context) => UserProfilePicEditor(u)); }, icon: const Icon(FeatherIcons.camera), title: Text("edit_profile_picture".i18n), @@ -36,8 +39,11 @@ class UserMenuProfilePic extends StatelessWidget { } } +// ignore: must_be_immutable class UserProfilePicEditor extends StatefulWidget { - const UserProfilePicEditor({Key? key}) : super(key: key); + late User u; + + UserProfilePicEditor(User u, {Key? key}) : super(key: key); @override State createState() => _UserProfilePicEditorState(); @@ -101,10 +107,10 @@ class _UserProfilePicEditorState extends State { Future _cropImage() async { List imageBytes = await _file!.readAsBytes(); String base64Image = base64Encode(imageBytes); - user.user!.picture = base64Image; + widget.u.picture = base64Image; Provider.of(context, listen: false) .store - .storeUser(user.user!); + .storeUser(widget.u); Provider.of(context, listen: false).refresh(); } @@ -137,7 +143,7 @@ class _UserProfilePicEditorState extends State { const EdgeInsets.symmetric(vertical: 12.0, horizontal: 24.0), child: openImageWidget(), ), - if (user.user!.picture != "") + if (widget.u.picture != "") TextButton( child: Text( "remove_profile_picture".i18n, @@ -145,10 +151,10 @@ class _UserProfilePicEditorState extends State { fontWeight: FontWeight.w500, color: Colors.red), ), onPressed: () { - user.user!.picture = ""; + widget.u.picture = ""; Provider.of(context, listen: false) .store - .storeUser(user.user!); + .storeUser(widget.u); Provider.of(context, listen: false).refresh(); Navigator.of(context).pop(true); },