263b94428a
Change the interface again, hopefully this time a bit more normal. Now we wrap the emscripten module completely and just expose the high level objects. The olm library export is now imported as normal (ie. returns a module rather than a function returning a module) but has an `init` method which *must* be called. This returns a promise which resolves when the module is ready. It also rejects if the module failed to set up, unlike before (and unlike the promise-not-a-promise that emscripten returns). Generally catch failures to init the module.
23 lines
735 B
JavaScript
23 lines
735 B
JavaScript
olm_exports['init'] = function() {
|
|
return new Promise(function(resolve, reject) {
|
|
onInitSuccess = function() {
|
|
resolve();
|
|
};
|
|
onInitFail = function(err) {
|
|
reject(err);
|
|
};
|
|
Module();
|
|
});
|
|
};
|
|
|
|
if (typeof(window) !== 'undefined') {
|
|
// We've been imported directly into a browser. Define the global 'Olm' object.
|
|
// (we do this even if module.exports was defined, because it's useful to have
|
|
// Olm in the global scope for browserified and webpacked apps.)
|
|
window["Olm"] = olm_exports;
|
|
}
|
|
|
|
// Emscripten sets the module exports to be its module
|
|
// with wrapped c functions. Clobber it with our higher
|
|
// level wrapper class.
|
|
module.exports = olm_exports;
|