UNPKG

2.78 kBPlain TextView Raw
1import EventService from '../lib/core/EventService';
2import Message from '../model/Message';
3import Contact from '../model/Contact';
4import MessageMapper from '../lib/core/MessageMapper'
5import { InputSet } from '../model/InputSet';
6
7enum Event {
8 OnInstall = 'onInstall',
9 onUninstall = 'onUninstall',
10 OnCall = 'onCall',
11 OnInteraction = 'onInteraction',
12 OnCommand = 'onCommand',
13}
14
15abstract class BaseComponent {
16 eventService: EventService;
17
18 abstract async onInstall (accountAddress: String): Promise<void>;
19 abstract async onUninstall (accountAddress: String): Promise<void>;
20 abstract async onCall (command: string, message: Message): Promise<void>;
21 abstract async onInteraction (message: Message, inputSet: InputSet): Promise<void>;
22 abstract async onCommand (command: string, message: Message): Promise<void>;
23 abstract async onNewMessage (message: Message): Promise<void>;
24
25 constructor() {
26 this.eventService = new EventService();
27
28 this.eventService
29 .onNewEvent((event: any) => {
30 this.onNewEvent(event)
31 })
32
33 this.eventService
34 .onNewMessage((msg: Message) => {
35 this.onNewMessage(msg)
36 })
37 }
38
39 onNewEvent (e: any) {
40 let mapper = new MessageMapper();
41 switch (e.event) {
42 case Event.OnInstall:
43 // console.log(JSON.stringify(e, null, 2))
44 this.onInstall(e.accountAddress);
45 break;
46 case Event.onUninstall:
47 // console.log(JSON.stringify(e, null, 2))
48 this.onUninstall(e.accountAddress);
49 break;
50 case Event.OnCall:
51 // console.log(JSON.stringify(e, null, 2))
52 this.onCall(
53 e.data,
54 mapper
55 .toMessage(e.reference)
56 .setAccountAddress(e.account_address)
57 //.setInputs(e.input)
58 .setFrom(new Contact(e.account_address).setName(''))
59 );
60 break;
61 case Event.OnInteraction:
62 // console.log(JSON.stringify(e, null, 2))
63 /*
64 let inputs = {};
65 for(let v of e.input) {
66 inputs[v.id] = v.name;
67 }
68 */
69 let _message = mapper
70 .toMessage(e.reference)
71 .setAccountAddress(e.account_address)
72 //.setInputs(e.input)
73 .setFrom(new Contact(e.account_address).setName(''))
74 this.onInteraction(_message, _message.InputSet);
75 break;
76 case Event.OnCommand:
77 // console.log(JSON.stringify(e, null, 2))
78 this.onCommand(
79 e.data,
80 mapper
81 .toMessage(e.reference)
82 .setAccountAddress(e.account_address)
83 //.setInputs(e.input)
84 .setFrom(new Contact(e.account_address).setName(''))
85 );
86 break;
87 default:
88 console.log('An unknown event was received');
89 }
90 }
91}
92
93export default BaseComponent;