From 2b9f7140a25e94dade7da8971e2628fec72e7708 Mon Sep 17 00:00:00 2001 From: qiang Date: Wed, 31 Jul 2019 19:59:42 +0800 Subject: [PATCH] feat: plus-app getRecorderManager --- src/core/service/api/media/recorder.js | 77 ++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/core/service/api/media/recorder.js diff --git a/src/core/service/api/media/recorder.js b/src/core/service/api/media/recorder.js new file mode 100644 index 000000000..8e030f0b2 --- /dev/null +++ b/src/core/service/api/media/recorder.js @@ -0,0 +1,77 @@ +import { + onMethod, + invokeMethod +} from '../../platform' + +const callbacks = { + pause: [], + resume: [], + start: [], + stop: [] +} + +class RecorderManager { + constructor() { + callbacks = + onMethod('onRecorderStateChange', res => { + const state = res.state + delete res.state + delete res.errMsg + callbacks[state].forEach(callback => { + if (typeof callback === 'function') { + callback(res) + } + }) + }) + } + onError(callback) { + callbacks.error.push(callback) + } + onFrameRecorded(callback) { + + } + onInterruptionBegin(callback) { + + } + onInterruptionEnd(callback) { + + } + onPause(callback) { + callbacks.pause.push(callback) + } + onResume(callback) { + callbacks.resume.push(callback) + } + onStart(callback) { + callbacks.start.push(callback) + } + onStop(callback) { + callbacks.stop.push(callback) + } + pause() { + invokeMethod('operateRecorder', { + operationType: 'pause' + }) + } + resume() { + invokeMethod('operateRecorder', { + operationType: 'resume' + }) + } + start(options) { + invokeMethod('operateRecorder', Object.assign({}, options, { + operationType: 'start' + })) + } + stop() { + invokeMethod('operateRecorder', { + operationType: 'stop' + }) + } +} + +let recorderManager + +export function getRecorderManager() { + return recorderManager || (recorderManager = new RecorderManager()) +} -- GitLab