validateFirebaseProjectConfiguration function
void
validateFirebaseProjectConfiguration({})
Validates that generated Firebase native configuration belongs to the project selected by Katana.
Implementation
void validateFirebaseProjectConfiguration({
required String expectedProjectId,
required String androidJson,
required List<String> applePlists,
}) {
final androidProjectId = jsonDecodeAsMap(androidJson)
.getAsMap("project_info")
.get("project_id", "");
if (androidProjectId != expectedProjectId) {
throw StateError(
"Android Firebase project mismatch: expected $expectedProjectId, "
"found $androidProjectId.",
);
}
for (final plist in applePlists) {
final document = XmlDocument.parse(plist);
final projectKey = document.findAllElements("key").firstWhereOrNull(
(element) => element.innerText == "PROJECT_ID",
);
final projectId = projectKey?.nextElementSibling?.innerText ?? "";
if (projectId != expectedProjectId) {
throw StateError(
"Apple Firebase project mismatch: expected $expectedProjectId, "
"found $projectId.",
);
}
}
}