Commit f742a7a82217fe59232d16b68f9c393b7d9c89c4

Authored by 常守达
1 parent 0b7a1a00

feat(email): 邮箱新绑定/换绑接口调试

This diff could not be displayed because it is too large.
  1 +{"v":"5.6.10","fr":25,"ip":0,"op":75,"w":375,"h":472,"nm":"V2.5-新手引导6","ddd":0,"assets":[{"id":"image_0","w":540,"h":174,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_1","w":750,"h":174,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_2","w":624,"h":174,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_3","w":720,"h":174,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_4","w":828,"h":174,"u":"","p":"data:image/png;base64,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","e":1}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[294.625,359.737,0],"ix":2},"a":{"a":0,"k":[61.625,-148.25,0],"ix":1},"s":{"a":0,"k":[126.316,126.316,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54.438,-149.031],[59.062,-143.875],[68.5,-153]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.56862745098,0.427450980392,0.960784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[0]},{"t":60,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":100,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[277.125,290.237,0],"ix":2},"a":{"a":0,"k":[61.625,-148.25,0],"ix":1},"s":{"a":0,"k":[126.316,126.316,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54.438,-149.031],[59.062,-143.875],[68.5,-153]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.56862745098,0.427450980392,0.960784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[0]},{"t":50,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":100,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"形状图层 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[261.125,222.737,0],"ix":2},"a":{"a":0,"k":[61.625,-148.25,0],"ix":1},"s":{"a":0,"k":[126.316,126.316,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54.438,-149.031],[59.062,-143.875],[68.5,-153]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.56862745098,0.427450980392,0.960784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"t":40,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":100,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[284.125,154.737,0],"ix":2},"a":{"a":0,"k":[61.625,-148.25,0],"ix":1},"s":{"a":0,"k":[126.316,126.316,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54.438,-149.031],[59.062,-143.875],[68.5,-153]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.56862745098,0.427450980392,0.960784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"t":30,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":100,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[246.125,83.237,0],"ix":2},"a":{"a":0,"k":[61.625,-148.25,0],"ix":1},"s":{"a":0,"k":[126.316,126.316,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[54.438,-149.031],[59.062,-143.875],[68.5,-153]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.56862745098,0.427450980392,0.960784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":100,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":2,"nm":"1.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":8,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[188,110,0],"to":[0,-4.333,0],"ti":[0,4.333,0]},{"t":10,"s":[188,84,0]}],"ix":2},"a":{"a":0,"k":[270,87,0],"ix":1},"s":{"a":0,"k":[33.33,33.33,100],"ix":6}},"ao":0,"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":2,"nm":"2.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":18,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[188,175,0],"to":[0,-3.333,0],"ti":[0,3.333,0]},{"t":20,"s":[188,155,0]}],"ix":2},"a":{"a":0,"k":[375,87,0],"ix":1},"s":{"a":0,"k":[33.33,33.33,100],"ix":6}},"ao":0,"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"3.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"t":28,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[188,243,0],"to":[0,-3.333,0],"ti":[0,3.333,0]},{"t":30,"s":[188,223,0]}],"ix":2},"a":{"a":0,"k":[312,87,0],"ix":1},"s":{"a":0,"k":[33.33,33.33,100],"ix":6}},"ao":0,"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":2,"nm":"4.png","cl":"png","refId":"image_3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"t":38,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[188,311,0],"to":[0,-3.333,0],"ti":[0,3.333,0]},{"t":40,"s":[188,291,0]}],"ix":2},"a":{"a":0,"k":[360,87,0],"ix":1},"s":{"a":0,"k":[33.33,33.33,100],"ix":6}},"ao":0,"ip":0,"op":75,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":2,"nm":"5.png","cl":"png","refId":"image_4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[0]},{"t":48,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[188,379,0],"to":[0,-3.333,0],"ti":[0,3.333,0]},{"t":50,"s":[188,359,0]}],"ix":2},"a":{"a":0,"k":[414,87,0],"ix":1},"s":{"a":0,"k":[33.33,33.33,100],"ix":6}},"ao":0,"ip":0,"op":75,"st":0,"bm":0}],"markers":[]}
