diff options
author | David Baker <dave@matrix.org> | 2018-09-25 17:13:29 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2018-09-25 17:13:29 +0100 |
commit | 263b94428a24caaa5b899ed7f73b896620e6cdf4 (patch) | |
tree | dacfa7322ee472d9a09e4bd56805bae0aad215c9 /javascript/olm_suffix.js | |
parent | f29d8cdd7bf1faf8294f51624c633fb05c9a0e2f (diff) |
Another day, another interface
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.
Diffstat (limited to 'javascript/olm_suffix.js')
-rw-r--r-- | javascript/olm_suffix.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/javascript/olm_suffix.js b/javascript/olm_suffix.js new file mode 100644 index 0000000..023c0a5 --- /dev/null +++ b/javascript/olm_suffix.js @@ -0,0 +1,23 @@ +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; |