Files
grocery_user_app-frontend/lib/src/logic/provider/auth_provider.dart
2025-01-28 19:05:19 +05:30

217 lines
6.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:grocery_app/src/core/network_services/service_locator.dart';
import 'package:grocery_app/src/core/utils/snack_bar.dart';
import 'package:grocery_app/src/logic/repo/auth_repo.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
import 'package:grocery_app/utils/extensions/extensions.dart';
class AuthProvider extends ChangeNotifier {
int _currentIndex = 0;
final int _totalPages = 4; // Set total number of pages
final PageController _pageController = PageController();
final TextEditingController name = TextEditingController();
final TextEditingController lastName = TextEditingController();
final TextEditingController email = TextEditingController();
final TextEditingController address = TextEditingController();
final TextEditingController passwordController = TextEditingController();
final TextEditingController confirmPasswordController =
TextEditingController();
int get currentIndex => _currentIndex;
PageController get pageController => _pageController;
// Calculate progress as a percentage
double get progress => (_currentIndex + 1) / _totalPages;
final _authRepo = getIt<AuthRepo>();
String numberwithCode = '';
Future<bool> sendOtp(String number, BuildContext context) async {
context.showLoader(show: true);
var data = {"phone": "+91" + number};
numberwithCode = "+91" + number;
try {
var response = await _authRepo.sendOtp(data);
print("check response ${response}");
context.showLoader(show: false);
return response.fold(
(error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false;
},
(response) {
print("hdsfvjhdfghjdf");
_showSnackBar(context, "OTP sent successfully", Colors.green);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
print("Unexpected error: $e");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
backgroundColor: Colors.red,
),
);
return false;
}
}
Future<bool> verifiOtp(String otp, BuildContext context) async {
context.showLoader(show: true);
var data = {
"phone": numberwithCode,
"otp": otp,
};
try {
var result = await _authRepo.verifyOtp(data);
return result.fold(
(error) {
// Show error Snackbar
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false; // Login failed
},
(response) {
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("OTP Verify successful!"),
backgroundColor: Colors.green,
),
);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
backgroundColor: Colors.red,
),
);
return false;
}
}
// //login
// //vendorRegister
Future<bool> customerRegister(BuildContext context) async {
context.showLoader(show: true);
var data = {
"firstName": name.text,
"lastName": lastName.text,
"email": email.text,
};
try {
var result = await _authRepo.customerRegister(data);
return result.fold(
(error) {
// Show error Snackbar
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false; // Login failed
},
(response)
{
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Vendor Register successful!"),
backgroundColor: Colors.green,
),
);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again. "),
backgroundColor: Colors.red,
),
);
return false;
}
}
// void goToNextPage() {
// // Ensure that the current index is updated correctly
// if (_currentIndex < _totalPages - 1) {
// _currentIndex++; // Increment the index here
// _pageController.animateToPage(
// _currentIndex,
// duration: const Duration(milliseconds: 300),
// curve: Curves.ease,
// );
// notifyListeners(); // Notify listeners to update the view
// }
// }
// void goToPage(int index) {
// if (index >= 0 && index < _totalPages) {
// _currentIndex = index;
// print("Navigating to page: $_currentIndex"); // Debug print
// _pageController.animateToPage(
// _currentIndex,
// duration: const Duration(milliseconds: 300),
// curve: Curves.ease,
// );
// notifyListeners();
// }
// }
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
// bool _isChecked = false;
// bool get isChecked => _isChecked;
// void toggleCheckbox(bool value) {
// _isChecked = value;
// notifyListeners();
// }
void _showSnackBar(BuildContext context, String message, Color color) {
showTopSnackBar(context, message, color);
}
}