react-native-drawing
Version:
A React Native library that provides a canvas to perform drawing actions
52 lines (51 loc) • 1.72 kB
JavaScript
import { AnswerAck } from './AnswerAck';
import { Codec } from './Codec';
import { Receiver } from './Receiver';
import { ReceivedAck } from './ReceivedAck';
import { Sender } from './Sender';
export class MessageSystem {
constructor(suscribe, sendData) {
Object.defineProperty(this, "sender", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "receiver", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
// Building codec
const codec = new Codec((struct) => {
return MessageSystem.fixCodecStruct(struct);
});
// Building ACKs
const receivedAck = new ReceivedAck(sendData);
const answerAck = new AnswerAck(sendData);
// Creating dependencies (both sides of Message System)
this.sender = new Sender(codec, receivedAck, answerAck, sendData);
this.receiver = new Receiver(codec, receivedAck, answerAck, suscribe);
}
/**
* Send messages to the other side (ReactNative/WebView) and get back an answer
*/
postMessage(target, data) {
return this.sender.postMessage(target, data);
}
/**
* Listen messages from the other side (ReactNative/WebView)
*/
onMessage(target, handle) {
this.receiver.onMessage(target, handle);
}
static fixCodecStruct(struct) {
const { id, target, arg } = struct;
return {
id: (typeof id === 'number') ? id : NaN,
target: (typeof target === 'string') ? target : '',
arg,
};
}
}