api integration

This commit is contained in:
jayesh
2024-07-17 19:12:26 +05:30
parent 1e47dd914a
commit fab01aa29a
54 changed files with 1022 additions and 356 deletions

View File

@@ -1,8 +1,8 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:tanami_app/Api_Helper/base_manager.dart';
import 'package:tanami_app/Globalconst.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import '../../../../core/utils/secure/secure_storage_service.dart';
import '../../Repository/PinAPIServices.dart';
@@ -23,43 +23,33 @@ class PinBloc extends Bloc<PinEvent, PinState> {
final newPin = state.pin + event.number;
if (newPin.length <= 6) {
if (newPin.length == 6) {
if (event.fromscreen == "login") {
Map<String, dynamic> verifypindata = {
"token": Globalconst.token,
"masterPin": newPin
};
ResponseData response =
await PinAPIServices().Verifypin(verifypindata);
if (response.status == ResponseStatus.SUCCESS) {
var data = response.data["user"];
String accesstoken = data["accessToken"];
String refreshtoken = data["refreshToken"];
await secureStorageService.write('accesstoken', accesstoken);
await secureStorageService.write('refreshtoken', refreshtoken);
emit(state.copyWith(
isVerified: false,
error: AppText.incorrectPinCode,
verifiedOnce: true,
));
} else {
emit(state.copyWith(
pin: newPin,
pinComplete: newPin.length == 6,
error: 'has error',
isVerified: false,
verifiedOnce: false));
}
} else {
emit(state.copyWith(
if ((event.fromscreen == "login" ||
event.fromscreen == "LoginedInUser") &&
newPin.length < 6) {
emit(state.copyWith(
pin: newPin,
pinComplete: newPin.length == 6,
error: '',
verifiedOnce: false));
verifiedOnce: false,
));
} else {
if ((event.fromscreen != "login" &&
event.fromscreen != "LoginedInUser")) {
emit(state.copyWith(
pin: newPin,
pinComplete: newPin.length == 6,
error: '',
verifiedOnce: false,
));
}
}
if (newPin.length == 6) {
if (event.fromscreen == "confirmpin") {
add(VerifyPinPressed(newPin, event.fromscreen));
} else if (event.fromscreen == "login" ||
event.fromscreen == "LoginedInUser") {
add(VerifyLoginPinPressed(newPin, event.fromscreen));
}
}
}
@@ -83,7 +73,7 @@ class PinBloc extends Bloc<PinEvent, PinState> {
on<VerifyPinPressed>((event, emit) async {
final storedPin = await secureStorageService.read('pin_code');
Map<String, dynamic> pindata = {
"token": Globalconst.token,
"token": await secureStorageService.read("temp_token"),
"masterPin": event.pin
};
if (storedPin == event.pin) {
@@ -101,5 +91,30 @@ class PinBloc extends Bloc<PinEvent, PinState> {
));
}
});
on<VerifyLoginPinPressed>((event, emit) async {
Map<String, dynamic> pindata = {
"token": await secureStorageService.read("temp_token"),
"masterPin": event.pin
};
ResponseData response = await PinAPIServices().Verifypin(pindata);
if (response.status == ResponseStatus.SUCCESS) {
emit(state.copyWith(
pinComplete: true,
pin: state.pin,
isVerified: true,
error: '',
verifiedOnce: false));
} else {
emit(state.copyWith(
pinComplete: true,
pin: state.pin,
isVerified: false,
error: "Incorrect Pin Code",
verifiedOnce: true,
));
}
});
}
}

View File

@@ -11,10 +11,10 @@ class NumberPressed extends PinEvent {
final String number;
final String fromscreen;
const NumberPressed(this.number,this.fromscreen);
const NumberPressed(this.number, this.fromscreen);
@override
List<Object> get props => [number];
List<Object> get props => [number, fromscreen];
}
class BackspacePressed extends PinEvent {}
@@ -24,8 +24,17 @@ class SavePinPressed extends PinEvent {}
class VerifyPinPressed extends PinEvent {
final String pin;
final String fromscreen;
const VerifyPinPressed(this.pin,this.fromscreen);
const VerifyPinPressed(this.pin, this.fromscreen);
@override
List<Object> get props => [pin,fromscreen];
List<Object> get props => [pin, fromscreen];
}
class VerifyLoginPinPressed extends PinEvent {
final String pin;
final String fromscreen;
const VerifyLoginPinPressed(this.pin, this.fromscreen);
@override
List<Object> get props => [pin, fromscreen];
}

View File

@@ -20,7 +20,9 @@ class PinLayout extends StatelessWidget {
),
child: Column(
children: [
PinTopSection(fromScreen: fromScreen),
PinTopSection(
fromScreen: fromScreen,
),
PinKey(
fromScreen: fromScreen,
),

View File

@@ -20,7 +20,9 @@ class PinScreen extends StatelessWidget {
final secureStorageService = SecureStorageService();
return WillPopScope(
onWillPop: () async {
if (fromScreen == "LoginedInUser") {
if (fromScreen == "login" ||
fromScreen == "LoginedInUser" ||
fromScreen == "login-master-pending") {
exitAppDialog(context);
return false;
} else {
@@ -29,7 +31,9 @@ class PinScreen extends StatelessWidget {
},
child: Scaffold(
backgroundColor: AppColor.plainWhite,
appBar: fromScreen == "register" || fromScreen == "reset-pin"
appBar: fromScreen == "register" ||
fromScreen == "reset-pin" ||
fromScreen == "login-master-pending"
? AppBarWidget(
height: 75,
titleTxt: fromScreen == "reset-pin"

View File

@@ -4,6 +4,7 @@ import 'package:gap/gap.dart';
import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/utils/secure/secure_storage_service.dart';
import 'package:tanami_app/shared/components/text_widget.dart';
import '../bloc/pin_bloc.dart';
@@ -13,13 +14,14 @@ class ConfirmPinKey extends StatelessWidget {
@override
Widget build(BuildContext context) {
final SecureStorageService secureStorageService = SecureStorageService();
return Column(
children: [
const Gap(20),
BlocConsumer<PinBloc, PinState>(
listener: (context, state) {
listener: (context, state) async {
if (state.pinComplete && state.isVerified) {
// successToastMessage(context, "Pin verified successfully");
await secureStorageService.write('isLoginedIn', "true");
goRouter.goNamed(RouteName.mainScreen);
}
},
@@ -91,7 +93,9 @@ class ConfirmPinKey extends StatelessWidget {
final number = index == 10 ? '0' : '${index + 1}';
return GestureDetector(
onTap: () {
context.read<PinBloc>().add(NumberPressed(number,"confirmpin"));
context
.read<PinBloc>()
.add(NumberPressed(number, "confirmpin"));
},
child: Container(
margin: const EdgeInsets.all(12),

View File

@@ -1,17 +1,17 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/features/countrySelection/bloc/choose_country_bloc.dart';
import 'package:tanami_app/features/securePin/presentation/widgets/forgot_pin_dialog.dart';
import 'package:tanami_app/shared/components/text_widget.dart';
import 'package:tanami_app/shared/components/toast_message.dart';
import '../../../../core/routes/route_name.dart';
import '../../../../core/routes/routes.dart';
import '../../../../core/utils/language/localizations_delegate.dart';
import '../../../../shared/components/toast_message.dart';
import '../../../login/presentation/bloc/login_bloc.dart';
import '../bloc/pin_bloc.dart';
class PinKey extends StatelessWidget {
@@ -23,8 +23,9 @@ class PinKey extends StatelessWidget {
@override
Widget build(BuildContext context) {
print(fromScreen);
var localizations = AppLocalizations.of(context);
final loginBloc = context.read<LoginBloc>();
final radioBloc = context.read<RadioBloc>();
return Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
@@ -35,14 +36,12 @@ class PinKey extends StatelessWidget {
state.error.isEmpty &&
!state.verifiedOnce) {
if (fromScreen == "login" || fromScreen == "LoginedInUser") {
print("login true");
loginBloc.resetFields();
radioBloc.resetSelection();
successToastMessage(context,
localizations.translate(AppText.pinVerifiedSucess));
goRouter.pushNamed(RouteName.mainScreen);
} else if (fromScreen == "reset-pin") {
print("reset true");
log("Running this");
successToastMessage(
context, localizations.translate(AppText.pinUpdatedSucess));
goRouter.pop();

View File

@@ -5,6 +5,7 @@ import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/shared/components/text_widget.dart';
import '../../../../Globalconst.dart';
import '../../../../core/styles/app_images.dart';
import '../../../../core/utils/language/localizations_delegate.dart';
@@ -38,8 +39,9 @@ class PinTopSection extends StatelessWidget {
TextWidget().text14W500(
localizations.translate(AppText.welcomeBackText),
clr: AppColor.smokeGrayColor),
TextWidget()
.text14W700(", Pooja", clr: AppColor.plainBlack),
TextWidget().text14W700(
", ${Globalconst.firstName.trim()}",
clr: AppColor.plainBlack),
],
),
TextWidget().text14W500(