Poorpoor6976 commited on
Commit
32a990a
·
verified ·
1 Parent(s): afcd6c8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -15
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
- use_firebase = config.get("firebase_enabled", False)
 
 
 
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
- create_build_gradle_root(project_dir, config.get("firebase_enabled", False), config.get("onesignal_enabled", False))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>