INFRA: Set Up Project.

This commit is contained in:
2025-11-28 11:10:49 +05:00
commit c798279f7d
609 changed files with 77436 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import 'package:customer/themes/show_toast_dialog.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../constant/constant.dart';
import '../screen_ui/auth_screens/otp_verification_screen.dart';
class MobileLoginController extends GetxController {
final Rx<TextEditingController> mobileController = TextEditingController().obs;
final Rx<TextEditingController> countryCodeController = TextEditingController(text: Constant.defaultCountryCode).obs;
final FirebaseAuth _auth = FirebaseAuth.instance;
/// Send OTP to the entered phone number
Future<void> sendOtp() async {
final mobile = mobileController.value.text.trim();
final countryCode = countryCodeController.value.text.trim();
if (mobile.isEmpty || mobile.length != 10) {
ShowToastDialog.showToast("Please enter a valid 10-digit mobile number".tr);
return;
}
try {
ShowToastDialog.showLoader("Sending OTP...".tr);
await _auth.verifyPhoneNumber(
phoneNumber: '$countryCode$mobile',
verificationCompleted: (PhoneAuthCredential credential) {
// Optionally handle auto-verification
},
verificationFailed: (FirebaseAuthException e) {
ShowToastDialog.closeLoader();
if (e.code == 'invalid-phone-number') {
ShowToastDialog.showToast("Invalid phone number".tr);
} else {
ShowToastDialog.showToast(e.message ?? "OTP verification failed".tr);
}
},
codeSent: (String verificationId, int? resendToken) {
ShowToastDialog.closeLoader();
Get.to(() => const OtpVerificationScreen(), arguments: {'countryCode': countryCode, 'phoneNumber': mobile, 'verificationId': verificationId});
},
codeAutoRetrievalTimeout: (String verificationId) {
ShowToastDialog.closeLoader();
ShowToastDialog.showToast("OTP timed out. Please try again.".tr);
// Optional: Handle timeout
},
);
} catch (e) {
ShowToastDialog.closeLoader();
ShowToastDialog.showToast("Something went wrong. Please try again.".tr);
}
}
@override
void onClose() {
mobileController.value.dispose();
countryCodeController.value.dispose();
super.onClose();
}
}