{ "version": 3, "sources": ["messaging662.js"], "sourcesContent": ["// Declare TNCMS namespace if not declared\n\nif (!window.TNCMS) {\n\twindow.TNCMS = {}; \n}\n\nwindow.TNCMS.Messaging = (() => {\n\n\t\"use strict\";\n\t\n\tlet oFirebase = null;\n\t\n\treturn {\n\t\t\n\t\t/**\n\t\t * Initialize firebase and service worker\n\t\t * \n\t\t * @param object oConfig\n\t\t * \tThe configuration object as expected by firebase.initializeApp()\n\t\t */\n\t\tinit: (oConfig) => {\n\t\t\t\n\t\t\tif ('serviceWorker' in navigator) {\n\t\t\t\t\n\t\t\t\toFirebase = firebase.initializeApp(oConfig, 'tncms-notifier');\n\t\t\t\t\n\t\t\t\tnavigator.serviceWorker.register('/tncms/messaging/service-worker/').then((oWorker) => {\n\t\t\t\t\tconst oMessaging = firebase.messaging(oFirebase);\n\t\t\t\t\toMessaging.useServiceWorker(oWorker);\n\t\t\t\t}).catch(function(sError) {\n\t\t\t\t\tthrow new Error('Failed to register service worker: ' + sError);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tthrow new Error('Service workers are disabled or not supported');\n\n\t\t\t}\n\t\t\t\n\t\t},\n\t\t\n\t\tonMessage: (fnCallback) => {\n\t\t\t\n\t\t\tif (typeof fnCallback !== 'function') {\n\t\t\t\tthrow new Error('Callback provided to onMessage() handler is not a function');\n\t\t\t}\n\t\t\t\n\t\t\tconst oMessaging = firebase.messaging(oFirebase);\n\t\t\t\n\t\t\toMessaging.onMessage(function(oPayload) {\n\t\t\t\t\n\t\t\t\tlet oResponse = {};\n\t\t\t\t\n\t\t\t\tconsole.log('Broadcast notification received', oPayload);\n\t\t\t\t\n\t\t\t\tif (!oPayload.notification) {\n\t\t\t\t\tthrow new Error('Malformed broadcast notification received - missing notification');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!oPayload.notification.title) {\n\t\t\t\t\tthrow new Error('Missing title in notification message');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toResponse.title = oPayload.notification.title;\n\t\t\t\t\n\t\t\t\tif (oPayload.notification.body) {\n\t\t\t\t\toResponse.body = oPayload.notification.body;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (oPayload.notification.icon) {\n\t\t\t\t\toResponse.icon = oPayload.notification.icon;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!oPayload.data && !oPayload.data.url) {\n\t\t\t\t\tthrow new Error('Malformed broadcast notification - missing asset URL');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toResponse.url = oPayload.data.url;\n\t\t\t\t\n\t\t\t\tif (oPayload.data.asset_id) {\n\t\t\t\t\toResponse.asset_id = oPayload.data.asset_id;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfnCallback(oResponse);\n\t\t\t});\n\t\t},\n\t\n\t\tsubscribe: (sTopic = 'all') => {\n\t\t\t\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\n\t\t\t\tconst oMessaging = firebase.messaging(oFirebase);\n\t\t\t\t\n\t\t\t\tNotification.requestPermission().then(() => {\n\t\t\t\t\toMessaging.getToken().then((sToken) => {\n\t\t\t\t\t\tif (sToken) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet oReq = new Request('/tncms/messaging/subscribe/', {\n\t\t\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\t\t\ttoken: sToken,\n\t\t\t\t\t\t\t\t\ttopic: sTopic\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfetch(oReq).then((oRes) => {\n\t\t\t\t\t\t\t\tlet sContentType = oRes.headers.get('content-type');\n\t\t\t\t\t\t\t\tif (sContentType && sContentType.includes('application/json')) {\n\t\t\t\t\t\t\t\t\treturn oRes.json();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthrow new TypeError('Non-JSON response from server received');\n\t\t\t\t\t\t\t}).then((oRes) => {\n\t\t\t\t\t\t\t\tconsole.log('Subscribe from topic: ' + sTopic);\n\t\t\t\t\t\t\t\tresolve(oRes);\n\t\t\t\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\t\t\t\tconsole.log('Subscribe failed: ' + sErr);\n\t\t\t\t\t\t\t\treject(sErr);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\t\tconsole.debug('Token retrieval failed: ' + sErr);\n\t\t\t\t\t\treject(sErr);\n\t\t\t\t\t});\n\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\tconsole.debug('Request permission failed: ' + sErr);\n\t\t\t\t\treject(sErr);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\t\n\t\tunsubscribe: (sTopic) => {\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\n\t\t\t\tconst oMessaging = firebase.messaging(oFirebase);\n\t\t\t\t\n\t\t\t\tNotification.requestPermission().then(() => {\n\t\t\t\t\toMessaging.getToken().then((sToken) => {\n\t\t\t\t\t\tif (sToken) {\n\t\t\t\t\t\t\tlet oReq = new Request('/tncms/messaging/unsubscribe/', {\n\t\t\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\t\t\ttoken: sToken,\n\t\t\t\t\t\t\t\t\ttopic: sTopic\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfetch(oReq).then((oRes) => {\n\t\t\t\t\t\t\t\tlet sContentType = oRes.headers.get('content-type');\n\t\t\t\t\t\t\t\tif (sContentType && sContentType.includes('application/json')) {\n\t\t\t\t\t\t\t\t\treturn oRes.json();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthrow new TypeError('Non-JSON response from server received');\n\t\t\t\t\t\t\t}).then((oRes) => {\n\t\t\t\t\t\t\t\tconsole.log('Unsubscribe from topic: ' + sTopic);\n\t\t\t\t\t\t\t\tresolve(oRes);\n\t\t\t\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\t\t\t\tconsole.warn('Unsubscribe failed: ' + sErr);\n\t\t\t\t\t\t\t\treject(sErr);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\t\tconsole.debug('Token retrieval failed: ' + sErr);\n\t\t\t\t\t\treject(sErr);\n\t\t\t\t\t});\n\t\t\t\t}).catch((sErr) => {\n\t\t\t\t\tconsole.debug('Request permission failed: ' + sErr);\n\t\t\t\t\treject(sErr);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t});\n\t\t}\n\t\t\n\t}\n\t\n})();"], "mappings": "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", "names": ["oFirebase", "oConfig", "oWorker", "sError", "fnCallback", "oPayload", "oResponse", "sTopic", "resolve", "reject", "oMessaging", "sToken", "oReq", "oRes", "sContentType", "sErr"] }