From 62aaa54a22d9749afbbc1a75a6bdc95facb97261 Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@gmail.com>
Date: Tue, 29 Dec 2020 11:54:40 +0100
Subject: [PATCH] backwardsCompability to pure DOM

---
 src/005-passages/bcPassages.js                | 14 ++++++
 .../BackwardsCompatibility.tw                 | 12 -----
 .../backwardsCompatibility.js                 | 50 ++++++++++---------
 3 files changed, 41 insertions(+), 35 deletions(-)
 create mode 100644 src/005-passages/bcPassages.js
 delete mode 100644 src/data/backwardsCompatibility/BackwardsCompatibility.tw

diff --git a/src/005-passages/bcPassages.js b/src/005-passages/bcPassages.js
new file mode 100644
index 00000000000..1cf82e5ac49
--- /dev/null
+++ b/src/005-passages/bcPassages.js
@@ -0,0 +1,14 @@
+new App.DomPassage("Backwards Compatibility",
+	() => {
+		V.nextButton = "Continue";
+		V.nextLink = "Main";
+		V.returnTo = "Main";
+
+		App.Update.setNonexistentProperties(V, App.Data.defaultGameStateVariables);
+
+		/* resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it fills in holes instead of overwriting data */
+		App.Update.setNonexistentProperties(V, App.Data.resetOnNGPlus);
+
+		return App.Update.backwardsCompatibility();
+	}
+);
diff --git a/src/data/backwardsCompatibility/BackwardsCompatibility.tw b/src/data/backwardsCompatibility/BackwardsCompatibility.tw
deleted file mode 100644
index 0a3ff856077..00000000000
--- a/src/data/backwardsCompatibility/BackwardsCompatibility.tw
+++ /dev/null
@@ -1,12 +0,0 @@
-:: Backwards Compatibility [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">>
-
-<<run App.Update.setNonexistentProperties(V, App.Data.defaultGameStateVariables)>>
-
-/* resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it fills in holes instead of overwriting data */
-<<run App.Update.setNonexistentProperties(V, App.Data.resetOnNGPlus)>>
-<span id="backwards-compatibility"></span>
-<script>
-	App.Update.backwardsCompatibility();
-</script>
\ No newline at end of file
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index f34d42d3980..f1068b1b5f5 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -53,64 +53,68 @@ App.Update.setExistentProperties = function(obj, array) {
 	}
 };
 
+/**
+ * @returns {DocumentFragment}
+ */
 App.Update.backwardsCompatibility = function() {
+	const f = document.createDocumentFragment();
 	let div;
-	jQuery('#backwards-compatibility').empty();
 	try {
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Check for old version... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.oldVersions(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Updating gene pool records... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.genePoolRecords(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Updating global variables... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.globalVariables(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Updating slave variables... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.slaveVariables(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Updating slave records... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.slaveRecords(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Updating Rule Assistant data... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.RAassistantData(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Checking for old arcology locations... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.arcologyLocation(div);
 
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Checking for old variables... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.autoshred(div);
 
 		// leave this at the bottom of BC
-		div = document.createElement('div');
+		div = document.createElement("div");
 		div.append(`Cleaning up... `);
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
 		App.Update.cleanUp(div);
 		App.UI.SlaveSummary.settingsChanged();
 	} catch (error) {
-		div = document.createElement('p');
-		div.className = "red";
+		div = document.createElement("p");
+		div.className = "error";
 		div.textContent = `Backwards compatibility has failed for your save. Please upload your save to https://gitgud.io/pregmodfan/fc-pregmod/ with notes on what went wrong so that we can fix the backwards compatibility process for everyone. Thank you!`;
-		jQuery('#backwards-compatibility').append(div);
+		f.append(div);
+		f.append(App.UI.DOM.formatException(error));
 		State.restore();
-		throw (error); // rethrow the exception to SugarCube so we get a fancy stack trace
 	}
+	return f;
 };
 
 App.Update.globalVariables = function(node) {
-- 
GitLab