diff options
| author | HJ <30-hj@users.noreply.git.pleroma.social> | 2021-05-31 11:00:53 +0000 |
|---|---|---|
| committer | HJ <30-hj@users.noreply.git.pleroma.social> | 2021-05-31 11:00:53 +0000 |
| commit | dc611dffdbf8f24c10caa7651651efbff1acfe67 (patch) | |
| tree | 9231422f2f448204685c69984a2859a0f014dcab /src/services/ruffle_service/ruffle_service.js | |
| parent | 0741d1d93d1ff40489747c0dcfd652be8bf6e2ab (diff) | |
| parent | 245addb530f04510d072531eef45e7f30c79e237 (diff) | |
Merge branch 'flash-support' into 'develop'
Flash support
See merge request pleroma/pleroma-fe!1380
Diffstat (limited to 'src/services/ruffle_service/ruffle_service.js')
| -rw-r--r-- | src/services/ruffle_service/ruffle_service.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/services/ruffle_service/ruffle_service.js b/src/services/ruffle_service/ruffle_service.js new file mode 100644 index 00000000..7411dd96 --- /dev/null +++ b/src/services/ruffle_service/ruffle_service.js @@ -0,0 +1,40 @@ +const createRuffleService = () => { + let ruffleInstance = null + + const getRuffle = () => new Promise((resolve, reject) => { + if (ruffleInstance) { + resolve(ruffleInstance) + return + } + // Ruffle needs these to be set before it's loaded + // https://github.com/ruffle-rs/ruffle/issues/3952 + window.RufflePlayer = {} + window.RufflePlayer.config = { + polyfills: false, + publicPath: '/static/ruffle' + } + + // Currently it's seems like a better way of loading ruffle + // because it needs the wasm publically accessible, but it needs path to it + // and filename of wasm seems to be pseudo-randomly generated (is it a hash?) + const script = document.createElement('script') + // see webpack config, using CopyPlugin to copy it from node_modules + // provided via ruffle-mirror + script.src = '/static/ruffle/ruffle.js' + script.type = 'text/javascript' + script.onerror = (e) => { reject(e) } + script.onabort = (e) => { reject(e) } + script.oncancel = (e) => { reject(e) } + script.onload = () => { + ruffleInstance = window.RufflePlayer + resolve(ruffleInstance) + } + document.body.appendChild(script) + }) + + return { getRuffle } +} + +const RuffleService = createRuffleService() + +export default RuffleService |
