cambiar numero de telefono
This commit is contained in:
@@ -1,13 +1,117 @@
|
||||
import 'package:firebase_auth/firebase_auth.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:prosappco/src/authentication/authentication_repository.dart';
|
||||
|
||||
class NewPhoneController extends GetxController {
|
||||
static NewPhoneController get instance => Get.find();
|
||||
final FirebaseAuth _auth = FirebaseAuth.instance;
|
||||
|
||||
final newPhoneNo = TextEditingController();
|
||||
final newPhoneNo = TextEditingController(text: '');
|
||||
final otpCode = TextEditingController(text: '');
|
||||
|
||||
void phoneAuthentication(String newPhoneNo) {
|
||||
AuthenticationRepository.instance.phoneAuthentication(newPhoneNo);
|
||||
Future<void> updatePhoneNumber(newPhoneNo) async {
|
||||
final currentUser = _auth.currentUser;
|
||||
|
||||
if (currentUser?.phoneNumber == newPhoneNo) {
|
||||
Get.snackbar(
|
||||
'Ya estas registrado',
|
||||
'Este es tu numero actual.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
} else {
|
||||
try {
|
||||
final PhoneVerificationCompleted verificationCompleted =
|
||||
(PhoneAuthCredential credential) async {
|
||||
await currentUser?.updatePhoneNumber(credential);
|
||||
Get.snackbar(
|
||||
'Número de teléfono actualizado',
|
||||
'El número de teléfono se ha actualizado correctamente.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
};
|
||||
|
||||
final PhoneVerificationFailed verificationFailed =
|
||||
(FirebaseAuthException e) {
|
||||
Get.snackbar(
|
||||
'Ingresa un numero de telefono valido',
|
||||
'verifica que el campo tenga todos los caracteres o intentalo de nuevo',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
};
|
||||
|
||||
final PhoneCodeSent codeSent =
|
||||
(String verificationId, [int? forceResendingToken]) {
|
||||
Get.defaultDialog(
|
||||
title: 'Ingrese el código de verificación',
|
||||
content: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
TextField(
|
||||
controller: otpCode,
|
||||
decoration: InputDecoration(
|
||||
labelText: 'Código de verificación',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
},
|
||||
child: Text('Cancelar'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
try {
|
||||
final PhoneAuthCredential credential =
|
||||
PhoneAuthProvider.credential(
|
||||
verificationId: verificationId,
|
||||
smsCode: otpCode.text,
|
||||
);
|
||||
await currentUser?.updatePhoneNumber(credential);
|
||||
Get.back();
|
||||
Get.snackbar(
|
||||
'Número de teléfono actualizado',
|
||||
'El número de teléfono se ha actualizado correctamente.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar(
|
||||
'Numero ya registrado',
|
||||
'El numero de telefono ingresado ya se encuentra registrado',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text('Actualizar'),
|
||||
),
|
||||
],
|
||||
);
|
||||
};
|
||||
|
||||
final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
|
||||
(String verificationId) {
|
||||
// Aquí puedes hacer algo si se agota el tiempo de espera para ingresar el código de verificación automáticamente.
|
||||
};
|
||||
|
||||
await _auth.verifyPhoneNumber(
|
||||
phoneNumber: newPhoneNo,
|
||||
verificationCompleted: verificationCompleted,
|
||||
verificationFailed: verificationFailed,
|
||||
codeSent: codeSent,
|
||||
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout,
|
||||
);
|
||||
} catch (e) {
|
||||
print('Error actualizando el número de teléfono: $e');
|
||||
Get.snackbar(
|
||||
'Error actualizando el número de teléfono',
|
||||
'Ha ocurrido un error al actualizar el número de teléfono: $e',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user