cleanupFirebaseConfig static method
void
cleanupFirebaseConfig(
- String flavor
)
Implementation
static void cleanupFirebaseConfig(String flavor) {
final root = ConfigService.root;
// 1. firebase.json cleanup
final firebaseFile = File(p.join(root, 'firebase.json'));
if (firebaseFile.existsSync()) {
try {
final content = firebaseFile.readAsStringSync();
final json = jsonDecode(content) as Map<String, dynamic>;
if (json.containsKey('flutter') &&
json['flutter'].containsKey('platforms') &&
json['flutter']['platforms'].containsKey('dart')) {
final dart =
json['flutter']['platforms']['dart'] as Map<String, dynamic>;
final targetKey = 'lib/firebase_options_$flavor.dart';
if (dart.containsKey(targetKey)) {
dart.remove(targetKey);
const encoder = JsonEncoder.withIndent(' ');
firebaseFile.writeAsStringSync(encoder.convert(json));
}
}
} catch (_) {
// Ignore errors if JSON is malformed
}
}
// 2. google-services.json cleanup
final googleFile = File(p.join(root, 'android/app/google-services.json'));
if (googleFile.existsSync()) {
try {
final content = googleFile.readAsStringSync();
final json = jsonDecode(content) as Map<String, dynamic>;
if (json.containsKey('client')) {
final clients = json['client'] as List<dynamic>;
// Calculate package ID for this flavor
final config = ConfigService.load();
final baseId = config.android.applicationId;
final prodFlavor = ConfigService.load().productionFlavor;
final useSuffix = ConfigService.load().useSuffix;
String packageId = baseId;
if (useSuffix && flavor != prodFlavor) {
packageId = '$baseId.$flavor';
}
final initialLength = clients.length;
clients.removeWhere((c) {
if (c is Map && c.containsKey('client_info')) {
final info = c['client_info'] as Map;
if (info.containsKey('android_client_info')) {
final android = info['android_client_info'] as Map;
return android['package_name'] == packageId;
}
}
return false;
});
if (clients.length != initialLength) {
const encoder = JsonEncoder.withIndent(' ');
googleFile.writeAsStringSync(encoder.convert(json));
}
}
} catch (_) {
// Ignore errors
}
}
}