@@ -794,7 +794,7 @@ class TodayController extends GetMaterialController { @@ -794,7 +794,7 @@ class TodayController extends GetMaterialController {
794 void didChangeAppLifecycleState(AppLifecycleState state) { 794 void didChangeAppLifecycleState(AppLifecycleState state) {
795 super.didChangeAppLifecycleState(state); 795 super.didChangeAppLifecycleState(state);
796 796
797 - if (state == AppLifecycleState.resumed) { 797 + if (state == AppLifecycleState.resumed && _userStateService.isLoggedIn) {
798 var today = DateUtils.dateOnly(DateTime.now()); 798 var today = DateUtils.dateOnly(DateTime.now());
799 lastSelectableDay.value = today; 799 lastSelectableDay.value = today;
800 changeDate(today); 800 changeDate(today);
@@ -8,7 +8,6 @@ import 'package:doublefeel_flutter/core/network/api/user_api.dart'; @@ -8,7 +8,6 @@ import 'package:doublefeel_flutter/core/network/api/user_api.dart';
8 import 'package:doublefeel_flutter/core/result/app_result.dart'; 8 import 'package:doublefeel_flutter/core/result/app_result.dart';
9 import 'package:doublefeel_flutter/core/services/loading_service.dart'; 9 import 'package:doublefeel_flutter/core/services/loading_service.dart';
10 import 'package:doublefeel_flutter/core/services/user_state_service.dart'; 10 import 'package:doublefeel_flutter/core/services/user_state_service.dart';
11 -import 'package:doublefeel_flutter/core/theme/app_colors.dart';  
12 import 'package:doublefeel_flutter/core/theme/app_theme.dart'; 11 import 'package:doublefeel_flutter/core/theme/app_theme.dart';
13 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 12 import 'package:doublefeel_flutter/core/util/app_toast.dart';
14 13
@@ -53,42 +52,76 @@ class AccountSettingView extends GetView<MyController> { @@ -53,42 +52,76 @@ class AccountSettingView extends GetView<MyController> {
53 return Column( 52 return Column(
54 children: [ 53 children: [
55 const SizedBox(height: 16), 54 const SizedBox(height: 16),
56 - if (linkedAccount != null) ...[  
57 - _AccountInfoRow(  
58 - title: linkedAccount.title,  
59 - content: linkedAccount.content, 55 + Container(
  56 + margin: const EdgeInsets.only(left: 16, right: 16),
  57 + decoration: ShapeDecoration(
  58 + color: Colors.white,
  59 + shape: RoundedRectangleBorder(
  60 + borderRadius: BorderRadius.all(Radius.circular(16)),
  61 + ),
60 ), 62 ),
61 - const SizedBox(height: 12),  
62 - ] else if (telephone.isNotEmpty) ...[  
63 - _AccountInfoRow(  
64 - title: context.l10n.mobilePhoneNumber,  
65 - content: telephone, 63 + child: Column(
  64 + children: [
  65 + if (linkedAccount != null) ...[
  66 + _AccountInfoRow(
  67 + title: linkedAccount.title,
  68 + content: linkedAccount.content,
  69 + ),
  70 + // const SizedBox(height: 12),
  71 + ] else if (telephone.isNotEmpty) ...[
  72 + _AccountInfoRow(
  73 + title: context.l10n.mobilePhoneNumber,
  74 + content: telephone,
  75 + ),
  76 + // const SizedBox(height: 12),
  77 + ],
  78 + if (linkedAccount != null || telephone.isNotEmpty) ...[
  79 + const Padding(
  80 + padding: EdgeInsets.symmetric(horizontal: 20),
  81 + child: Divider(
  82 + color: Color(0xFFF3F3F3),
  83 + height: 1,
  84 + thickness: 1,
  85 + ),
  86 + )
  87 + ],
  88 + _SecurityEmailRow(
  89 + email: securityEmail,
  90 + onTap: () async {
  91 + if (securityEmail.isEmpty) {
  92 + await Get.toNamed(Routes.ADD_SECURITY_EMAIL);
  93 + } else {
  94 + await Get.toNamed(Routes.CHANGE_SECURITY_EMAIL);
  95 + }
  96 + controller.refreshEmail();
  97 + },
  98 + onPwdTap: () async {
  99 + await Get.toNamed(Routes.RESET_PASSWORD);
  100 + },
  101 + ),
  102 + ],
66 ), 103 ),
67 - const SizedBox(height: 12),  
68 - ],  
69 - _SecurityEmailRow(  
70 - email: securityEmail,  
71 - onTap: () async {  
72 - if (securityEmail.isEmpty) {  
73 - await Get.toNamed(Routes.ADD_SECURITY_EMAIL);  
74 - } else {  
75 - await Get.toNamed(Routes.CHANGE_SECURITY_EMAIL);  
76 - }  
77 - controller.refreshEmail();  
78 - },  
79 ), 104 ),
80 - const Spacer(),  
81 - _AccountActionButton(  
82 - label: context.l10n.logOut,  
83 - color: context.colors.primary,  
84 - backgroundColor: Colors.white,  
85 - onTap: _logout, 105 + const SizedBox(height: 12),
  106 + SizedBox(
  107 + width: Get.width - 32,
  108 + height: 48,
  109 + child: _AccountActionButton(
  110 + label: context.l10n.logOut,
  111 + color: context.colors.primary,
  112 + backgroundColor: Colors.white,
  113 + onTap: _logout,
  114 + ),
86 ), 115 ),
87 const SizedBox(height: 12), 116 const SizedBox(height: 12),
88 - _AccountActionButton(  
89 - label: context.l10n.deleteAccount,  
90 - color: context.colors.warning,  
91 - onTap: _showDeleteAccountSheet, 117 + SizedBox(
  118 + width: 280,
  119 + height: 48,
  120 + child: _AccountActionButton(
  121 + label: context.l10n.deleteAccount,
  122 + color: context.colors.warning,
  123 + onTap: _showDeleteAccountSheet,
  124 + ),
92 ), 125 ),
93 SizedBox(height: MediaQuery.paddingOf(context).bottom + 40), 126 SizedBox(height: MediaQuery.paddingOf(context).bottom + 40),
94 ], 127 ],
@@ -172,7 +205,7 @@ class _AccountInfoRow extends StatelessWidget { @@ -172,7 +205,7 @@ class _AccountInfoRow extends StatelessWidget {
172 Widget build(BuildContext context) { 205 Widget build(BuildContext context) {
173 return Container( 206 return Container(
174 height: 74, 207 height: 74,
175 - margin: const EdgeInsets.symmetric(horizontal: 15), 208 + // margin: const EdgeInsets.symmetric(horizontal: 15),
176 padding: const EdgeInsets.symmetric(horizontal: 20), 209 padding: const EdgeInsets.symmetric(horizontal: 20),
177 decoration: BoxDecoration( 210 decoration: BoxDecoration(
178 color: Colors.white, 211 color: Colors.white,
@@ -211,61 +244,111 @@ class _AccountInfoRow extends StatelessWidget { @@ -211,61 +244,111 @@ class _AccountInfoRow extends StatelessWidget {
211 } 244 }
212 245
213 class _SecurityEmailRow extends StatelessWidget { 246 class _SecurityEmailRow extends StatelessWidget {
214 - const _SecurityEmailRow({required this.email, required this.onTap}); 247 + const _SecurityEmailRow({
  248 + required this.email,
  249 + required this.onTap,
  250 + required this.onPwdTap,
  251 + });
215 252
216 final String email; 253 final String email;
217 final VoidCallback onTap; 254 final VoidCallback onTap;
  255 + final VoidCallback onPwdTap;
218 256
219 @override 257 @override
220 Widget build(BuildContext context) { 258 Widget build(BuildContext context) {
221 return Semantics( 259 return Semantics(
222 button: true, 260 button: true,
223 label: context.l10n.securityEmail, 261 label: context.l10n.securityEmail,
224 - child: GestureDetector(  
225 - behavior: HitTestBehavior.opaque,  
226 - onTap: onTap,  
227 - child: Container(  
228 - height: 56,  
229 - margin: const EdgeInsets.symmetric(horizontal: 16),  
230 - padding: const EdgeInsets.symmetric(horizontal: 20),  
231 - decoration: BoxDecoration(  
232 - color: Colors.white,  
233 - borderRadius: BorderRadius.circular(16),  
234 - ),  
235 - child: Row(  
236 - children: [  
237 - Text(  
238 - context.l10n.securityEmail,  
239 - style: TextStyle(  
240 - color: context.colors.textPrimary,  
241 - fontSize: 14,  
242 - fontWeight: FontWeight.w400,  
243 - height: 1.4, 262 + child: Container(
  263 + // margin: const EdgeInsets.symmetric(horizontal: 16),
  264 + decoration: BoxDecoration(
  265 + color: Colors.white,
  266 + borderRadius: BorderRadius.circular(16),
  267 + ),
  268 + child: Column(
  269 + children: [
  270 + GestureDetector(
  271 + behavior: HitTestBehavior.opaque,
  272 + onTap: onTap,
  273 + child: Container(
  274 + height: 56,
  275 + padding: const EdgeInsets.symmetric(horizontal: 20),
  276 + child: Row(
  277 + children: [
  278 + Text(
  279 + context.l10n.securityEmail,
  280 + style: TextStyle(
  281 + color: context.colors.textPrimary,
  282 + fontSize: 14,
  283 + fontWeight: FontWeight.w400,
  284 + height: 1.4,
  285 + ),
  286 + ),
  287 + const SizedBox(width: 16),
  288 + Expanded(
  289 + child: Text(
  290 + email,
  291 + maxLines: 1,
  292 + overflow: TextOverflow.ellipsis,
  293 + textAlign: TextAlign.right,
  294 + style: TextStyle(
  295 + color: context.colors.textSecondary,
  296 + fontSize: 14,
  297 + fontWeight: FontWeight.w400,
  298 + height: 1.4,
  299 + ),
  300 + ),
  301 + ),
  302 + const SizedBox(width: 8),
  303 + Image.asset(
  304 + 'assets/images/common/ic_more.png',
  305 + width: 16,
  306 + height: 16,
  307 + color: const Color(0xFFB0B0B6),
  308 + ),
  309 + ],
244 ), 310 ),
245 ), 311 ),
246 - const SizedBox(width: 16),  
247 - Expanded(  
248 - child: Text(  
249 - email,  
250 - maxLines: 1,  
251 - overflow: TextOverflow.ellipsis,  
252 - textAlign: TextAlign.right,  
253 - style: TextStyle(  
254 - color: context.colors.textSecondary,  
255 - fontSize: 14,  
256 - fontWeight: FontWeight.w400,  
257 - height: 1.4,  
258 - ), 312 + ),
  313 + if (email.isNotEmpty) ...[
  314 + const Padding(
  315 + padding: EdgeInsets.symmetric(horizontal: 20),
  316 + child: Divider(
  317 + height: 1,
  318 + thickness: 1,
  319 + color: Color(0xFFF3F3F3),
259 ), 320 ),
260 ), 321 ),
261 - const SizedBox(width: 8),  
262 - Image.asset(  
263 - 'assets/images/common/ic_more.png',  
264 - width: 16,  
265 - height: 16, 322 + GestureDetector(
  323 + behavior: HitTestBehavior.opaque,
  324 + onTap: onPwdTap,
  325 + child: Container(
  326 + height: 56,
  327 + padding: const EdgeInsets.symmetric(horizontal: 20),
  328 + child: Row(
  329 + children: [
  330 + Text(
  331 + context.l10n.changePassword,
  332 + style: TextStyle(
  333 + color: context.colors.textPrimary,
  334 + fontSize: 14,
  335 + fontWeight: FontWeight.w400,
  336 + height: 1.4,
  337 + ),
  338 + ),
  339 + const Spacer(),
  340 + Image.asset(
  341 + 'assets/images/common/ic_more.png',
  342 + width: 16,
  343 + height: 16,
  344 + color: const Color(0xFFB0B0B6),
  345 + ),
  346 + ],
  347 + ),
  348 + ),
266 ), 349 ),
267 - ],  
268 - ), 350 + ]
  351 + ],
269 ), 352 ),
270 ), 353 ),
271 ); 354 );
@@ -287,24 +370,20 @@ class _AccountActionButton extends StatelessWidget { @@ -287,24 +370,20 @@ class _AccountActionButton extends StatelessWidget {
287 370
288 @override 371 @override
289 Widget build(BuildContext context) { 372 Widget build(BuildContext context) {
290 - return SizedBox(  
291 - width: 280,  
292 - height: 48,  
293 - child: Material(  
294 - color: backgroundColor,  
295 - borderRadius: BorderRadius.circular(24),  
296 - child: InkWell(  
297 - borderRadius: BorderRadius.circular(24),  
298 - onTap: onTap,  
299 - child: Center(  
300 - child: Text(  
301 - label,  
302 - style: TextStyle(  
303 - color: color,  
304 - fontSize: 16,  
305 - fontWeight: FontWeight.w600,  
306 - height: 1.25,  
307 - ), 373 + return Material(
  374 + color: backgroundColor,
  375 + borderRadius: BorderRadius.circular(16),
  376 + child: InkWell(
  377 + borderRadius: BorderRadius.circular(16),
  378 + onTap: onTap,
  379 + child: Center(
  380 + child: Text(
  381 + label,
  382 + style: TextStyle(
  383 + color: color,
  384 + fontSize: 16,
  385 + fontWeight: FontWeight.w600,
  386 + height: 1.25,
308 ), 387 ),
309 ), 388 ),
310 ), 389 ),
@@ -8,6 +8,7 @@ import 'package:doublefeel_flutter/core/result/app_result.dart'; @@ -8,6 +8,7 @@ import 'package:doublefeel_flutter/core/result/app_result.dart';
8 import 'package:doublefeel_flutter/core/services/loading_service.dart'; 8 import 'package:doublefeel_flutter/core/services/loading_service.dart';
9 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 9 import 'package:doublefeel_flutter/core/util/app_toast.dart';
10 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 10 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
  11 +import 'package:doublefeel_flutter/data/models/user/user_models.dart';
11 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 12 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
12 import 'package:flutter/material.dart'; 13 import 'package:flutter/material.dart';
13 import 'package:flutter/services.dart'; 14 import 'package:flutter/services.dart';
@@ -36,8 +37,12 @@ class AddSecurityEmailController extends GetxController { @@ -36,8 +37,12 @@ class AddSecurityEmailController extends GetxController {
36 ); 37 );
37 38
38 final passwordController = TextEditingController(); 39 final passwordController = TextEditingController();
  40 + final oldPasswordController = TextEditingController();
39 final passwordInput = ''.obs; 41 final passwordInput = ''.obs;
  42 + final oldPasswordInput = ''.obs;
40 final isPasswordObscured = true.obs; 43 final isPasswordObscured = true.obs;
  44 + final isOldPasswordObscured = true.obs;
  45 + final hasPostUpdatePassword = false.obs;
41 46
42 final confirmPasswordController = TextEditingController(); 47 final confirmPasswordController = TextEditingController();
43 final confirmPasswordInput = ''.obs; 48 final confirmPasswordInput = ''.obs;
@@ -52,6 +57,7 @@ class AddSecurityEmailController extends GetxController { @@ -52,6 +57,7 @@ class AddSecurityEmailController extends GetxController {
52 codeController.addListener(_onCodeChanged); 57 codeController.addListener(_onCodeChanged);
53 passwordController.addListener(_onPasswordChanged); 58 passwordController.addListener(_onPasswordChanged);
54 confirmPasswordController.addListener(_onConfirmPasswordChanged); 59 confirmPasswordController.addListener(_onConfirmPasswordChanged);
  60 + oldPasswordController.addListener(_onOldPasswordChanged);
55 } 61 }
56 62
57 void _onEmailChanged() { 63 void _onEmailChanged() {
@@ -70,6 +76,10 @@ class AddSecurityEmailController extends GetxController { @@ -70,6 +76,10 @@ class AddSecurityEmailController extends GetxController {
70 confirmPasswordInput.value = confirmPasswordController.text.trim(); 76 confirmPasswordInput.value = confirmPasswordController.text.trim();
71 } 77 }
72 78
  79 + void _onOldPasswordChanged() {
  80 + oldPasswordInput.value = oldPasswordController.text.trim();
  81 + }
  82 +
73 bool get isEmailValid => _emailPattern.hasMatch(emailInput.value); 83 bool get isEmailValid => _emailPattern.hasMatch(emailInput.value);
74 84
75 bool get isPasswordValid => 85 bool get isPasswordValid =>
@@ -81,16 +91,30 @@ class AddSecurityEmailController extends GetxController { @@ -81,16 +91,30 @@ class AddSecurityEmailController extends GetxController {
81 confirmPasswordInput.value.isNotEmpty && 91 confirmPasswordInput.value.isNotEmpty &&
82 confirmPasswordInput.value == passwordInput.value; 92 confirmPasswordInput.value == passwordInput.value;
83 93
  94 + bool get isConfirmPasswordValid2 =>
  95 + _passwordRegex.hasMatch(confirmPasswordInput.value) &&
  96 + confirmPasswordInput.value.isNotEmpty;
  97 +
84 bool get canSetPassword => isPasswordValid && isConfirmPasswordValid; 98 bool get canSetPassword => isPasswordValid && isConfirmPasswordValid;
  99 + bool get canChangePassword =>
  100 + isPasswordValid &&
  101 + isConfirmPasswordValid &&
  102 + oldPasswordInput.value.isNotEmpty;
85 103
86 bool get showError => hasSubmittedEmail.value && !isEmailValid; 104 bool get showError => hasSubmittedEmail.value && !isEmailValid;
87 105
88 bool get canSubmitCode => codeInput.value.isNotEmpty; 106 bool get canSubmitCode => codeInput.value.isNotEmpty;
  107 + bool get canForgotSubmitNewPassword =>
  108 + codeInput.value.isNotEmpty && isPasswordValid;
89 109
90 void togglePasswordVisibility() { 110 void togglePasswordVisibility() {
91 isPasswordObscured.value = !isPasswordObscured.value; 111 isPasswordObscured.value = !isPasswordObscured.value;
92 } 112 }
93 113
  114 + void toggleOldPasswordVisibility() {
  115 + isOldPasswordObscured.value = !isOldPasswordObscured.value;
  116 + }
  117 +
94 void toggleConfirmPasswordVisibility() { 118 void toggleConfirmPasswordVisibility() {
95 isConfirmPasswordObscured.value = !isConfirmPasswordObscured.value; 119 isConfirmPasswordObscured.value = !isConfirmPasswordObscured.value;
96 } 120 }
@@ -199,6 +223,32 @@ class AddSecurityEmailController extends GetxController { @@ -199,6 +223,32 @@ class AddSecurityEmailController extends GetxController {
199 } catch (_) {} 223 } catch (_) {}
200 } 224 }
201 225
  226 + Future<void> changePassword(BuildContext context) async {
  227 + if (!canChangePassword) return;
  228 +
  229 + try {
  230 + final md5OldPassword =
  231 + md5.convert(utf8.encode(oldPasswordInput.value)).toString();
  232 + final md5NewPassword =
  233 + md5.convert(utf8.encode(passwordInput.value)).toString();
  234 + await LoadingService.instance.run(() async {
  235 + final result = await _userApi.changePassword(
  236 + md5OldPassword,
  237 + md5NewPassword,
  238 + );
  239 + if (result is AppSuccess<void>) {
  240 + AppToast.show(context.l10n.settingsSaved);
  241 + FocusScope.of(context).unfocus();
  242 + AppToast.show(context.l10n.settingsSaved);
  243 + TextInput.finishAutofillContext();
  244 +
  245 + Get.back();
  246 + } else {}
  247 + });
  248 + } catch (_) {}
  249 + hasPostUpdatePassword.value = true;
  250 + }
  251 +
202 Future<void> verifyPassword() async { 252 Future<void> verifyPassword() async {
203 try { 253 try {
204 final md5Password = 254 final md5Password =
@@ -223,4 +273,48 @@ class AddSecurityEmailController extends GetxController { @@ -223,4 +273,48 @@ class AddSecurityEmailController extends GetxController {
223 confirmPasswordController.dispose(); 273 confirmPasswordController.dispose();
224 super.onClose(); 274 super.onClose();
225 } 275 }
  276 +
  277 + Future<void> toForgotPassword() async {
  278 + final securityEmail =
  279 + userPrefs.preferences.value.meUserInfo?.securityEmail ?? '';
  280 + if (securityEmail.isEmpty) {
  281 + return;
  282 + }
  283 +
  284 + try {
  285 + await LoadingService.instance.run(() async {
  286 + final loginRes = await _userApi.forgetPasswordSendEmail(
  287 + email: securityEmail,
  288 + );
  289 + if (loginRes is AppSuccess<LoginResponse>) {
  290 + AppToast.show(l10n.aResetEmailHasBeenSent);
  291 + Get.to(() => ForgotEmailVerificationView());
  292 + } else {}
  293 + });
  294 + } catch (e) {}
  295 + }
  296 +
  297 + Future<void> forgotSubmitNewPassword(BuildContext context) async {
  298 + if (!canForgotSubmitNewPassword) return;
  299 +
  300 + try {
  301 + final md5Password =
  302 + md5.convert(utf8.encode(passwordInput.value)).toString();
  303 + await LoadingService.instance.run(() async {
  304 + final result = await _userApi.forgetPasswordSetNewPassword(
  305 + email: userPrefs.preferences.value.meUserInfo?.securityEmail ?? '',
  306 + verificationCode: codeController.text,
  307 + newPassword: md5Password,
  308 + );
  309 + if (result is AppSuccess<void>) {
  310 + AppToast.show(context.l10n.settingsSaved);
  311 + FocusScope.of(context).unfocus();
  312 + AppToast.show(context.l10n.settingsSaved);
  313 + TextInput.finishAutofillContext();
  314 + Get.back();
  315 + Get.back();
  316 + } else {}
  317 + });
  318 + } catch (_) {}
  319 + }
226 } 320 }
1 import 'package:doublefeel_flutter/app/actions/dialog_action.dart'; 1 import 'package:doublefeel_flutter/app/actions/dialog_action.dart';
2 import 'package:doublefeel_flutter/app/models/dialog_meta_data.dart'; 2 import 'package:doublefeel_flutter/app/models/dialog_meta_data.dart';
3 import 'package:doublefeel_flutter/app/modules/home/widgets/my/security_email_controller.dart'; 3 import 'package:doublefeel_flutter/app/modules/home/widgets/my/security_email_controller.dart';
  4 +import 'package:doublefeel_flutter/app/modules/login/views/email_login_contact_us_bottom_sheet.dart';
4 import 'package:doublefeel_flutter/app/utils/dialog_utils.dart'; 5 import 'package:doublefeel_flutter/app/utils/dialog_utils.dart';
5 import 'package:doublefeel_flutter/core/theme/app_theme.dart'; 6 import 'package:doublefeel_flutter/core/theme/app_theme.dart';
6 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 7 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
@@ -406,8 +407,10 @@ class _SecurityEmailAppBar extends StatelessWidget @@ -406,8 +407,10 @@ class _SecurityEmailAppBar extends StatelessWidget
406 implements PreferredSizeWidget { 407 implements PreferredSizeWidget {
407 const _SecurityEmailAppBar({ 408 const _SecurityEmailAppBar({
408 this.onPressed, 409 this.onPressed,
  410 + this.title,
409 }); 411 });
410 final VoidCallback? onPressed; 412 final VoidCallback? onPressed;
  413 + final Widget? title;
411 414
412 @override 415 @override
413 Size get preferredSize => const Size.fromHeight(44); 416 Size get preferredSize => const Size.fromHeight(44);
@@ -419,6 +422,7 @@ class _SecurityEmailAppBar extends StatelessWidget @@ -419,6 +422,7 @@ class _SecurityEmailAppBar extends StatelessWidget
419 elevation: 0, 422 elevation: 0,
420 scrolledUnderElevation: 0, 423 scrolledUnderElevation: 0,
421 toolbarHeight: 44, 424 toolbarHeight: 44,
  425 + title: title,
422 leadingWidth: 60, 426 leadingWidth: 60,
423 leading: IconButton( 427 leading: IconButton(
424 onPressed: onPressed ?? Get.back, 428 onPressed: onPressed ?? Get.back,
@@ -567,7 +571,7 @@ class SetSecurityEmailPasswordView extends GetView<AddSecurityEmailController> { @@ -567,7 +571,7 @@ class SetSecurityEmailPasswordView extends GetView<AddSecurityEmailController> {
567 fontWeight: FontWeight.w400, 571 fontWeight: FontWeight.w400,
568 ), 572 ),
569 decoration: InputDecoration( 573 decoration: InputDecoration(
570 - hintText: l10n.emailLoginYourPassword, 574 + hintText: l10n.enterPassword,
571 hintStyle: TextStyle( 575 hintStyle: TextStyle(
572 color: context.colors.textTertiary, 576 color: context.colors.textTertiary,
573 fontSize: 16, 577 fontSize: 16,
@@ -678,7 +682,7 @@ class SetSecurityEmailPasswordView extends GetView<AddSecurityEmailController> { @@ -678,7 +682,7 @@ class SetSecurityEmailPasswordView extends GetView<AddSecurityEmailController> {
678 fontWeight: FontWeight.w400, 682 fontWeight: FontWeight.w400,
679 ), 683 ),
680 decoration: InputDecoration( 684 decoration: InputDecoration(
681 - hintText: l10n.emailLoginYourPassword, 685 + hintText: context.l10n.confirmNewPassword,
682 hintStyle: TextStyle( 686 hintStyle: TextStyle(
683 color: context.colors.textTertiary, 687 color: context.colors.textTertiary,
684 fontSize: 16, 688 fontSize: 16,
@@ -956,3 +960,776 @@ class VerifyEmailPwdView extends GetView<AddSecurityEmailController> { @@ -956,3 +960,776 @@ class VerifyEmailPwdView extends GetView<AddSecurityEmailController> {
956 ); 960 );
957 } 961 }
958 } 962 }
  963 +
  964 +class ReSetSecurityEmailPasswordView
  965 + extends GetView<AddSecurityEmailController> {
  966 + const ReSetSecurityEmailPasswordView({super.key});
  967 +
  968 + @override
  969 + Widget build(BuildContext context) {
  970 + final c = Get.isRegistered<AddSecurityEmailController>()
  971 + ? controller
  972 + : Get.put(AddSecurityEmailController());
  973 + final l10n = context.l10n;
  974 + final colors = context.colors;
  975 +
  976 + return AnnotatedRegion<SystemUiOverlayStyle>(
  977 + value: SystemUiOverlayStyle(
  978 + statusBarColor: Colors.transparent,
  979 + statusBarIconBrightness: Brightness.dark,
  980 + statusBarBrightness: Brightness.light,
  981 + systemNavigationBarColor: colors.backgroundPage,
  982 + systemNavigationBarIconBrightness: Brightness.dark,
  983 + ),
  984 + child: Scaffold(
  985 + backgroundColor: colors.backgroundPage,
  986 + appBar: _SecurityEmailAppBar(
  987 + title: Text(
  988 + l10n.changePassword,
  989 + textAlign: TextAlign.center,
  990 + style: TextStyle(
  991 + color: Colors.black,
  992 + fontSize: 16,
  993 + fontWeight: FontWeight.w500,
  994 + ),
  995 + ),
  996 + ),
  997 + body: SafeArea(
  998 + top: false,
  999 + child: Padding(
  1000 + padding: const EdgeInsets.symmetric(horizontal: 28),
  1001 + child: Column(
  1002 + children: [
  1003 + Expanded(
  1004 + child: SingleChildScrollView(
  1005 + child: Column(
  1006 + children: [
  1007 + const SizedBox(height: 32),
  1008 + Row(
  1009 + children: [
  1010 + const SizedBox(width: 16),
  1011 + Text(
  1012 + l10n.enterYourCurrentPasswordHere,
  1013 + style: TextStyle(
  1014 + color: const Color(0xFF141414),
  1015 + fontSize: 14,
  1016 + fontWeight: FontWeight.w500,
  1017 + ),
  1018 + ),
  1019 + ],
  1020 + ),
  1021 + const SizedBox(height: 15),
  1022 + Obx(() {
  1023 + final isObscured = c.isOldPasswordObscured.value;
  1024 + return TextField(
  1025 + textInputAction: TextInputAction.next,
  1026 + controller: c.oldPasswordController,
  1027 + obscureText: isObscured,
  1028 + autofillHints: const [AutofillHints.password],
  1029 + obscuringCharacter: '*',
  1030 + contextMenuBuilder: (BuildContext context,
  1031 + EditableTextState editableTextState) {
  1032 + List<ContextMenuButtonItem> buttonItems =
  1033 + editableTextState.contextMenuButtonItems;
  1034 + buttonItems.removeWhere((item) =>
  1035 + item.type != ContextMenuButtonType.paste);
  1036 + return AdaptiveTextSelectionToolbar.buttonItems(
  1037 + anchors: editableTextState.contextMenuAnchors,
  1038 + buttonItems: buttonItems,
  1039 + );
  1040 + },
  1041 + inputFormatters: [
  1042 + FilteringTextInputFormatter.deny(RegExp(r'\s')),
  1043 + FilteringTextInputFormatter.allow(
  1044 + RegExp(r'[\x21-\x7E]'),
  1045 + ),
  1046 + ],
  1047 + style: TextStyle(
  1048 + color: context.colors.textPrimary,
  1049 + fontSize: 16,
  1050 + fontWeight: FontWeight.w400,
  1051 + ),
  1052 + decoration: InputDecoration(
  1053 + hintText: l10n.currentPassword,
  1054 + hintStyle: TextStyle(
  1055 + color: context.colors.textTertiary,
  1056 + fontSize: 16,
  1057 + ),
  1058 + counterText: '',
  1059 + filled: true,
  1060 + fillColor: Colors.white,
  1061 + contentPadding: const EdgeInsets.symmetric(
  1062 + horizontal: 20,
  1063 + vertical: 16,
  1064 + ),
  1065 + border: OutlineInputBorder(
  1066 + borderRadius: BorderRadius.circular(27),
  1067 + borderSide: BorderSide.none,
  1068 + ),
  1069 + enabledBorder: OutlineInputBorder(
  1070 + borderRadius: BorderRadius.circular(27),
  1071 + borderSide: BorderSide.none,
  1072 + ),
  1073 + focusedBorder: OutlineInputBorder(
  1074 + borderRadius: BorderRadius.circular(27),
  1075 + borderSide: BorderSide(
  1076 + color: context.colors.primary,
  1077 + width: 1,
  1078 + ),
  1079 + ),
  1080 + suffixIconConstraints: const BoxConstraints(
  1081 + minWidth: 24,
  1082 + minHeight: 24,
  1083 + ),
  1084 + suffixIcon: GestureDetector(
  1085 + onTap: c.toggleOldPasswordVisibility,
  1086 + child: Padding(
  1087 + padding: const EdgeInsets.only(right: 16),
  1088 + child: Image.asset(
  1089 + isObscured
  1090 + ? 'assets/images/common/ic_hide_password.png'
  1091 + : 'assets/images/common/ic_show_password.webp',
  1092 + color: context.colors.textTertiary,
  1093 + width: 24,
  1094 + height: 24,
  1095 + ),
  1096 + ),
  1097 + ),
  1098 + ),
  1099 + );
  1100 + }),
  1101 + const SizedBox(height: 12),
  1102 + Center(
  1103 + child: GestureDetector(
  1104 + onTap: () {
  1105 + controller.toForgotPassword();
  1106 + },
  1107 + child: Text(
  1108 + l10n.forgotPassword,
  1109 + style: TextStyle(
  1110 + color: const Color(0xFF7B9BFB),
  1111 + fontSize: 14,
  1112 + fontWeight: FontWeight.w500,
  1113 + decoration: TextDecoration.underline,
  1114 + decorationColor: const Color(0xFF7B9BFB),
  1115 + ),
  1116 + ),
  1117 + ),
  1118 + ),
  1119 + const SizedBox(height: 40),
  1120 + Row(
  1121 + children: [
  1122 + const SizedBox(width: 16),
  1123 + Text(
  1124 + context.l10n.enterYourNewPassword,
  1125 + style: TextStyle(
  1126 + color: const Color(0xFF141414),
  1127 + fontSize: 14,
  1128 + fontWeight: FontWeight.w500,
  1129 + ),
  1130 + ),
  1131 + ],
  1132 + ),
  1133 + const SizedBox(height: 15),
  1134 + AutofillGroup(
  1135 + child: Column(
  1136 + children: [
  1137 + Obx(() {
  1138 + final isObscured = c.isPasswordObscured.value;
  1139 + return TextField(
  1140 + textInputAction: TextInputAction.next,
  1141 + controller: c.passwordController,
  1142 + // keyboardType: TextInputType.visiblePassword,
  1143 + obscureText: isObscured,
  1144 + autofillHints: const [
  1145 + AutofillHints.newPassword
  1146 + ],
  1147 +
  1148 + obscuringCharacter: '*',
  1149 + contextMenuBuilder: (BuildContext context,
  1150 + EditableTextState editableTextState) {
  1151 + List<ContextMenuButtonItem> buttonItems =
  1152 + editableTextState
  1153 + .contextMenuButtonItems;
  1154 + buttonItems.removeWhere((item) =>
  1155 + item.type !=
  1156 + ContextMenuButtonType.paste);
  1157 + return AdaptiveTextSelectionToolbar
  1158 + .buttonItems(
  1159 + anchors:
  1160 + editableTextState.contextMenuAnchors,
  1161 + buttonItems: buttonItems,
  1162 + );
  1163 + },
  1164 + inputFormatters: [
  1165 + FilteringTextInputFormatter.deny(
  1166 + RegExp(r'\s')),
  1167 + FilteringTextInputFormatter.allow(
  1168 + RegExp(r'[\x21-\x7E]'),
  1169 + ),
  1170 + ],
  1171 + style: TextStyle(
  1172 + color: context.colors.textPrimary,
  1173 + fontSize: 16,
  1174 + fontWeight: FontWeight.w400,
  1175 + ),
  1176 + decoration: InputDecoration(
  1177 + hintText: context.l10n.enterPassword,
  1178 + hintStyle: TextStyle(
  1179 + color: context.colors.textTertiary,
  1180 + fontSize: 16,
  1181 + ),
  1182 + counterText: '',
  1183 + filled: true,
  1184 + fillColor: Colors.white,
  1185 + contentPadding: const EdgeInsets.symmetric(
  1186 + horizontal: 20,
  1187 + vertical: 16,
  1188 + ),
  1189 + border: OutlineInputBorder(
  1190 + borderRadius: BorderRadius.circular(27),
  1191 + borderSide: BorderSide.none,
  1192 + ),
  1193 + enabledBorder: OutlineInputBorder(
  1194 + borderRadius: BorderRadius.circular(27),
  1195 + borderSide: BorderSide.none,
  1196 + ),
  1197 + focusedBorder: OutlineInputBorder(
  1198 + borderRadius: BorderRadius.circular(27),
  1199 + borderSide: BorderSide(
  1200 + color: c.isPasswordValid
  1201 + ? context.colors.primary
  1202 + : c.hasPostUpdatePassword.value
  1203 + ? context.colors.warning
  1204 + : context.colors.textTertiary,
  1205 + width: 1,
  1206 + ),
  1207 + ),
  1208 + suffixIconConstraints: const BoxConstraints(
  1209 + minWidth: 24,
  1210 + minHeight: 24,
  1211 + ),
  1212 + suffixIcon: GestureDetector(
  1213 + onTap: c.togglePasswordVisibility,
  1214 + child: Padding(
  1215 + padding:
  1216 + const EdgeInsets.only(right: 16),
  1217 + child: Image.asset(
  1218 + isObscured
  1219 + ? 'assets/images/common/ic_hide_password.png'
  1220 + : 'assets/images/common/ic_show_password.webp',
  1221 + color: context.colors.textTertiary,
  1222 + width: 24,
  1223 + height: 24,
  1224 + ),
  1225 + ),
  1226 + ),
  1227 + ),
  1228 + );
  1229 + }),
  1230 + const SizedBox(height: 8),
  1231 + Padding(
  1232 + padding:
  1233 + const EdgeInsets.symmetric(horizontal: 16),
  1234 + child: Obx(() => Text(
  1235 + textAlign: TextAlign.center,
  1236 + context.l10n
  1237 + .passwordMustBeAtLeast6CharactersAndInclude1NumberAnd1UppercaseLetter,
  1238 + style: TextStyle(
  1239 + color: c.isPasswordValid
  1240 + ? context.colors.textTertiary
  1241 + : c.hasPostUpdatePassword.value
  1242 + ? context.colors.warning
  1243 + : context.colors.textTertiary,
  1244 + fontSize: 12,
  1245 + fontWeight: FontWeight.w400,
  1246 + ),
  1247 + )),
  1248 + ),
  1249 + const SizedBox(height: 32),
  1250 + Row(
  1251 + children: [
  1252 + const SizedBox(width: 16),
  1253 + Text(
  1254 + context.l10n.confirmYourNewPassword,
  1255 + style: TextStyle(
  1256 + color: const Color(0xFF141414),
  1257 + fontSize: 14,
  1258 + fontWeight: FontWeight.w500,
  1259 + ),
  1260 + ),
  1261 + ],
  1262 + ),
  1263 + const SizedBox(height: 15),
  1264 + Obx(() {
  1265 + final isObscured =
  1266 + c.isConfirmPasswordObscured.value;
  1267 +
  1268 + return TextField(
  1269 + controller: c.confirmPasswordController,
  1270 + // keyboardType: TextInputType.visiblePassword,
  1271 + obscureText: isObscured,
  1272 + autofillHints: const [
  1273 + AutofillHints.newPassword
  1274 + ],
  1275 + obscuringCharacter: '*',
  1276 + contextMenuBuilder: (BuildContext context,
  1277 + EditableTextState editableTextState) {
  1278 + List<ContextMenuButtonItem> buttonItems =
  1279 + editableTextState
  1280 + .contextMenuButtonItems;
  1281 + buttonItems.removeWhere((item) =>
  1282 + item.type !=
  1283 + ContextMenuButtonType.paste);
  1284 + return AdaptiveTextSelectionToolbar
  1285 + .buttonItems(
  1286 + anchors:
  1287 + editableTextState.contextMenuAnchors,
  1288 + buttonItems: buttonItems,
  1289 + );
  1290 + },
  1291 + onSubmitted: (_) {
  1292 + controller.changePassword(context);
  1293 + },
  1294 + inputFormatters: [
  1295 + FilteringTextInputFormatter.deny(
  1296 + RegExp(r'\s')),
  1297 + FilteringTextInputFormatter.allow(
  1298 + RegExp(r'[\x21-\x7E]'),
  1299 + ),
  1300 + ],
  1301 + style: TextStyle(
  1302 + color: context.colors.textPrimary,
  1303 + fontSize: 16,
  1304 + fontWeight: FontWeight.w400,
  1305 + ),
  1306 + decoration: InputDecoration(
  1307 + hintText: context.l10n.confirmNewPassword,
  1308 + hintStyle: TextStyle(
  1309 + color: context.colors.textTertiary,
  1310 + fontSize: 16,
  1311 + ),
  1312 + counterText: '',
  1313 + filled: true,
  1314 + fillColor: Colors.white,
  1315 + contentPadding: const EdgeInsets.symmetric(
  1316 + horizontal: 20,
  1317 + vertical: 16,
  1318 + ),
  1319 + border: OutlineInputBorder(
  1320 + borderRadius: BorderRadius.circular(27),
  1321 + borderSide: BorderSide.none,
  1322 + ),
  1323 + enabledBorder: OutlineInputBorder(
  1324 + borderRadius: BorderRadius.circular(27),
  1325 + borderSide: BorderSide.none,
  1326 + ),
  1327 + focusedBorder: OutlineInputBorder(
  1328 + borderRadius: BorderRadius.circular(27),
  1329 + borderSide: BorderSide(
  1330 + color: c.isConfirmPasswordValid2
  1331 + ? context.colors.primary
  1332 + : c.hasPostUpdatePassword.value
  1333 + ? context.colors.warning
  1334 + : context.colors.textTertiary,
  1335 + width: 1,
  1336 + ),
  1337 + ),
  1338 + suffixIconConstraints: const BoxConstraints(
  1339 + minWidth: 24,
  1340 + minHeight: 24,
  1341 + ),
  1342 + suffixIcon: GestureDetector(
  1343 + onTap: c.toggleConfirmPasswordVisibility,
  1344 + child: Padding(
  1345 + padding:
  1346 + const EdgeInsets.only(right: 16),
  1347 + child: Image.asset(
  1348 + isObscured
  1349 + ? 'assets/images/common/ic_hide_password.png'
  1350 + : 'assets/images/common/ic_show_password.webp',
  1351 + color: context.colors.textTertiary,
  1352 + width: 24,
  1353 + height: 24,
  1354 + ),
  1355 + ),
  1356 + ),
  1357 + ),
  1358 + );
  1359 + }),
  1360 + Offstage(
  1361 + offstage: true,
  1362 + child: TextField(
  1363 + focusNode: FocusNode(canRequestFocus: false),
  1364 + controller: c.emailController,
  1365 + autofillHints: const [
  1366 + AutofillHints.username,
  1367 + AutofillHints.email
  1368 + ],
  1369 + // readOnly: true,
  1370 + // enabled: false,
  1371 + ),
  1372 + ),
  1373 + ],
  1374 + ),
  1375 + ),
  1376 + const SizedBox(height: 8),
  1377 + Padding(
  1378 + padding: const EdgeInsets.symmetric(horizontal: 16),
  1379 + child: Obx(() => Text(
  1380 + textAlign: TextAlign.center,
  1381 + context.l10n
  1382 + .yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter,
  1383 + style: TextStyle(
  1384 + color: c.isConfirmPasswordValid2
  1385 + ? context.colors.textTertiary
  1386 + : c.hasPostUpdatePassword.value
  1387 + ? context.colors.warning
  1388 + : context.colors.textTertiary,
  1389 + fontSize: 12,
  1390 + fontWeight: FontWeight.w400,
  1391 + ),
  1392 + )),
  1393 + ),
  1394 + const SizedBox(height: 16),
  1395 + ],
  1396 + ),
  1397 + ),
  1398 + ),
  1399 + SizedBox(
  1400 + width: double.infinity,
  1401 + height: 48,
  1402 + child: Obx(
  1403 + () => ElevatedButton(
  1404 + onPressed: c.canChangePassword
  1405 + ? () => c.changePassword(context)
  1406 + : null,
  1407 + style: ElevatedButton.styleFrom(
  1408 + backgroundColor: colors.primary,
  1409 + disabledBackgroundColor:
  1410 + colors.primary.withValues(alpha: 0.4),
  1411 + foregroundColor: Colors.white,
  1412 + disabledForegroundColor: Colors.white,
  1413 + elevation: 0,
  1414 + shape: const StadiumBorder(),
  1415 + textStyle: const TextStyle(
  1416 + fontSize: 16,
  1417 + fontWeight: FontWeight.w600,
  1418 + ),
  1419 + ),
  1420 + child: Text(context.l10n.updatePassword),
  1421 + ),
  1422 + ),
  1423 + ),
  1424 + const SizedBox(height: 16),
  1425 + ],
  1426 + ),
  1427 + ),
  1428 + ),
  1429 + ),
  1430 + );
  1431 + }
  1432 +}
  1433 +
  1434 +class ForgotEmailVerificationView extends GetView<AddSecurityEmailController> {
  1435 + const ForgotEmailVerificationView({super.key});
  1436 +
  1437 + @override
  1438 + Widget build(BuildContext context) {
  1439 + final l10n = context.l10n;
  1440 + final colors = context.colors;
  1441 +
  1442 + return AnnotatedRegion<SystemUiOverlayStyle>(
  1443 + value: SystemUiOverlayStyle(
  1444 + statusBarColor: Colors.transparent,
  1445 + statusBarIconBrightness: Brightness.dark,
  1446 + statusBarBrightness: Brightness.light,
  1447 + systemNavigationBarColor: colors.backgroundPage,
  1448 + systemNavigationBarIconBrightness: Brightness.dark,
  1449 + ),
  1450 + child: Scaffold(
  1451 + backgroundColor: colors.backgroundPage,
  1452 + appBar: const _SecurityEmailAppBar(),
  1453 + body: SafeArea(
  1454 + top: false,
  1455 + child: Padding(
  1456 + padding: const EdgeInsets.symmetric(horizontal: 28),
  1457 + child: Column(
  1458 + children: [
  1459 + const SizedBox(height: 16),
  1460 + Text(
  1461 + context.l10n.checkYourEmail,
  1462 + style: TextStyle(
  1463 + color: colors.textPrimary,
  1464 + fontSize: 24,
  1465 + fontWeight: FontWeight.w600,
  1466 + height: 1.25,
  1467 + ),
  1468 + ),
  1469 + const SizedBox(height: 7),
  1470 + Obx(
  1471 + () {
  1472 + final email = controller.userPrefs.preferences.value
  1473 + .meUserInfo?.securityEmail ??
  1474 + '';
  1475 + return Text.rich(
  1476 + _verificationInstruction(
  1477 + context,
  1478 + context.l10n.weHaveSentACodeTo(email),
  1479 + email,
  1480 + ),
  1481 + textAlign: TextAlign.center,
  1482 + );
  1483 + },
  1484 + ),
  1485 + const SizedBox(height: 31),
  1486 + Column(
  1487 + children: [
  1488 + Row(
  1489 + children: [
  1490 + const SizedBox(width: 16),
  1491 + Text(
  1492 + l10n.codeFromEmail,
  1493 + style: TextStyle(
  1494 + color: const Color(0xFF141414),
  1495 + fontSize: 14,
  1496 + fontWeight: FontWeight.w500,
  1497 + ),
  1498 + ),
  1499 + ],
  1500 + ),
  1501 + SizedBox(
  1502 + height: 15,
  1503 + ),
  1504 + TextField(
  1505 + controller: controller.codeController,
  1506 + // keyboardType: TextInputType.number,
  1507 + textInputAction: TextInputAction.next,
  1508 + // inputFormatters: const [
  1509 + // _DigitsOnlyFormatter(),
  1510 + // ],
  1511 + style: TextStyle(
  1512 + color: colors.textPrimary,
  1513 + fontSize: 16,
  1514 + fontWeight: FontWeight.w400,
  1515 + ),
  1516 + decoration: InputDecoration(
  1517 + hintText: l10n.verificationCode,
  1518 + hintStyle: const TextStyle(
  1519 + color: Color(0xFFD9D9D9),
  1520 + fontSize: 16,
  1521 + ),
  1522 + counterText: '',
  1523 + filled: true,
  1524 + fillColor: Colors.white,
  1525 + contentPadding: const EdgeInsets.symmetric(
  1526 + horizontal: 20,
  1527 + vertical: 16,
  1528 + ),
  1529 + border: OutlineInputBorder(
  1530 + borderRadius: BorderRadius.circular(27),
  1531 + borderSide: BorderSide.none,
  1532 + ),
  1533 + enabledBorder: OutlineInputBorder(
  1534 + borderRadius: BorderRadius.circular(27),
  1535 + borderSide: BorderSide.none,
  1536 + ),
  1537 + focusedBorder: OutlineInputBorder(
  1538 + borderRadius: BorderRadius.circular(27),
  1539 + borderSide: BorderSide(
  1540 + color: context.colors.primary,
  1541 + width: 1,
  1542 + ),
  1543 + ),
  1544 + ),
  1545 + ),
  1546 + AutofillGroup(
  1547 + child: Column(
  1548 + children: [
  1549 + const SizedBox(height: 31),
  1550 + Row(
  1551 + children: [
  1552 + const SizedBox(width: 16),
  1553 + Text(
  1554 + context.l10n.newPassword,
  1555 + style: TextStyle(
  1556 + color: const Color(0xFF141414),
  1557 + fontSize: 14,
  1558 + fontWeight: FontWeight.w500,
  1559 + ),
  1560 + ),
  1561 + ],
  1562 + ),
  1563 + const SizedBox(height: 8),
  1564 + Obx(() {
  1565 + final isObscured =
  1566 + controller.isPasswordObscured.value;
  1567 + return TextField(
  1568 + textInputAction: TextInputAction.done,
  1569 + controller: controller.passwordController,
  1570 + // keyboardType: TextInputType.visiblePassword,
  1571 + obscureText: isObscured,
  1572 + autofillHints: const [AutofillHints.newPassword],
  1573 + obscuringCharacter: '*',
  1574 + contextMenuBuilder: (BuildContext context,
  1575 + EditableTextState editableTextState) {
  1576 + List<ContextMenuButtonItem> buttonItems =
  1577 + editableTextState.contextMenuButtonItems;
  1578 + buttonItems.removeWhere((item) =>
  1579 + item.type != ContextMenuButtonType.paste);
  1580 + return AdaptiveTextSelectionToolbar.buttonItems(
  1581 + anchors: editableTextState.contextMenuAnchors,
  1582 + buttonItems: buttonItems,
  1583 + );
  1584 + },
  1585 + inputFormatters: [
  1586 + FilteringTextInputFormatter.deny(RegExp(r'\s')),
  1587 + FilteringTextInputFormatter.allow(
  1588 + RegExp(r'[\x21-\x7E]'),
  1589 + ),
  1590 + ],
  1591 + style: TextStyle(
  1592 + color: context.colors.textPrimary,
  1593 + fontSize: 16,
  1594 + fontWeight: FontWeight.w400,
  1595 + ),
  1596 + decoration: InputDecoration(
  1597 + hintText: l10n.newPassword,
  1598 + hintStyle: TextStyle(
  1599 + color: context.colors.textTertiary,
  1600 + fontSize: 16,
  1601 + ),
  1602 + counterText: '',
  1603 + filled: true,
  1604 + fillColor: Colors.white,
  1605 + contentPadding: const EdgeInsets.symmetric(
  1606 + horizontal: 20,
  1607 + vertical: 16,
  1608 + ),
  1609 + border: OutlineInputBorder(
  1610 + borderRadius: BorderRadius.circular(27),
  1611 + borderSide: BorderSide.none,
  1612 + ),
  1613 + enabledBorder: OutlineInputBorder(
  1614 + borderRadius: BorderRadius.circular(27),
  1615 + borderSide: BorderSide.none,
  1616 + ),
  1617 + focusedBorder: OutlineInputBorder(
  1618 + borderRadius: BorderRadius.circular(27),
  1619 + borderSide: BorderSide(
  1620 + color: context.colors.primary,
  1621 + width: 1,
  1622 + ),
  1623 + ),
  1624 + suffixIconConstraints: const BoxConstraints(
  1625 + minWidth: 24,
  1626 + minHeight: 24,
  1627 + ),
  1628 + suffixIcon: GestureDetector(
  1629 + onTap: controller.togglePasswordVisibility,
  1630 + child: Padding(
  1631 + padding: const EdgeInsets.only(right: 16),
  1632 + child: Image.asset(
  1633 + isObscured
  1634 + ? 'assets/images/common/ic_hide_password.png'
  1635 + : 'assets/images/common/ic_show_password.webp',
  1636 + color: context.colors.textTertiary,
  1637 + width: 24,
  1638 + height: 24,
  1639 + ),
  1640 + ),
  1641 + ),
  1642 + ),
  1643 + onSubmitted: (_) {
  1644 + controller.forgotSubmitNewPassword(context);
  1645 + },
  1646 + );
  1647 + }),
  1648 + const SizedBox(height: 8),
  1649 + Padding(
  1650 + padding: const EdgeInsets.symmetric(horizontal: 16),
  1651 + child: Text(
  1652 + textAlign: TextAlign.center,
  1653 + context.l10n
  1654 + .passwordMustBeAtLeast6CharactersAndInclude1NumberAnd1UppercaseLetter,
  1655 + style: TextStyle(
  1656 + color: context.colors.textTertiary,
  1657 + fontSize: 12,
  1658 + fontWeight: FontWeight.w400,
  1659 + ),
  1660 + ),
  1661 + ),
  1662 + Offstage(
  1663 + offstage: true,
  1664 + child: TextField(
  1665 + focusNode: FocusNode(canRequestFocus: false),
  1666 + controller: controller.emailController,
  1667 + autofillHints: const [
  1668 + AutofillHints.username,
  1669 + AutofillHints.email
  1670 + ],
  1671 + // readOnly: true,
  1672 + // enabled: false,
  1673 + ),
  1674 + ),
  1675 + ],
  1676 + ),
  1677 + ),
  1678 + ],
  1679 + ),
  1680 + const SizedBox(height: 64),
  1681 + SizedBox(
  1682 + width: double.infinity,
  1683 + height: 48,
  1684 + child: Obx(
  1685 + () => ElevatedButton(
  1686 + onPressed: controller.canForgotSubmitNewPassword
  1687 + ? () => controller.forgotSubmitNewPassword(context)
  1688 + : null,
  1689 + style: ElevatedButton.styleFrom(
  1690 + backgroundColor: colors.primary,
  1691 + disabledBackgroundColor:
  1692 + colors.primary.withValues(alpha: 0.4),
  1693 + foregroundColor: Colors.white,
  1694 + disabledForegroundColor: Colors.white,
  1695 + elevation: 0,
  1696 + shape: const StadiumBorder(),
  1697 + textStyle: const TextStyle(
  1698 + fontSize: 16,
  1699 + fontWeight: FontWeight.w600,
  1700 + ),
  1701 + ),
  1702 + child: Text(l10n.resetPassword),
  1703 + ),
  1704 + ),
  1705 + ),
  1706 + const SizedBox(height: 20),
  1707 + Center(
  1708 + child: GestureDetector(
  1709 + onTap: () => showEmailLoginContactUsBottomSheet(
  1710 + userId: (controller
  1711 + .userPrefs.preferences.value.meUserInfo?.id ??
  1712 + 0)
  1713 + .toString(),
  1714 + pageName: 'Forget Password page',
  1715 + ),
  1716 + child: Text(
  1717 + l10n.havingTroubleContactUs,
  1718 + style: TextStyle(
  1719 + color: const Color(0xFF39CAF4),
  1720 + fontSize: 14,
  1721 + fontWeight: FontWeight.w500,
  1722 + decoration: TextDecoration.underline,
  1723 + decorationColor: const Color(0xFF39CAF4),
  1724 + ),
  1725 + ),
  1726 + ),
  1727 + ),
  1728 + ],
  1729 + ),
  1730 + ),
  1731 + ),
  1732 + ),
  1733 + );
  1734 + }
  1735 +}
@@ -387,23 +387,16 @@ class LoginController extends GetxController { @@ -387,23 +387,16 @@ class LoginController extends GetxController {
387 return; 387 return;
388 } 388 }
389 389
390 - // TODO: 邮箱登录接口待接入,API 路径由后端确认后在此调用  
391 - // isLoggingIn.value = true;  
392 - // try {  
393 - // await LoadingService.instance.run(() async {  
394 - // final loginRes = await _userApi.loginWithEmail(  
395 - // email: emailInput.value.trim(),  
396 - // password: passwordInput.value,  
397 - // );  
398 - // if (loginRes is AppSuccess<LoginResponse>) {  
399 - // await _handleLoginSuccess(loginRes.data);  
400 - // await Get.find<LocalStorage>().setLastLoginMethod('email');  
401 - // }  
402 - // });  
403 - // } finally {  
404 - // isLoggingIn.value = false;  
405 - // }  
406 - Get.to(() => EmailLoginNewPasswordView()); 390 + try {
  391 + await LoadingService.instance.run(() async {
  392 + final loginRes = await _userApi.forgetPasswordSendEmail(
  393 + email: emailInput.value.trim(),
  394 + );
  395 + if (loginRes is AppSuccess<LoginResponse>) {
  396 + Get.to(() => EmailLoginNewPasswordView());
  397 + } else {}
  398 + });
  399 + } catch (e) {}
407 } 400 }
408 401
409 Future<void> resetPassword() async { 402 Future<void> resetPassword() async {
@@ -417,26 +410,22 @@ class LoginController extends GetxController { @@ -417,26 +410,22 @@ class LoginController extends GetxController {
417 return; 410 return;
418 } 411 }
419 412
420 - // TODO: 邮箱登录接口待接入,API 路径由后端确认后在此调用  
421 - // isLoggingIn.value = true;  
422 - // try {  
423 - // await LoadingService.instance.run(() async {  
424 - // final loginRes = await _userApi.loginWithEmail(  
425 - // email: emailInput.value.trim(),  
426 - // password: passwordInput.value,  
427 - // );  
428 - // if (loginRes is AppSuccess<LoginResponse>) {  
429 - // await _handleLoginSuccess(loginRes.data);  
430 - // await Get.find<LocalStorage>().setLastLoginMethod('email');  
431 - // }  
432 - // });  
433 - // } finally {  
434 - // isLoggingIn.value = false;  
435 - // }  
436 -  
437 - AppToast.show(l10n.paswordHasBeenChanged);  
438 - Get.back();  
439 - Get.back(); 413 + try {
  414 + final md5Password =
  415 + md5.convert(utf8.encode(passwordInput.value)).toString();
  416 + await LoadingService.instance.run(() async {
  417 + final loginRes = await _userApi.forgetPasswordSetNewPassword(
  418 + email: emailInput.value.trim(),
  419 + verificationCode: resetPasswordCode.value,
  420 + newPassword: md5Password,
  421 + );
  422 + if (loginRes is AppSuccess<LoginResponse>) {
  423 + AppToast.show(l10n.paswordHasBeenChanged);
  424 + Get.back();
  425 + Get.back();
  426 + } else {}
  427 + });
  428 + } catch (e) {}
440 } 429 }
441 430
442 Future<void> _loginWithApple(AppleSignInModel appleModel) async { 431 Future<void> _loginWithApple(AppleSignInModel appleModel) async {
@@ -235,5 +235,14 @@ abstract final class AppPages { @@ -235,5 +235,14 @@ abstract final class AppPages {
235 ); 235 );
236 }), 236 }),
237 ), 237 ),
  238 + GetPage(
  239 + name: Routes.RESET_PASSWORD,
  240 + page: () => const ReSetSecurityEmailPasswordView(),
  241 + binding: BindingsBuilder(() {
  242 + Get.lazyPut<AddSecurityEmailController>(
  243 + () => AddSecurityEmailController(),
  244 + );
  245 + }),
  246 + ),
238 ]; 247 ];
239 } 248 }
@@ -28,6 +28,7 @@ abstract class Routes { @@ -28,6 +28,7 @@ abstract class Routes {
28 static const APPLE_HEALTH_UPLOAD_TEST = _Paths.APPLE_HEALTH_UPLOAD_TEST; 28 static const APPLE_HEALTH_UPLOAD_TEST = _Paths.APPLE_HEALTH_UPLOAD_TEST;
29 static const ADD_SECURITY_EMAIL = _Paths.ADD_SECURITY_EMAIL; 29 static const ADD_SECURITY_EMAIL = _Paths.ADD_SECURITY_EMAIL;
30 static const CHANGE_SECURITY_EMAIL = _Paths.CHANGE_SECURITY_EMAIL; 30 static const CHANGE_SECURITY_EMAIL = _Paths.CHANGE_SECURITY_EMAIL;
  31 + static const RESET_PASSWORD = _Paths.RESET_PASSWORD;
31 } 32 }
32 33
33 abstract class _Paths { 34 abstract class _Paths {
@@ -57,4 +58,5 @@ abstract class _Paths { @@ -57,4 +58,5 @@ abstract class _Paths {
57 static const APPLE_HEALTH_UPLOAD_TEST = '/apple-health-upload-test'; 58 static const APPLE_HEALTH_UPLOAD_TEST = '/apple-health-upload-test';
58 static const ADD_SECURITY_EMAIL = '/add-security-email'; 59 static const ADD_SECURITY_EMAIL = '/add-security-email';
59 static const CHANGE_SECURITY_EMAIL = '/change-security-email'; 60 static const CHANGE_SECURITY_EMAIL = '/change-security-email';
  61 + static const RESET_PASSWORD = '/reset-password';
60 } 62 }
@@ -65,6 +65,44 @@ class UserApi { @@ -65,6 +65,44 @@ class UserApi {
65 ); 65 );
66 } 66 }
67 67
  68 + Future<AppResult<LoginResponse>> forgetPasswordSendEmail({
  69 + required String email,
  70 + }) {
  71 + return safeCall(
  72 + call: () async {
  73 + final response = await _dioClient.dio.post(
  74 + ApiPaths.forgetPasswordSendEmail,
  75 + data: {
  76 + 'email': email,
  77 + },
  78 + options: _dioClient.noTokenOptions(),
  79 + );
  80 + return LoginResponse.fromJson(response.data as Map<String, dynamic>);
  81 + },
  82 + );
  83 + }
  84 +
  85 + Future<AppResult<LoginResponse>> forgetPasswordSetNewPassword({
  86 + required String email,
  87 + required String verificationCode,
  88 + required String newPassword,
  89 + }) {
  90 + return safeCall(
  91 + call: () async {
  92 + final response = await _dioClient.dio.post(
  93 + ApiPaths.forgetPasswordSetNewPassword,
  94 + data: {
  95 + 'code': verificationCode,
  96 + 'email': email,
  97 + 'password': newPassword,
  98 + },
  99 + options: _dioClient.noTokenOptions(),
  100 + );
  101 + return LoginResponse.fromJson(response.data as Map<String, dynamic>);
  102 + },
  103 + );
  104 + }
  105 +
68 Future<AppResult<LoginResponse>> loginWithApple(AppleSignInModel appleModel) { 106 Future<AppResult<LoginResponse>> loginWithApple(AppleSignInModel appleModel) {
69 return safeCall( 107 return safeCall(
70 call: () async { 108 call: () async {
@@ -365,4 +403,18 @@ class UserApi { @@ -365,4 +403,18 @@ class UserApi {
365 }, 403 },
366 ); 404 );
367 } 405 }
  406 +
  407 + Future<AppResult<void>> changePassword(String curPwd, String newPwd) {
  408 + return safeCall(
  409 + call: () async {
  410 + await _dioClient.dio.post(
  411 + ApiPaths.changePassword,
  412 + data: {
  413 + 'current_password': curPwd,
  414 + 'new_password': newPwd,
  415 + },
  416 + );
  417 + },
  418 + );
  419 + }
368 } 420 }
@@ -11,6 +11,12 @@ abstract final class ApiPaths { @@ -11,6 +11,12 @@ abstract final class ApiPaths {
11 static const addSafetyEmail = '/client/doublefeel/user/email/submit/'; 11 static const addSafetyEmail = '/client/doublefeel/user/email/submit/';
12 static const changeEmailVerifyPassword = 12 static const changeEmailVerifyPassword =
13 '/client/doublefeel/user/email/change/verify_password/'; 13 '/client/doublefeel/user/email/change/verify_password/';
  14 + static const forgetPasswordSendEmail =
  15 + '/client/doublefeel/user/forget_password/send_email/';
  16 + static const forgetPasswordSetNewPassword =
  17 + '/client/doublefeel/user/forget_password/change_password/';
  18 + static const changePassword =
  19 + '/client/doublefeel/user/email/change_password/';
14 static const userPair = '/client/doublefeel/user/pair/'; 20 static const userPair = '/client/doublefeel/user/pair/';
15 static const userLogout = '/client/doublefeel/user/logout/'; 21 static const userLogout = '/client/doublefeel/user/logout/';
16 static const userDeleteAccount = '/client/doublefeel/user/account/delete/'; 22 static const userDeleteAccount = '/client/doublefeel/user/account/delete/';
@@ -103,6 +103,8 @@ class UserStateService { @@ -103,6 +103,8 @@ class UserStateService {
103 } 103 }
104 } 104 }
105 105
  106 + bool get isLoggedIn => _userPrefs.isLoggedIn;
  107 +
106 bool get isBound => 108 bool get isBound =>
107 (_userPrefs.preferences.value.partnerUserInfo?.id ?? 0) > 0; 109 (_userPrefs.preferences.value.partnerUserInfo?.id ?? 0) > 0;
108 110
@@ -29,6 +29,8 @@ class UserPreferencesStorage { @@ -29,6 +29,8 @@ class UserPreferencesStorage {
29 29
30 String get accessToken => preferences.value.accessToken; 30 String get accessToken => preferences.value.accessToken;
31 31
  32 + bool get isLoggedIn => accessToken.isNotEmpty;
  33 +
32 String get rongcloudToken => preferences.value.rongcloudToken; 34 String get rongcloudToken => preferences.value.rongcloudToken;
33 35
34 Future<void> _load() async { 36 Future<void> _load() async {
@@ -287,7 +287,7 @@ @@ -287,7 +287,7 @@
287 "invalidEmailFormat": "Invalid email format", 287 "invalidEmailFormat": "Invalid email format",
288 "deleteAccount": "Delete Account", 288 "deleteAccount": "Delete Account",
289 "mobilePhoneNumber": "Mobile phone number", 289 "mobilePhoneNumber": "Mobile phone number",
290 - "logOut": "Log Out", 290 + "logOut": "Sign Out",
291 "confirmLogoutPrompt": "Are you sure you want to log out?", 291 "confirmLogoutPrompt": "Are you sure you want to log out?",
292 "confirmLogout": "Yes, I’m sure", 292 "confirmLogout": "Yes, I’m sure",
293 "loggedOutSuccessfully": "Logged out successfully", 293 "loggedOutSuccessfully": "Logged out successfully",
@@ -507,9 +507,15 @@ @@ -507,9 +507,15 @@
507 "activityTrendTooltipDate": "{month} {day} · {weekday}", 507 "activityTrendTooltipDate": "{month} {day} · {weekday}",
508 "@activityTrendTooltipDate": { 508 "@activityTrendTooltipDate": {
509 "placeholders": { 509 "placeholders": {
510 - "month": {"type": "String"},  
511 - "day": {"type": "int"},  
512 - "weekday": {"type": "String"} 510 + "month": {
  511 + "type": "String"
  512 + },
  513 + "day": {
  514 + "type": "int"
  515 + },
  516 + "weekday": {
  517 + "type": "String"
  518 + }
513 } 519 }
514 }, 520 },
515 "activityComparedLastWeek": "34% less than last week", 521 "activityComparedLastWeek": "34% less than last week",
@@ -1041,5 +1047,22 @@ @@ -1041,5 +1047,22 @@
1041 "yourCurrentEmailIs": "Your current email is", 1047 "yourCurrentEmailIs": "Your current email is",
1042 "whatWouldYouLikeToUpdateItTo": ". What would you like to update it to?", 1048 "whatWouldYouLikeToUpdateItTo": ". What would you like to update it to?",
1043 "successChanged": "Success changed", 1049 "successChanged": "Success changed",
1044 - "verifyEmailFailed": "Verify email failed"  
1045 -} 1050 + "verifyEmailFailed": "Verify email failed",
  1051 + "aResetEmailHasBeenSent": "A reset email has been sent",
  1052 + "enterPassword": "Enter password",
  1053 + "changePassword": "Change Password",
  1054 + "currentPassword": "Current password",
  1055 + "enterYourCurrentPasswordHere": "Enter your current password here",
  1056 + "enterYourNewPassword": "Enter your new password",
  1057 + "confirmYourNewPassword": "Confirm your new password",
  1058 + "yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter": "Your password needs to have a minimum of 6 characters and contain at least 1 number and 1 uppercase character",
  1059 + "weHaveSentACodeTo": "We’ve sent a code to {email}.\nDidn’t get it? Check your spam folder or try again.",
  1060 + "@weHaveSentACodeTo": {
  1061 + "placeholders": {
  1062 + "email": {
  1063 + "type": "String"
  1064 + }
  1065 + }
  1066 + },
  1067 + "updatePassword": "Update password"
  1068 +}
@@ -735,9 +735,15 @@ @@ -735,9 +735,15 @@
735 "activityTrendTooltipDate": "{month}{day}日 · 星期{weekday}", 735 "activityTrendTooltipDate": "{month}{day}日 · 星期{weekday}",
736 "@activityTrendTooltipDate": { 736 "@activityTrendTooltipDate": {
737 "placeholders": { 737 "placeholders": {
738 - "month": {"type": "String"},  
739 - "day": {"type": "int"},  
740 - "weekday": {"type": "String"} 738 + "month": {
  739 + "type": "String"
  740 + },
  741 + "day": {
  742 + "type": "int"
  743 + },
  744 + "weekday": {
  745 + "type": "String"
  746 + }
741 } 747 }
742 }, 748 },
743 "activityComparedLastWeek": "比上周少34%", 749 "activityComparedLastWeek": "比上周少34%",
@@ -1441,5 +1447,22 @@ @@ -1441,5 +1447,22 @@
1441 "yourCurrentEmailIs": "您当前的电子邮箱是", 1447 "yourCurrentEmailIs": "您当前的电子邮箱是",
1442 "whatWouldYouLikeToUpdateItTo": ". 您想将其更新为什么内容?", 1448 "whatWouldYouLikeToUpdateItTo": ". 您想将其更新为什么内容?",
1443 "successChanged": "成功发生了变化", 1449 "successChanged": "成功发生了变化",
1444 - "verifyEmailFailed": "邮箱验证失败"  
1445 -} 1450 + "verifyEmailFailed": "邮箱验证失败",
  1451 + "aResetEmailHasBeenSent": "重置邮件已发送",
  1452 + "enterPassword": "输入密码",
  1453 + "changePassword": "更改密码",
  1454 + "currentPassword": "当前密码",
  1455 + "enterYourCurrentPasswordHere": "请在此处输入您当前的密码",
  1456 + "enterYourNewPassword": "请输入新密码",
  1457 + "confirmYourNewPassword": "请确认您的新密码",
  1458 + "yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter": "您的密码必须至少包含 6 个字符,并包含至少 1 个数字和 1 个大写字母",
  1459 + "weHaveSentACodeTo": "我们已向 {email} 发送了验证码。\n没收到?请检查垃圾邮件文件夹或重试。",
  1460 + "@weHaveSentACodeTo": {
  1461 + "placeholders": {
  1462 + "email": {
  1463 + "type": "String"
  1464 + }
  1465 + }
  1466 + },
  1467 + "updatePassword": "更新密码"
  1468 +}
@@ -5089,6 +5089,67 @@ abstract class AppLocalizations { @@ -5089,6 +5089,67 @@ abstract class AppLocalizations {
5089 /// In zh, this message translates to: 5089 /// In zh, this message translates to:
5090 /// **'邮箱验证失败'** 5090 /// **'邮箱验证失败'**
5091 String get verifyEmailFailed; 5091 String get verifyEmailFailed;
  5092 +
  5093 + /// No description provided for @aResetEmailHasBeenSent.
  5094 + ///
  5095 + /// In zh, this message translates to:
  5096 + /// **'重置邮件已发送'**
  5097 + String get aResetEmailHasBeenSent;
  5098 +
  5099 + /// No description provided for @enterPassword.
  5100 + ///
  5101 + /// In zh, this message translates to:
  5102 + /// **'输入密码'**
  5103 + String get enterPassword;
  5104 +
  5105 + /// No description provided for @changePassword.
  5106 + ///
  5107 + /// In zh, this message translates to:
  5108 + /// **'更改密码'**
  5109 + String get changePassword;
  5110 +
  5111 + /// No description provided for @currentPassword.
  5112 + ///
  5113 + /// In zh, this message translates to:
  5114 + /// **'当前密码'**
  5115 + String get currentPassword;
  5116 +
  5117 + /// No description provided for @enterYourCurrentPasswordHere.
  5118 + ///
  5119 + /// In zh, this message translates to:
  5120 + /// **'请在此处输入您当前的密码'**
  5121 + String get enterYourCurrentPasswordHere;
  5122 +
  5123 + /// No description provided for @enterYourNewPassword.
  5124 + ///
  5125 + /// In zh, this message translates to:
  5126 + /// **'请输入新密码'**
  5127 + String get enterYourNewPassword;
  5128 +
  5129 + /// No description provided for @confirmYourNewPassword.
  5130 + ///
  5131 + /// In zh, this message translates to:
  5132 + /// **'请确认您的新密码'**
  5133 + String get confirmYourNewPassword;
  5134 +
  5135 + /// No description provided for @yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter.
  5136 + ///
  5137 + /// In zh, this message translates to:
  5138 + /// **'您的密码必须至少包含 6 个字符,并包含至少 1 个数字和 1 个大写字母'**
  5139 + String
  5140 + get yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter;
  5141 +
  5142 + /// No description provided for @weHaveSentACodeTo.
  5143 + ///
  5144 + /// In zh, this message translates to:
  5145 + /// **'我们已向 {email} 发送了验证码。\n没收到?请检查垃圾邮件文件夹或重试。'**
  5146 + String weHaveSentACodeTo(String email);
  5147 +
  5148 + /// No description provided for @updatePassword.
  5149 + ///
  5150 + /// In zh, this message translates to:
  5151 + /// **'更新密码'**
  5152 + String get updatePassword;
5092 } 5153 }
5093 5154
5094 class _AppLocalizationsDelegate 5155 class _AppLocalizationsDelegate
@@ -953,7 +953,7 @@ class AppLocalizationsEn extends AppLocalizations { @@ -953,7 +953,7 @@ class AppLocalizationsEn extends AppLocalizations {
953 String get mobilePhoneNumber => 'Mobile phone number'; 953 String get mobilePhoneNumber => 'Mobile phone number';
954 954
955 @override 955 @override
956 - String get logOut => 'Log Out'; 956 + String get logOut => 'Sign Out';
957 957
958 @override 958 @override
959 String get confirmLogoutPrompt => 'Are you sure you want to log out?'; 959 String get confirmLogoutPrompt => 'Are you sure you want to log out?';
@@ -2847,4 +2847,37 @@ class AppLocalizationsEn extends AppLocalizations { @@ -2847,4 +2847,37 @@ class AppLocalizationsEn extends AppLocalizations {
2847 2847
2848 @override 2848 @override
2849 String get verifyEmailFailed => 'Verify email failed'; 2849 String get verifyEmailFailed => 'Verify email failed';
  2850 +
  2851 + @override
  2852 + String get aResetEmailHasBeenSent => 'A reset email has been sent';
  2853 +
  2854 + @override
  2855 + String get enterPassword => 'Enter password';
  2856 +
  2857 + @override
  2858 + String get changePassword => 'Change Password';
  2859 +
  2860 + @override
  2861 + String get currentPassword => 'Current password';
  2862 +
  2863 + @override
  2864 + String get enterYourCurrentPasswordHere => 'Enter your current password here';
  2865 +
  2866 + @override
  2867 + String get enterYourNewPassword => 'Enter your new password';
  2868 +
  2869 + @override
  2870 + String get confirmYourNewPassword => 'Confirm your new password';
  2871 +
  2872 + @override
  2873 + String get yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter =>
  2874 + 'Your password needs to have a minimum of 6 characters and contain at least 1 number and 1 uppercase character';
  2875 +
  2876 + @override
  2877 + String weHaveSentACodeTo(String email) {
  2878 + return 'We’ve sent a code to $email.\nDidn’t get it? Check your spam folder or try again.';
  2879 + }
  2880 +
  2881 + @override
  2882 + String get updatePassword => 'Update password';
2850 } 2883 }
@@ -2748,4 +2748,38 @@ class AppLocalizationsZh extends AppLocalizations { @@ -2748,4 +2748,38 @@ class AppLocalizationsZh extends AppLocalizations {
2748 2748
2749 @override 2749 @override
2750 String get verifyEmailFailed => '邮箱验证失败'; 2750 String get verifyEmailFailed => '邮箱验证失败';
  2751 +
  2752 + @override
  2753 + String get aResetEmailHasBeenSent => '重置邮件已发送';
  2754 +
  2755 + @override
  2756 + String get enterPassword => '输入密码';
  2757 +
  2758 + @override
  2759 + String get changePassword => '更改密码';
  2760 +
  2761 + @override
  2762 + String get currentPassword => '当前密码';
  2763 +
  2764 + @override
  2765 + String get enterYourCurrentPasswordHere => '请在此处输入您当前的密码';
  2766 +
  2767 + @override
  2768 + String get enterYourNewPassword => '请输入新密码';
  2769 +
  2770 + @override
  2771 + String get confirmYourNewPassword => '请确认您的新密码';
  2772 +
  2773 + @override
  2774 + String
  2775 + get yourPasswordNeedsToHaveAMinimumOf6CharactersAndContainAtLeast1NumberAnd1UppercaseCharacter =>
  2776 + '您的密码必须至少包含 6 个字符,并包含至少 1 个数字和 1 个大写字母';
  2777 +
  2778 + @override
  2779 + String weHaveSentACodeTo(String email) {
  2780 + return '我们已向 $email 发送了验证码。\n没收到?请检查垃圾邮件文件夹或重试。';
  2781 + }
  2782 +
  2783 + @override
  2784 + String get updatePassword => '更新密码';
2751 } 2785 }
@@ -94,6 +94,7 @@ flutter: @@ -94,6 +94,7 @@ flutter:
94 generate: true 94 generate: true
95 assets: 95 assets:
96 - assets/lottie/ 96 - assets/lottie/
  97 + - assets/lottie/zh/
97 - assets/images/ 98 - assets/images/
98 - assets/images/common/ 99 - assets/images/common/
99 - assets/images/tabbar/ 100 - assets/images/tabbar/