diff --git a/ng6-seed/angular.json b/ng6-seed/angular.json index 081ca19ac..1e7a7c049 100755 --- a/ng6-seed/angular.json +++ b/ng6-seed/angular.json @@ -18,7 +18,9 @@ "polyfills": "src/polyfills.ts", "assets": [ "src/assets", - "src/favicon.ico" + "src/favicon.ico", + "src/firebase-messaging-sw.js", + "src/manifest.json" ], "styles": [ "node_modules/quill/dist/quill.snow.css", diff --git a/ng6-seed/package-lock.json b/ng6-seed/package-lock.json index 42f212434..983fcdf1b 100755 --- a/ng6-seed/package-lock.json +++ b/ng6-seed/package-lock.json @@ -395,6 +395,11 @@ "tslib": "^1.9.0" } }, + "@angular/fire": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-5.2.1.tgz", + "integrity": "sha512-pS4zWhLLANzMbYVIKNtebDQKhm9+KANUDvDV6DwKP24XHzkZdvazKe1HC6uXWlf7QmDxSPFleCSBkn0tnQQzdQ==" + }, "@angular/flex-layout": { "version": "6.0.0-beta.18", "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-6.0.0-beta.18.tgz", @@ -460,6 +465,209 @@ "tslib": "^1.9.0" } }, + "@firebase/app": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.4.8.tgz", + "integrity": "sha512-z79jALVEOA6TxNXd6DHECwFZsg9njZRoyQoFYDg02FVR1WgJ+ezlPCfECiG5lO5tsXcKuJNyuwc6I0Pb8DKizg==", + "requires": { + "@firebase/app-types": "0.4.0", + "@firebase/logger": "0.1.17", + "@firebase/util": "0.2.20", + "dom-storage": "2.1.0", + "tslib": "1.9.3", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.4.0.tgz", + "integrity": "sha512-8erNMHc0V26gA6Nj4W9laVrQrXHsj9K2TEM7eL2IQogGSHLL4vet3UNekYfcGQ2cjfvwUjMzd+BNS/8S7GnfiA==" + }, + "@firebase/auth": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.11.3.tgz", + "integrity": "sha512-MFjnQGzZM89pqQItHNf8QPbCj0PjaFomd3JGUpnyxVwMyuovsRxVmBofi8mq/eiwzy7qwvRHFB8ngevWkkdAMA==", + "requires": { + "@firebase/auth-types": "0.7.0" + } + }, + "@firebase/auth-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.7.0.tgz", + "integrity": "sha512-QEG9azYwssGWcb4NaKFHe3Piez0SG46nRlu76HM4/ob0sjjNpNTY1Z5C3IoeJYknp2kMzuQi0TTW8tjEgkUAUA==" + }, + "@firebase/database": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.4.6.tgz", + "integrity": "sha512-EpH5JUybuebVzUK1Z1wQ33Hjs8ZJbM6pyAlHDgWcqe4c7hNsHK8QNIxbQXHVfjCtu+EBneFM3MlYF5cWka5Kzw==", + "requires": { + "@firebase/database-types": "0.4.0", + "@firebase/logger": "0.1.17", + "@firebase/util": "0.2.20", + "faye-websocket": "0.11.3", + "tslib": "1.9.3" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "@firebase/database-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.0.tgz", + "integrity": "sha512-2piRYW7t+2s/P1NPpcI/3+8Y5l2WnJhm9KACoXW5zmoAPlya8R1aEaR2dNHLNePTMHdg04miEDD9fEz4xUqzZA==" + }, + "@firebase/firestore": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.4.1.tgz", + "integrity": "sha512-h3rRHkrgJvxChKjbzLj3vv0vtBKG5yQ/4cet82+RpMJ3QiSem2ipibJMjLYLNMdn9sYiLsighwBlopFmV4+5Jw==", + "requires": { + "@firebase/firestore-types": "1.4.1", + "@firebase/logger": "0.1.17", + "@firebase/webchannel-wrapper": "0.2.21", + "@grpc/proto-loader": "^0.5.0", + "grpc": "1.20.3", + "tslib": "1.9.3" + } + }, + "@firebase/firestore-types": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.4.1.tgz", + "integrity": "sha512-F+mpOAzA+Xk6rZ2KRtRpqp3fULLDaFGWPyTBZthHkgq8ku3Q/C/KGfWUNOy38M65Mb0WM5zQcOvNkYt/o+YQjA==" + }, + "@firebase/functions": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.10.tgz", + "integrity": "sha512-agxHXkKCacJtThM2gctr6sKhUH3A3t9+YcM78SnEWdN8ubE4F8MaSsR0oPhpmFHcwJKEs+q5JieDmELTkRGjuw==", + "requires": { + "@firebase/functions-types": "0.3.6", + "@firebase/messaging-types": "0.3.0", + "isomorphic-fetch": "2.2.1", + "tslib": "1.9.3" + } + }, + "@firebase/functions-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.6.tgz", + "integrity": "sha512-OIWXsaUBNSA7ifkrTFKwNMDgs1DCk6dC7xwofRBIrJP3ZxLPxRV79KyKKqcThe5Ie6JeG6oyFAIK5CMTYa5Ebg==" + }, + "@firebase/installations": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.1.7.tgz", + "integrity": "sha512-+OxqxtiOS7fJaVNc886IurARFrcVK16DnWdrXn6XdIEE373OBo0Mh+PWyESU9uFh6Yx6h2z5a/b4IpVRT4QgGA==", + "requires": { + "@firebase/installations-types": "0.1.1", + "@firebase/util": "0.2.20", + "idb": "3.0.2", + "tslib": "1.9.3" + } + }, + "@firebase/installations-types": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.1.1.tgz", + "integrity": "sha512-M+plQIOt6p+/j/ExUgsfXe1JFAKymhBU0K3+cp7hzj52vLSpklOqNJi4LkFl41pgRFPZeKf7MrTkMhVowg3Ukw==" + }, + "@firebase/logger": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.17.tgz", + "integrity": "sha512-vCuurlKhvEjN5SGbIGfHhVhMsRM6RknAjbEKbT6CgmD6fUnNH2oE1MwbafBK3nLc7i9sQFwZUU/fi4P0Nu/McQ==" + }, + "@firebase/messaging": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.4.3.tgz", + "integrity": "sha512-5X+ne6m9oK/CXvRecq+5WKzAoIO9/islwfr42QZEvtcGBGcBxezEA+4+kLbY1GekwVIblk/WMIquQLCdxwK9cg==", + "requires": { + "@firebase/messaging-types": "0.3.0", + "@firebase/util": "0.2.20", + "tslib": "1.9.3" + } + }, + "@firebase/messaging-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.3.0.tgz", + "integrity": "sha512-xCFMPy4C+WXFcshTnQEyddmqM6ZkzpTeJq7RUhrAvUnjlfFzOB92HOfKtjT6IpNk5W+jNbTTrqgrgReuPXsM2A==" + }, + "@firebase/performance": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.2.8.tgz", + "integrity": "sha512-wJdGUx4QabwbWTy83B3B61XO5eAB0OI+bQ4tCTl5Fz2H2B/oGw6k1sHSP8pf8wjUn413VtwbM2IODuI4Q23cUQ==", + "requires": { + "@firebase/installations": "0.1.7", + "@firebase/logger": "0.1.17", + "@firebase/performance-types": "0.0.2", + "@firebase/util": "0.2.20", + "tslib": "1.9.3" + } + }, + "@firebase/performance-types": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.2.tgz", + "integrity": "sha512-nIZMVqc3tAGqRmNUU43yQ/WKY5Sypysa4Xg6J5F0q+QqxPpgwDh5xiPLEvD+/k6rswVTYQ9tsuIWqcJNpbA9zw==" + }, + "@firebase/polyfill": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.14.tgz", + "integrity": "sha512-MnJRIS2iqGfQ4SGFFZ441B1VBHgmHiGznpA3gN+FzSdqg9di4sIHw2gM0VOGS6e7jRJxYeyHL3rwzzU43kP+UQ==", + "requires": { + "core-js": "3.0.1", + "promise-polyfill": "8.1.0", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/storage": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.3.tgz", + "integrity": "sha512-rfXodhZr+90Z1MsW31ys2j93rbnvBfi7yd7Opjy7/gwwk4wKHQ7jN7i0WRylspDjqthW0zaDWLqoYzKM+6p4Dg==", + "requires": { + "@firebase/storage-types": "0.3.1", + "tslib": "1.9.3" + } + }, + "@firebase/storage-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.1.tgz", + "integrity": "sha512-Vuf7/nSTWrvPmoZiwfQjI3ThqAKQXVLpozhoGVxoGM1qtITsnw+Oe/Fa+CW1/ZkelVBcy8ZWEB2aaHXaDu3h+Q==" + }, + "@firebase/util": { + "version": "0.2.20", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.20.tgz", + "integrity": "sha512-Cu5T7RFV54eZdToPXcRKwn7rB0hImbkvLdAmno6mKkoV5s0xDgo9K0PBvftqp8Gg2aDR/B5p+ZjR6xDiSQ42sA==", + "requires": { + "tslib": "1.9.3" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.2.21", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.21.tgz", + "integrity": "sha512-eL4xPPjTBceYKa27tN3SahSD/7k5ioKFGeZZZX67+aLuxxFts2eTCcotRAeKcjGu1xTz7GnWUkMsj4NZZTIGXg==" + }, + "@grpc/proto-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.1.tgz", + "integrity": "sha512-3y0FhacYAwWvyXshH18eDkUI40wT/uGio7MAegzY8lO5+wVsc19+1A7T0pPptae4kl7bdITL+0cHpnAPmryBjQ==", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, "@ngtools/webpack": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.8.tgz", @@ -487,6 +695,60 @@ "tslib": "^1.9.0" } }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, "@schematics/angular": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.8.1.tgz", @@ -607,6 +869,11 @@ "integrity": "sha512-3LoWmwkQupeIlamsQRwKX+hlG7ZBTK7o1Cwmtaf9ME5Vr3YX1nKNmE6wBUBy5vD9HqDFCIN3bZ903zvjeRZYnw==", "dev": true }, + "@types/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" + }, "@types/node": { "version": "8.10.29", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz", @@ -1188,6 +1455,15 @@ "dev": true, "optional": true }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -1870,6 +2146,14 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -2219,6 +2503,11 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, "combine-lists": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", @@ -3322,6 +3611,11 @@ } } }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -3428,6 +3722,14 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -4201,6 +4503,25 @@ "locate-path": "^2.0.0" } }, + "firebase": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-6.2.3.tgz", + "integrity": "sha512-frfidsmmph0Z55VH9AdwvfA/pYqmYzsurYOxKCln90eMrZSuS3JUwseVTxbQ9CevhnZepyg/bdUhOpWMxQz+Pw==", + "requires": { + "@firebase/app": "0.4.8", + "@firebase/app-types": "0.4.0", + "@firebase/auth": "0.11.3", + "@firebase/database": "0.4.6", + "@firebase/firestore": "1.4.1", + "@firebase/functions": "0.4.10", + "@firebase/installations": "0.1.7", + "@firebase/messaging": "0.4.3", + "@firebase/performance": "0.2.8", + "@firebase/polyfill": "0.3.14", + "@firebase/storage": "0.3.3", + "@firebase/util": "0.2.20" + } + }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -4348,7 +4669,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4583,7 +4905,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -4819,6 +5140,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4862,7 +5184,8 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", @@ -5053,6 +5376,462 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "grpc": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.20.3.tgz", + "integrity": "sha512-GsEsi0NVj6usS/xor8pF/xDbDiwZQR59aZl5NUZ59Sy2bdPQFZ3UePr5wevZjHboirRCIQCKRI1cCgvSWUe2ag==", + "requires": { + "lodash.camelcase": "^4.3.0", + "lodash.clone": "^4.5.0", + "nan": "^2.13.2", + "node-pre-gyp": "^0.13.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "needle": { + "version": "2.3.1", + "bundled": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true + } + } + }, + "node-pre-gyp": { + "version": "0.13.0", + "bundled": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.3", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.7.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.0.3", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", @@ -5395,8 +6174,7 @@ "http-parser-js": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", - "dev": true + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" }, "http-proxy": { "version": "1.17.0", @@ -5472,6 +6250,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", @@ -5904,8 +6687,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { "version": "1.0.2", @@ -5963,6 +6745,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -6711,6 +7502,16 @@ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -6784,8 +7585,7 @@ "long": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" }, "loose-envify": { "version": "1.4.0", @@ -7316,6 +8116,15 @@ "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", @@ -7733,6 +8542,11 @@ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -8224,6 +9038,43 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise-polyfill": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.0.tgz", + "integrity": "sha512-OzSf6gcCUQ01byV4BgwyUCswlaQQ6gzXc23aLQWhicvfX9kfsUiUhgt3CCQej8jDnl8/PhGF31JdHX2/MzF3WA==" + }, + "protobufjs": { + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.10.tgz", + "integrity": "sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q==" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + } + } + }, "protractor": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz", @@ -11059,7 +11910,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, "requires": { "http-parser-js": ">=0.4.0", "websocket-extensions": ">=0.1.1" @@ -11068,8 +11918,12 @@ "websocket-extensions": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" }, "when": { "version": "3.6.4", @@ -11098,6 +11952,11 @@ "string-width": "^1.0.2 || 2" } }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/ng6-seed/package.json b/ng6-seed/package.json index b4941516d..23d6d10a5 100755 --- a/ng6-seed/package.json +++ b/ng6-seed/package.json @@ -19,6 +19,7 @@ "@angular/common": "^6.0.0-rc.5", "@angular/compiler": "^6.0.0-rc.5", "@angular/core": "^6.0.0-rc.5", + "@angular/fire": "^5.2.1", "@angular/flex-layout": "^6.0.0-beta.18", "@angular/forms": "^6.0.0-rc.5", "@angular/http": "^6.0.0-rc.5", @@ -42,6 +43,7 @@ "d3": "^4.9.1", "dragula": "3.7.2", "file-saver": "^2.0.0", + "firebase": "^6.2.3", "font-awesome": "4.7.0", "hammerjs": "2.0.8", "intl": "^1.2.4", diff --git a/ng6-seed/src/app/app.component.ts b/ng6-seed/src/app/app.component.ts index 3e2000058..bd80a9c51 100755 --- a/ng6-seed/src/app/app.component.ts +++ b/ng6-seed/src/app/app.component.ts @@ -1,16 +1,31 @@ import { Component } from '@angular/core'; +import { MessagingService } from "./shared/messaging.service"; import { TranslateService} from '@ngx-translate/core'; +import { AwsService } from './AwsService/aws.service'; @Component({ selector: 'app-root', template: '' }) export class AppComponent { - constructor(translate: TranslateService) { + message; + + + constructor(translate: TranslateService, + private messagingService: MessagingService, + public aws: AwsService) { translate.addLangs(['en', 'fr']); translate.setDefaultLang('en'); const browserLang: string = translate.getBrowserLang(); translate.use(browserLang.match(/en|fr/) ? browserLang : 'en'); } + + ngOnInit() { + const userId = this.aws.getlocale(); + this.messagingService.requestPermission(userId) + this.messagingService.receiveMessage() + this.message = this.messagingService.currentMessage + } + } diff --git a/ng6-seed/src/app/app.module.ts b/ng6-seed/src/app/app.module.ts index 6fd81dd8d..9de7ff586 100755 --- a/ng6-seed/src/app/app.module.ts +++ b/ng6-seed/src/app/app.module.ts @@ -47,6 +47,14 @@ import { AuthGuard } from './_guard/auth.guard'; import { RoleMenuItemsPipe } from './layouts/role-menu-items.pipe'; import { ResizableModule } from 'angular-resizable-element'; +import { AngularFireMessagingModule } from '@angular/fire/messaging'; +import { AngularFireDatabaseModule } from '@angular/fire/database'; +import { AngularFireAuthModule } from '@angular/fire/auth'; +import { AngularFireModule } from '@angular/fire'; +import { MessagingService } from './shared/messaging.service'; +import { environment } from '../environments/environment'; +import { AsyncPipe } from '../../node_modules/@angular/common'; + export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); } @@ -97,6 +105,10 @@ const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = { } }), FlexLayoutModule, + AngularFireDatabaseModule, + AngularFireAuthModule, + AngularFireMessagingModule, + AngularFireModule.initializeApp(environment.firebase), ], providers: [ { @@ -113,7 +125,8 @@ const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = { provide:HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true - } + }, + MessagingService, AsyncPipe ], entryComponents: [NewPasswordDialog,ForgotPass,ChangePasswordDialog], bootstrap: [AppComponent] diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/edit-pd-applicant/edit-pd-applicant.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/edit-pd-applicant/edit-pd-applicant.component.html index 3342f7539..ea02c97f6 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/edit-pd-applicant/edit-pd-applicant.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/edit-pd-applicant/edit-pd-applicant.component.html @@ -108,8 +108,8 @@ - - + + diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/address/address.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/address/address.component.html index 65753b607..8319efc2e 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/address/address.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/address/address.component.html @@ -113,7 +113,7 @@ diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/loan-details/loan-details.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/loan-details/loan-details.component.html index f03c3a9ed..080d8eae1 100755 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/loan-details/loan-details.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/loan-details/loan-details.component.html @@ -59,11 +59,11 @@ - Select - Yes, Disclosed - No, Not Disclosed + Disclosed + Not Disclosed diff --git a/ng6-seed/src/app/shared/messaging.service.ts b/ng6-seed/src/app/shared/messaging.service.ts new file mode 100644 index 000000000..9571a027b --- /dev/null +++ b/ng6-seed/src/app/shared/messaging.service.ts @@ -0,0 +1,69 @@ +import { Injectable } from '@angular/core'; +import { AngularFireDatabase } from '@angular/fire/database'; +import { AngularFireAuth } from '@angular/fire/auth'; +import { AngularFireMessaging } from '@angular/fire/messaging'; +import { mergeMapTo } from 'rxjs/operators'; +import { take } from 'rxjs/operators'; +import { BehaviorSubject } from 'rxjs' + +@Injectable() +export class MessagingService { + + currentMessage = new BehaviorSubject(null); + + constructor( + private angularFireDB: AngularFireDatabase, + private angularFireAuth: AngularFireAuth, + private angularFireMessaging: AngularFireMessaging) { + this.angularFireMessaging.messaging.subscribe( + (_messaging) => { + _messaging.onMessage = _messaging.onMessage.bind(_messaging); + _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging); + } + ) + } + + /** + * update token in firebase database + * + * @param userId userId as a key + * @param token token as a value + */ + updateToken(userId, token) { + // we can change this function to request our backend service + this.angularFireAuth.authState.pipe(take(1)).subscribe( + () => { + const data = {}; + data[userId] = token + this.angularFireDB.object('fcmTokens/').update(data) + }) + } + + /** + * request permission for notification from firebase cloud messaging + * + * @param userId userId + */ + requestPermission(userId) { + this.angularFireMessaging.requestToken.subscribe( + (token) => { + // console.log(token); + this.updateToken(userId, token); + }, + (err) => { + console.error('Unable to get permission to notify.', err); + } + ); + } + + /** + * hook method when new notification received in foreground + */ + receiveMessage() { + this.angularFireMessaging.messages.subscribe( + (payload) => { + // console.log("new message received. ", payload); + this.currentMessage.next(payload); + }) + } +} diff --git a/ng6-seed/src/environments/environment.prod.ts b/ng6-seed/src/environments/environment.prod.ts index 8bf584561..1f1a874d9 100755 --- a/ng6-seed/src/environments/environment.prod.ts +++ b/ng6-seed/src/environments/environment.prod.ts @@ -1,4 +1,13 @@ export const environment = { production: true, - apiEndpoint: 'https://ssa.sineedge.com/sparqtest/api/' + apiEndpoint: 'https://ssa.sineedge.com/sparqtest/api/', + firebase: { + apiKey: "AIzaSyCzmyM0WJ0wdLf8UsYoZ4GreICimyt7SEk", + authDomain: "ssa-push.firebaseapp.com", + databaseURL: "https://ssa-push.firebaseio.com", + projectId: "ssa-push", + storageBucket: "ssa-push.appspot.com", + messagingSenderId: "627754063571", + appId: "1:627754063571:web:8cfa56d80607267b" + } }; \ No newline at end of file diff --git a/ng6-seed/src/environments/environment.ts b/ng6-seed/src/environments/environment.ts index 67aab72f9..ca3b7c402 100755 --- a/ng6-seed/src/environments/environment.ts +++ b/ng6-seed/src/environments/environment.ts @@ -5,6 +5,16 @@ export const environment = { production: false, + apiEndpoint: 'https://ssa.sineedge.com/sparqapi/api/', + firebase: { + apiKey: "AIzaSyCzmyM0WJ0wdLf8UsYoZ4GreICimyt7SEk", + authDomain: "ssa-push.firebaseapp.com", + databaseURL: "https://ssa-push.firebaseio.com", + projectId: "ssa-push", + storageBucket: "ssa-push.appspot.com", + messagingSenderId: "627754063571", + appId: "1:627754063571:web:8cfa56d80607267b" + }, region: 'ap-south-1', @@ -25,5 +35,5 @@ export const environment = { s3_endpoint: '', accessToken:'', //apiUrl:'http://localhost/sparqapi/api/' - apiEndpoint: 'https://ssa.sineedge.com/sparqapi/api/' + }; diff --git a/ng6-seed/src/firebase-messaging-sw.js b/ng6-seed/src/firebase-messaging-sw.js new file mode 100644 index 000000000..3d365e41a --- /dev/null +++ b/ng6-seed/src/firebase-messaging-sw.js @@ -0,0 +1,15 @@ +// Give the service worker access to Firebase Messaging. +// Note that you can only use Firebase Messaging here, other Firebase libraries +// are not available in the service worker. +importScripts('https://www.gstatic.com/firebasejs/5.5.0/firebase-app.js'); +importScripts('https://www.gstatic.com/firebasejs/5.5.0/firebase-messaging.js'); + +// Initialize the Firebase app in the service worker by passing in the +// messagingSenderId. +firebase.initializeApp({ + 'messagingSenderId': '627754063571' +}); + +// Retrieve an instance of Firebase Messaging so that it can handle background +// messages. +const messaging = firebase.messaging(); \ No newline at end of file diff --git a/ng6-seed/src/index.html b/ng6-seed/src/index.html index 5a5db1973..963d27c67 100755 --- a/ng6-seed/src/index.html +++ b/ng6-seed/src/index.html @@ -8,6 +8,7 @@ + PD Genie diff --git a/ng6-seed/src/manifest.json b/ng6-seed/src/manifest.json new file mode 100644 index 000000000..2d153ecdf --- /dev/null +++ b/ng6-seed/src/manifest.json @@ -0,0 +1,3 @@ +{ + "gcm_sender_id": "103953800507" + } \ No newline at end of file