Răsfoiți Sursa

Merge pull request #97645 from adamscott/fix-pwa-reloading-page

Fix web export infinite reload issue
Rémi Verschelde 10 luni în urmă
părinte
comite
6388314dcc
2 a modificat fișierele cu 11 adăugiri și 4 ștergeri
  1. 4 3
      misc/dist/html/full-size.html
  2. 7 1
      platform/web/export/export_plugin.cpp

+ 4 - 3
misc/dist/html/full-size.html

@@ -164,10 +164,11 @@ const engine = new Engine(GODOT_CONFIG);
 				new Promise((resolve) => {
 					setTimeout(() => resolve(), 2000);
 				}),
-			]).catch((err) => {
-				console.error('Error while registering service worker:', err);
-			}).then(() => {
+			]).then(() => {
+				// Reload if there was no error.
 				window.location.reload();
+			}).catch((err) => {
+				console.error('Error while registering service worker:', err);
 			});
 		} else {
 			// Display the message as usual

+ 7 - 1
platform/web/export/export_plugin.cpp

@@ -214,6 +214,9 @@ Error EditorExportPlatformWeb::_add_manifest_icon(const String &p_path, const St
 }
 
 Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_preset, const String p_path, const Vector<SharedObject> &p_shared_objects) {
+	List<String> preset_features;
+	get_preset_features(p_preset, &preset_features);
+
 	String proj_name = GLOBAL_GET("application/config/name");
 	if (proj_name.is_empty()) {
 		proj_name = "Godot Game";
@@ -239,7 +242,10 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese
 		cache_files.push_back(name + ".icon.png");
 		cache_files.push_back(name + ".apple-touch-icon.png");
 	}
-	cache_files.push_back(name + ".worker.js");
+
+	if (preset_features.find("threads")) {
+		cache_files.push_back(name + ".worker.js");
+	}
 	cache_files.push_back(name + ".audio.worklet.js");
 	cache_files.push_back(name + ".audio.position.worklet.js");
 	replaces["___GODOT_CACHE___"] = Variant(cache_files).to_json_string();