feat: integrate enakgame and voucher
Build & Deploy iOS to TestFlight / build-and-deploy (push) Waiting to run

This commit is contained in:
efrilm
2026-10-10 02:33:16 +07:00
parent e5515d5871
commit 38850b281f
104 changed files with 7122 additions and 8063 deletions
@@ -16,7 +16,12 @@ import 'widgets/phone_field.dart';
@RoutePage()
class LoginPage extends StatelessWidget implements AutoRouteWrapper {
const LoginPage({super.key});
const LoginPage({super.key, this.returnAfterLogin = false});
/// Login ulang dari tengah alur (mis. token kedaluwarsa saat main
/// EnakGame): setelah berhasil, halaman login di-pop dengan hasil `true`
/// alih-alih membuka beranda.
final bool returnAfterLogin;
@override
Widget build(BuildContext context) {
@@ -40,6 +45,7 @@ class LoginPage extends StatelessWidget implements AutoRouteWrapper {
context.router.push(
PasswordRoute(
phoneNumber: getNormalizePhone(state.phoneNumber),
returnAfterLogin: returnAfterLogin,
),
);
}
@@ -13,7 +13,14 @@ import '../../../router/app_router.gr.dart';
@RoutePage()
class PasswordPage extends StatelessWidget implements AutoRouteWrapper {
final String phoneNumber;
const PasswordPage({super.key, required this.phoneNumber});
/// Lihat [LoginPage.returnAfterLogin].
final bool returnAfterLogin;
const PasswordPage({
super.key,
required this.phoneNumber,
this.returnAfterLogin = false,
});
@override
Widget build(BuildContext context) {
@@ -28,6 +35,12 @@ class PasswordPage extends StatelessWidget implements AutoRouteWrapper {
AppFlushbar.showSuccess(context, data.message);
Future.delayed(Duration(milliseconds: 1000), () {
context.read<AuthBloc>().add(AuthEvent.fetchCurrentUser());
if (returnAfterLogin) {
final router = context.router;
router.popUntilRouteWithName(LoginRoute.name);
router.pop(true);
return;
}
context.router.replaceAll([MainRoute()]);
});
},