chore: remove Firebase dependencies and legacy code (Fase 4)

- Delete all firebase_*_repository.dart files (replaced by api_* equivalents)
- Remove cloud_firestore, firebase_auth, firebase_storage, firebase_core from all package pubspecs
- Remove cloud_firestore from main pubspec.yaml
- Delete firebase_options.dart (no longer referenced)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-17 18:11:31 -05:00
co-authored by Claude Sonnet 4.6
parent 733384091c
commit af91e0ba04
18 changed files with 0 additions and 1120 deletions
@@ -1,213 +0,0 @@
import 'dart:async';
import 'dart:developer';
import 'dart:io';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:professional_repository/professional_repository.dart';
import 'package:firebase_storage/firebase_storage.dart';
class FirebaseProfessionalRepository {
final professionalCollection =
FirebaseFirestore.instance.collection('professional_info');
ProfessionalEntity? _proInfo;
final StreamController<ProfessionalEntity?> _proInfoBroadcast =
StreamController<ProfessionalEntity?>.broadcast();
bool isProModeActive = false;
final StreamController<bool> _isProModeActiveBroadcast =
StreamController.broadcast();
FirebaseProfessionalRepository() {
_isProModeActiveBroadcast.add(isProModeActive);
FirebaseAuth.instance.userChanges().listen((user) async {
if (user != null) {
await updateFromFirebase(
userId: user.uid,
);
} else {
_proInfo = null;
_proInfoBroadcast.add(null);
}
});
}
ProfessionalEntity? lastProInfo() {
return _proInfo;
}
Stream<ProfessionalEntity?> streamProInfo() {
return _proInfoBroadcast.stream;
}
Future<void> updateFromFirebase({
required String userId,
}) async {
try {
final proInfo = await getProInfo(userId);
_proInfo = proInfo;
_proInfoBroadcast.add(proInfo);
} catch (e) {
_proInfo = null;
_proInfoBroadcast.add(null);
}
}
Future<ProfessionalEntity?> getProInfo(String myUserId) async {
try {
return professionalCollection.doc(myUserId).get().then((value) {
final valueData = value.data();
if (valueData == null || valueData.isEmpty || !value.exists) {
return null;
}
return ProfessionalEntity.fromDocument(valueData);
});
} catch (e) {
log(e.toString());
rethrow;
}
}
Stream<bool> sreamIsProModeActive() {
return _isProModeActiveBroadcast.stream;
}
switchProMode() async {
isProModeActive = !isProModeActive;
_isProModeActiveBroadcast.add(isProModeActive);
}
Future<void> updateProfessionalInfo(
String address,
String aditionalAddress,
bool ratePreferences,
String rate,
LocationPreferences locationPreferences,
double latitude,
double longitude,
Schedules schedules,
PaymentMethodEntity paymentMethods,
) async {
if (_proInfo == null) {
log('_proInfo is null');
return;
}
await professionalCollection.doc(_proInfo!.id).update({
'address': address,
'aditional_address': aditionalAddress,
'rate_preferences': ratePreferences,
'rate': rate,
'location_preferences': enumToInt(locationPreferences),
'latitude': latitude,
'longitude': longitude,
'schedules': schedules.toJson(),
'payment_methods': paymentMethods.toDocument(),
});
await updateFromFirebase(userId: _proInfo!.id);
}
Future<void> saveProfessionalInfo(ProfessionalEntity entity) async {
await professionalCollection.doc(entity.id).set(entity.toDocument());
}
Future<void> uploadBannerPicture(String file) async {
try {
File imageFile = File(file);
Reference firebaseStoreRef = FirebaseStorage.instance
.ref()
.child('${_proInfo!.id}/BN/${_proInfo!.id}_banner');
await firebaseStoreRef.putFile(imageFile);
String url = await firebaseStoreRef.getDownloadURL();
await professionalCollection
.doc(_proInfo!.id)
.update({'banner_picture': url});
} catch (e) {
log(e.toString());
rethrow;
}
}
Future<String> uploadPdfCedula(String file, String userId) async {
try {
File pdfFile = File(file);
Reference firebaseStoreRef = FirebaseStorage.instance
.ref()
.child('$userId/PDF/${userId}_cedula.pdf');
await firebaseStoreRef.putFile(pdfFile);
String url = await firebaseStoreRef.getDownloadURL();
return url;
} catch (e) {
log(e.toString());
rethrow;
}
}
Future<String> uploadPdfCertificado(String file, String userId) async {
try {
File pdfFile = File(file);
Reference firebaseStoreRef = FirebaseStorage.instance
.ref()
.child('$userId/PDF/${userId}_certificado.pdf');
await firebaseStoreRef.putFile(pdfFile);
String url = await firebaseStoreRef.getDownloadURL();
return url;
} catch (e) {
log(e.toString());
rethrow;
}
}
Future<List<String>> uploadPdfsEspecializaciones(
List<String> files, String userId) async {
try {
List<String> urls = [];
for (String file in files) {
File pdfFile = File(file);
Reference firebaseStoreRef = FirebaseStorage.instance.ref().child(
'$userId/PDF/${userId}_${DateTime.now().millisecondsSinceEpoch}_especializacion.pdf');
await firebaseStoreRef.putFile(pdfFile);
String url = await firebaseStoreRef.getDownloadURL();
urls.add(url);
}
return urls;
} catch (e) {
log(e.toString());
rethrow;
}
}
Future<List<ProfessionalEntity>> getProfessionalInfo() async {
try {
QuerySnapshot<Map<String, dynamic>> querySnapshot =
await professionalCollection.get();
return querySnapshot.docs
.map((e) => ProfessionalEntity.fromDocument(e.data()))
.toList();
} catch (e) {
log(e.toString());
rethrow;
}
}
Future<List<ProfessionalEntity>> getProfessionalsFromIds(
Iterable<String> ids) async {
try {
final querySnapshot = await professionalCollection
.where(FieldPath.documentId, whereIn: ids)
.get();
return querySnapshot.docs
.map((e) => ProfessionalEntity.fromDocument(e.data()))
.toList();
} catch (e) {
log('getProfessionsFromIds ${e.toString()}');
rethrow;
}
}
}