Update app.py
Browse files
app.py
CHANGED
|
@@ -170,7 +170,10 @@ def create_app_build_gradle(app_dir, config):
|
|
| 170 |
version_name = config.get("version_name", "1.0.0")
|
| 171 |
version_code = config.get("version_code", "1")
|
| 172 |
minify_enabled = "true" if config.get("proguard_enabled") else "false"
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
| 174 |
use_onesignal = config.get("onesignal_enabled", False)
|
| 175 |
onesignal_id = config.get("onesignal_app_id", "")
|
| 176 |
use_admob = config.get("admob_enabled", False)
|
|
@@ -1175,13 +1178,38 @@ def setup_project(build_id, config):
|
|
| 1175 |
os.makedirs(assets_dir, exist_ok=True)
|
| 1176 |
os.makedirs(os.path.join(res_dir, "values"), exist_ok=True)
|
| 1177 |
|
| 1178 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1179 |
create_settings_gradle(project_dir, config.get("app_name", "WebApp"))
|
| 1180 |
create_gradle_properties(project_dir)
|
| 1181 |
create_gradle_wrapper(project_dir)
|
| 1182 |
|
| 1183 |
-
use_firebase = config.get("firebase_enabled", False)
|
| 1184 |
-
use_onesignal = config.get("onesignal_enabled", False)
|
| 1185 |
create_app_build_gradle(app_dir, config)
|
| 1186 |
create_proguard_rules(app_dir, config)
|
| 1187 |
|
|
@@ -1218,17 +1246,6 @@ def setup_project(build_id, config):
|
|
| 1218 |
with open(os.path.join(assets_dir, "offline.html"), "w") as f:
|
| 1219 |
f.write(generate_offline_html())
|
| 1220 |
|
| 1221 |
-
firebase_json = config.get("firebase_json", "")
|
| 1222 |
-
if firebase_json and use_firebase:
|
| 1223 |
-
try:
|
| 1224 |
-
parsed = json.loads(firebase_json)
|
| 1225 |
-
with open(os.path.join(app_dir, "google-services.json"), "w") as f:
|
| 1226 |
-
json.dump(parsed, f, indent=2)
|
| 1227 |
-
except json.JSONDecodeError:
|
| 1228 |
-
config["firebase_enabled"] = False
|
| 1229 |
-
create_build_gradle_root(project_dir, False, use_onesignal)
|
| 1230 |
-
create_app_build_gradle(app_dir, config)
|
| 1231 |
-
|
| 1232 |
strings_xml = """<?xml version="1.0" encoding="utf-8"?>
|
| 1233 |
<resources>
|
| 1234 |
<string name="app_name">{app_name}</string>
|
|
|
|
| 170 |
version_name = config.get("version_name", "1.0.0")
|
| 171 |
version_code = config.get("version_code", "1")
|
| 172 |
minify_enabled = "true" if config.get("proguard_enabled") else "false"
|
| 173 |
+
|
| 174 |
+
# 🔥 Use the securely validated flag from config
|
| 175 |
+
use_firebase = config.get("actual_firebase_enabled", False)
|
| 176 |
+
|
| 177 |
use_onesignal = config.get("onesignal_enabled", False)
|
| 178 |
onesignal_id = config.get("onesignal_app_id", "")
|
| 179 |
use_admob = config.get("admob_enabled", False)
|
|
|
|
| 1178 |
os.makedirs(assets_dir, exist_ok=True)
|
| 1179 |
os.makedirs(os.path.join(res_dir, "values"), exist_ok=True)
|
| 1180 |
|
| 1181 |
+
# 🔥 FIREBASE VALIDATION LOGIC 🔥
|
| 1182 |
+
use_firebase = config.get("firebase_enabled", False)
|
| 1183 |
+
use_onesignal = config.get("onesignal_enabled", False)
|
| 1184 |
+
firebase_json = config.get("firebase_json", "")
|
| 1185 |
+
|
| 1186 |
+
actual_firebase_enabled = False
|
| 1187 |
+
|
| 1188 |
+
if use_firebase and firebase_json.strip():
|
| 1189 |
+
try:
|
| 1190 |
+
# Check if it's valid JSON AND contains the crucial "project_info" key
|
| 1191 |
+
parsed = json.loads(firebase_json)
|
| 1192 |
+
if "project_info" in parsed:
|
| 1193 |
+
# Only write the file and enable the plugin if it's perfectly valid
|
| 1194 |
+
os.makedirs(app_dir, exist_ok=True)
|
| 1195 |
+
with open(os.path.join(app_dir, "google-services.json"), "w") as f:
|
| 1196 |
+
json.dump(parsed, f, indent=2)
|
| 1197 |
+
actual_firebase_enabled = True
|
| 1198 |
+
else:
|
| 1199 |
+
LOG_STORE[build_id].append("⚠️ WARNING: Firebase JSON is missing 'project_info'. Firebase integration skipped to prevent build failure.")
|
| 1200 |
+
except json.JSONDecodeError:
|
| 1201 |
+
LOG_STORE[build_id].append("⚠️ WARNING: Firebase JSON is invalid. Firebase integration skipped to prevent build failure.")
|
| 1202 |
+
elif use_firebase:
|
| 1203 |
+
LOG_STORE[build_id].append("⚠️ WARNING: Firebase was enabled but no JSON was provided. Integration skipped.")
|
| 1204 |
+
|
| 1205 |
+
# Save actual state to config so create_app_build_gradle knows what to do
|
| 1206 |
+
config["actual_firebase_enabled"] = actual_firebase_enabled
|
| 1207 |
+
|
| 1208 |
+
create_build_gradle_root(project_dir, actual_firebase_enabled, use_onesignal)
|
| 1209 |
create_settings_gradle(project_dir, config.get("app_name", "WebApp"))
|
| 1210 |
create_gradle_properties(project_dir)
|
| 1211 |
create_gradle_wrapper(project_dir)
|
| 1212 |
|
|
|
|
|
|
|
| 1213 |
create_app_build_gradle(app_dir, config)
|
| 1214 |
create_proguard_rules(app_dir, config)
|
| 1215 |
|
|
|
|
| 1246 |
with open(os.path.join(assets_dir, "offline.html"), "w") as f:
|
| 1247 |
f.write(generate_offline_html())
|
| 1248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1249 |
strings_xml = """<?xml version="1.0" encoding="utf-8"?>
|
| 1250 |
<resources>
|
| 1251 |
<string name="app_name">{app_name}</string>
|