[Service] Debugging condole.log with ServiceMessage
[platform/framework/web/wrtjs.git] / wrt_app / common / service_message.ts
1 import { wrt } from '../browser/wrt';
2
3 let funcConsoleLog: any = null;
4 let foregroundAppMessagePort: any = null;
5 let lastForegroundApp: string = '';
6 const wrtCommonPort = 'wrt.message.port';
7
8 export function notifyServiceMessage(type: string, message: string) {
9   let foregroundApp = wrt.tv?.getForegroundApp();
10   if (!foregroundApp || foregroundApp == 'none')
11     return;
12
13   try {
14     if (!foregroundAppMessagePort || lastForegroundApp != foregroundApp) {
15       foregroundAppMessagePort =
16         global.tizen.messageport.requestRemoteMessagePort(foregroundApp, wrtCommonPort);
17       lastForegroundApp = foregroundApp;
18     }
19     if (foregroundAppMessagePort)
20       foregroundAppMessagePort.sendMessage([{ key: type, value: ['', message] }]);
21   } catch { }
22 }
23
24 export function initConsoleMessageNotification(id: string) {
25   try {
26     let mainAppId = wrt.getMainAppId(id);
27     if (!mainAppId)
28       return;
29
30     let mainAppMessagePort = global.tizen.messageport.requestRemoteMessagePort(
31       mainAppId, wrtCommonPort);
32     if (!mainAppMessagePort)
33       return;
34
35     Object.defineProperty(global, 'mainAppMessagePort',
36       { value: mainAppMessagePort, writable: false });
37
38     funcConsoleLog = console.log;
39     console.log = (log: any) => {
40       funcConsoleLog(log);
41       if (global.mainAppMessagePort) {
42         let value = [id, log.toString()];
43         global.mainAppMessagePort.sendMessage([{ key: 'service-log', value }]);
44       }
45     }
46   } catch { }
47 }