Skip to content

Commit 3d88138

Browse files
committed
fix loading order
1 parent a9e6306 commit 3d88138

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

lib/contracts/code_generator.js

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ result += "\n";
8888
result += "\n })(0, memo);";
8989
result += "\n};";
9090

91+
result += "\nvar __LoadManager = function() { this.list = []; this.done = false; }";
92+
result += "\n__LoadManager.prototype.execWhenReady = function(cb) { if (this.done) { cb(); } else { this.list.push(cb) } }";
93+
result += "\n__LoadManager.prototype.doFirst = function(todo) { var self = this; todo(function() { self.done = true; self.list.map((x) => x.apply()) }) }";
94+
result += "\nthis.__loadManagerInstance = new __LoadManager();";
95+
result += "\nthis.__mainContext = this;";
96+
9197
result += "\nvar whenEnvIsLoaded = function(cb) {";
9298
result += "\n if (typeof document !== 'undefined' && document !== null) {";
9399
result += "\n document.addEventListener('DOMContentLoaded', cb);";
@@ -105,7 +111,7 @@ result += "\n";
105111
result += plugin.generateProvider(self) + "\n";
106112
});
107113
} else {
108-
result += "\nwhenEnvIsLoaded(function() {\n";
114+
result += "\nwhenEnvIsLoaded(__loadManagerInstance.doFirst(function(done) {\n";
109115

110116
result += "\nif (typeof window !== 'undefined') { window.web3 = undefined; }";
111117

@@ -138,13 +144,14 @@ result += "\n";
138144
connectionCode += "\nweb3.eth.getAccounts(function(err, account) { if(err) { next(null, true) } else { next(null, false) }})";
139145

140146
connectionCode += "\n}, function(err, _result) {";
147+
connectionCode += "\nweb3.eth.defaultAccount = web3.eth.accounts[0];";
148+
connectionCode += '\ndone();';
141149
connectionCode += "\n});";
142150

143151
result += connectionCode;
144152
}
145153

146-
result += "\nweb3.eth.defaultAccount = web3.eth.accounts[0];";
147-
result += '\n})';
154+
result += '\n}))';
148155
}
149156

150157
return result;
@@ -175,21 +182,21 @@ result += "\n";
175182
let gasEstimates = JSON.stringify(contract.gasEstimates);
176183

177184
// TODO: refactor this
178-
result += "\nif (whenEnvIsLoaded === undefined) {";
179-
result += "\n var whenEnvIsLoaded = function(cb) {";
180-
result += "\n if (typeof document !== 'undefined' && document !== null) {";
181-
result += "\n document.addEventListener('DOMContentLoaded', cb);";
182-
result += "\n } else {";
183-
result += "\n cb();";
184-
result += "\n }";
185-
result += "\n }";
186-
result += "\n}";
187-
188-
result += "\nwhenEnvIsLoaded(function() {";
185+
//result += "\nif (whenEnvIsLoaded === undefined) {";
186+
//result += "\n var whenEnvIsLoaded = function(cb) {";
187+
//result += "\n if (typeof document !== 'undefined' && document !== null) {";
188+
//result += "\n document.addEventListener('DOMContentLoaded', cb);";
189+
//result += "\n } else {";
190+
//result += "\n cb();";
191+
//result += "\n }";
192+
//result += "\n }";
193+
//result += "\n}";
194+
195+
result += "\n__loadManagerInstance.execWhenReady(function() {";
189196
result += "\nif (typeof window !== 'undefined') { window." + className + " = undefined; }";
190197
if (useEmbarkJS) {
191198
let contractAddress = contract.deployedAddress ? ("'" + contract.deployedAddress + "'") : "undefined";
192-
result += "\n" + className + " = new EmbarkJS.Contract({abi: " + abi + ", address: " + contractAddress + ", code: '" + contract.code + "', gasEstimates: " + gasEstimates + "});";
199+
result += "\n__mainContext." + className + " = new EmbarkJS.Contract({abi: " + abi + ", address: " + contractAddress + ", code: '" + contract.code + "', gasEstimates: " + gasEstimates + "});";
193200
} else {
194201
result += "\n" + className + "Abi = " + abi + ";";
195202
result += "\n" + className + "Contract = web3.eth.contract(" + className + "Abi);";

0 commit comments

Comments
 (0)