diff --git a/.gitignore b/.gitignore index 4cf0a4c62..d0e817ccb 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ npm-debug.log* /platforms /plugins /www +/mobilefirst # Custom /android diff --git a/config.xml b/config.xml index b3e4a2084..fc70cef4e 100644 --- a/config.xml +++ b/config.xml @@ -101,14 +101,14 @@ 1109370933 - 0 + 4242109404 - 0 - 0 + 246097737 + 3914937917 @@ -134,9 +134,9 @@ 0 - 8.0.0.00-20210214-154410 + 8.0.0.00-20210308-063916 - + en diff --git a/google-services.json b/google-services.json new file mode 100644 index 000000000..0a455bcff --- /dev/null +++ b/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "800733765231", + "firebase_url": "https://gabinete-digital-2020.firebaseio.com", + "project_id": "gabinete-digital-2020", + "storage_bucket": "gabinete-digital-2020.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:800733765231:android:e7ffc0b310037d9f13779a", + "android_client_info": { + "package_name": "com.gpr.gabinetedigital" + } + }, + "oauth_client": [ + { + "client_id": "800733765231-92oa7ib62ob0pkouphb5i5sp01vkalid.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyD0pfW45DLoW6mqvZRklJdbfSTskW22Fok" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "800733765231-92oa7ib62ob0pkouphb5i5sp01vkalid.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 714e3288f..2f5db9be5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2039,6 +2039,21 @@ } } }, + "@ionic-native/fcm": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@ionic-native/fcm/-/fcm-5.32.0.tgz", + "integrity": "sha512-6BU5cbxILHe3LmL82qwTl80BCaDzZvkd2svQm3CQgwBrBuzzccYd4iSqpdkHXyLkb49fIRa22r3apc7EJ72cFg==", + "requires": { + "@types/cordova": "^0.0.34" + }, + "dependencies": { + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + } + } + }, "@ionic-native/file": { "version": "5.31.1", "resolved": "https://registry.npmjs.org/@ionic-native/file/-/file-5.31.1.tgz", @@ -4388,6 +4403,15 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bplist-creator": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", + "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", + "dev": true, + "requires": { + "stream-buffers": "~2.2.0" + } + }, "bplist-parser": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", @@ -5628,6 +5652,97 @@ } } }, + "cordova-ios": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-6.2.0.tgz", + "integrity": "sha512-sLjZg2QBI1SpQVwfe0MSn89YNVkBGLW9Q1vcFJBsqKBrhvoEOJ5Ytq0gwqdhgTOGzlwJUfxC6OHM3jcsRjtYrw==", + "dev": true, + "requires": { + "cordova-common": "^4.0.2", + "fs-extra": "^9.1.0", + "ios-sim": "^8.0.2", + "nopt": "^5.0.0", + "plist": "^3.0.1", + "semver": "^7.3.4", + "unorm": "^1.6.0", + "which": "^2.0.2", + "xcode": "^3.0.1", + "xml-escape": "^1.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cordova-plugin-androidx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-androidx/-/cordova-plugin-androidx-3.0.0.tgz", + "integrity": "sha512-niMnhcxKsu4/oKTUbL0jRAnh6/cdoIVxRxJqj3uEyv8CVOlAj1sWhX+9b1XiAo9+bejAM9BbA21YK0mChfbVTA==", + "dev": true + }, + "cordova-plugin-androidx-adapter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-androidx-adapter/-/cordova-plugin-androidx-adapter-1.1.3.tgz", + "integrity": "sha512-W1SImn0cCCvOSTSfWWp5TnanIQrSuh2Bch+dcZXIzEn0km3Qb7VryeAqHhgBQYwwzC5Ollk1DtUAk/AJSojuZA==", + "dev": true, + "requires": { + "q": "^1.5.1", + "recursive-readdir": "^2.2.2" + } + }, "cordova-plugin-camera": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/cordova-plugin-camera/-/cordova-plugin-camera-5.0.1.tgz", @@ -5645,6 +5760,15 @@ "integrity": "sha512-Jb3V72btxf3XHpkPQsGdyc8N6tVBYn1vsxSFj43fIz9vonJDUThYPCJJHqk6PX6N4dJw6I4FjxkpfCR4LDYMlw==", "dev": true }, + "cordova-plugin-fcm-with-dependecy-updated": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-fcm-with-dependecy-updated/-/cordova-plugin-fcm-with-dependecy-updated-7.8.0.tgz", + "integrity": "sha512-p2pbY1oqQ2UDbaWOWA2z84uMXmdDGYmK2O+mrufj1bZyoFodt7WqrtiB9oDnUuSSinMrdNFrupiWEDMSBSNVeQ==", + "dev": true, + "requires": { + "typescript": "^4.1.3" + } + }, "cordova-plugin-filepath": { "version": "1.5.8", "resolved": "https://registry.npmjs.org/cordova-plugin-filepath/-/cordova-plugin-filepath-1.5.8.tgz", @@ -6479,11 +6603,6 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -7024,7 +7143,8 @@ "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true }, "env-paths": { "version": "2.2.0", @@ -8252,11 +8372,6 @@ "minimalistic-assert": "^1.0.1" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", @@ -8325,63 +8440,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "html-to-text": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-7.0.0.tgz", - "integrity": "sha512-UR/WMSHRN8m+L7qQUhbSoxylwBovNPS+xURn/pHeJvbnemhyMiuPYBTBGqB6s8ajAARN5jzKfF0d3CY86VANpA==", - "requires": { - "deepmerge": "^4.2.2", - "he": "^1.2.0", - "htmlparser2": "^6.0.0", - "minimist": "^1.2.5" - }, - "dependencies": { - "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "domhandler": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.1.0.tgz", - "integrity": "sha512-/6/kmsGlMY4Tup/nGVutdrK9yQi4YjWVcVeoQmixpzjOUK1U7pQkvAPHBJeUxOgxF0J8f8lwCJSlCfD0V4CMGQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.1.tgz", - "integrity": "sha512-hO1XwHMGAthA/1KL7c83oip/6UWo3FlUNIuWiWKltoiQ5oCOiqths8KknvY2jpOohUoUgnwa/+Rm7UpwpSbY/Q==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.1.0" - } - }, - "htmlparser2": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz", - "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.4.4", - "entities": "^2.0.0" - } - } - } - }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -8900,6 +8958,11 @@ "ipaddr.js": "^1.9.0" } }, + "ionic-angular": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.9.10.tgz", + "integrity": "sha512-4nmGrdpu4Zy3SZwF0AaS/3gDrbFGU1dV+zn1eqInFgFj9q20N1cIITgvyIcoxUI/IoqYiohsJX1rGY5vB/HrhQ==" + }, "ionic-selectable": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/ionic-selectable/-/ionic-selectable-4.7.1.tgz", @@ -8929,6 +8992,35 @@ "@stencil/core": "^2.4.0" } }, + "ios-sim": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-8.0.2.tgz", + "integrity": "sha512-P7nEG771bfd+JoMRjnis1gpZOkjTUUxu+4Ek1Z+eoaEEoT9byllU9pxfQ8Df7hL3gSkIQxNwTSLhos2I8tWUQA==", + "dev": true, + "requires": { + "bplist-parser": "^0.0.6", + "nopt": "1.0.9", + "plist": "^3.0.1", + "simctl": "^2" + }, + "dependencies": { + "bplist-parser": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", + "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=", + "dev": true + }, + "nopt": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz", + "integrity": "sha1-O8DXy6e/sNWmdtvtfA6+SKT9RU4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -13930,6 +14022,15 @@ "picomatch": "^2.2.1" } }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -14819,11 +14920,27 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shelljs": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz", + "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=", + "dev": true + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "simctl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simctl/-/simctl-2.0.0.tgz", + "integrity": "sha512-5rB7rN4N3b0z0nFdy9eczVssXqrv2aAgdVRksPVqVoiDtvXmfzNvebp3EMdId2sAUzXIflarQlx4P0hjVQEzKQ==", + "dev": true, + "requires": { + "shelljs": "^0.2.6", + "tail": "^0.4.0" + } + }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -14854,6 +14971,17 @@ } } }, + "simple-plist": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", + "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", + "dev": true, + "requires": { + "bplist-creator": "0.0.8", + "bplist-parser": "0.2.0", + "plist": "^3.0.1" + } + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -15528,6 +15656,12 @@ "readable-stream": "^2.0.2" } }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "dev": true + }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -15888,6 +16022,12 @@ "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", "dev": true }, + "tail": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz", + "integrity": "sha1-0p3nJ1DMmdseBTr/E8NZ7PtxMAI=", + "dev": true + }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -16403,6 +16543,12 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, + "unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -16576,6 +16722,12 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "dev": true + }, "validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", @@ -17776,6 +17928,22 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==" }, + "xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "dev": true, + "requires": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + } + }, + "xml-escape": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz", + "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=", + "dev": true + }, "xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", diff --git a/package.json b/package.json index 637a324f2..cbe0e9b78 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@fullcalendar/interaction": "^5.3.0", "@ionic-native/camera": "^5.31.1", "@ionic-native/core": "^5.0.7", + "@ionic-native/fcm": "^5.32.0", "@ionic-native/file": "^5.30.0", "@ionic-native/file-path": "^5.30.0", "@ionic-native/http": "^5.31.1", @@ -50,7 +51,7 @@ "cordova-res": "^0.15.3", "cordova-sqlite-storage": "^5.1.0", "date-fns": "^2.17.0", - "html-to-text": "^7.0.0", + "ionic-angular": "^3.9.10", "ionic-selectable": "^4.7.1", "ionic2-alpha-scroll": "^2.0.1", "ionic2-calendar": "^0.6.6", @@ -78,8 +79,12 @@ "codelyzer": "^6.0.0", "cordova-android": "^9.0.0", "cordova-browser": "^6.0.0", + "cordova-ios": "^6.2.0", + "cordova-plugin-androidx": "^3.0.0", + "cordova-plugin-androidx-adapter": "^1.1.3", "cordova-plugin-compat": "^1.2.0", "cordova-plugin-device": "^2.0.2", + "cordova-plugin-fcm-with-dependecy-updated": "^7.8.0", "cordova-plugin-inappbrowser": "^4.0.0", "cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-webview": "^4.2.1", @@ -112,10 +117,21 @@ "cordova-plugin-camera": {}, "cordova-sqlite-storage": {}, "cordova-plugin-compat": {}, - "cordova-plugin-mfp": {} + "cordova-plugin-mfp": {}, + "cordova-plugin-androidx": {}, + "cordova-plugin-androidx-adapter": {}, + "cordova-plugin-fcm-with-dependecy-updated": { + "ANDROID_DEFAULT_NOTIFICATION_ICON": "@mipmap/ic_launcher", + "ANDROID_FCM_VERSION": "21.0.0", + "ANDROID_FIREBASE_BOM_VERSION": "26.0.0", + "ANDROID_GOOGLE_SERVICES_VERSION": "4.3.4", + "ANDROID_GRADLE_TOOLS_VERSION": "4.1.0", + "IOS_FIREBASE_MESSAGING_VERSION": "~> 7.4.0" + } }, "platforms": [ "browser", + "ios", "android" ] }, diff --git a/resources/android/xml/network_security_config.xml b/resources/android/xml/network_security_config.xml index de61259aa..bb865c5d2 100644 --- a/resources/android/xml/network_security_config.xml +++ b/resources/android/xml/network_security_config.xml @@ -2,5 +2,7 @@ localhost + 192.168.0.244 + gpr-dev-10.gabinetedigital.local diff --git a/src/app/app.module.ts b/src/app/app.module.ts index a1681cb40..3cc61ca02 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -29,6 +29,8 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MessagesPage } from './pages/chat/messages/messages.page'; +import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx' + @NgModule({ declarations: [AppComponent,MessagesPage,], @@ -55,6 +57,7 @@ import { MessagesPage } from './pages/chat/messages/messages.page'; //File, WebView, FilePath, + FCM ], bootstrap: [AppComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index 7bbf2f8d8..d6a45060a 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -1,11 +1,20 @@ +/// import { Component, OnInit, NgZone } from '@angular/core'; import { EventsService } from '../services/events.service'; import { Event } from '../models/event.model'; import { ProcessesService } from '../services/processes.service'; -import { ModalController } from '@ionic/angular'; +import { ModalController, AlertController, AnimationController } from '@ionic/angular'; +//import { AlertController } from 'ionic-angular'; /* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Modals } from '@capacitor/core'; */ import { Router } from '@angular/router'; +import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx'; +import { ViewEventPage } from '../pages/agenda/view-event/view-event.page'; +import { ApproveEventModalPage } from '../pages/agenda/approve-event-modal/approve-event-modal.page'; +import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page'; +import { PublicationDetailPage } from '../pages/publications/publication-detail/publication-detail.page'; +import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page'; + /* const { PushNotifications, LocalNotifications, LocalNotificationAction } = Plugins; */ @Component({ @@ -22,133 +31,163 @@ export class HomePage implements OnInit { totalExpediente = 0; profile: string; - constructor(private zone: NgZone,private eventService: EventsService, private processesbackend: ProcessesService, private router: Router, private modalController: ModalController) { - + adding: "intervenient" | "CC" = "intervenient"; + mobileComponent = { + showAddNewEvent: false, + showEditEvent: false, + showEventDetails: false, + showEventList: false, + transparentEventList: false, + transparentEventToApprove: false, + showEventToApprove: false, + showAttendees: false, + showAttendeeModal: false + } + eventToaprove: any = { + back: false, + serialNumber: "", + saveData: {} + } + selectedEvent: Event; + postEvent: any; + folderId: string; + + constructor(private zone: NgZone, private eventService: EventsService, private processesbackend: ProcessesService, private router: Router, private modalController: ModalController, public modalCtrl: AlertController, private fcm: FCM, private animationController: AnimationController,) { + router.events.subscribe((val) => { - document.querySelectorAll('ion-modal').forEach((e)=>e.remove()) + document.querySelectorAll('ion-modal').forEach((e) => e.remove()) }); - + + { + //this.folderId = this.navParams.get('folderId'); + } + } ngOnInit() { - //Initialize profile as mdgpr - let date = new Date(); - date.setMonth(date.getMonth() + 1); - let start = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds(); - let end = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" 23:59:59"; - - this.profile = "mdgpr"; - if (this.profile == "mdgpr") { - this.eventService.getAllMdEvents(start, end).subscribe(res => { - this.eventsList = res; - this.totalEvent = this.eventsList.length; - }); - } - else { - this.eventService.getAllPrEvents(start, end).subscribe(res => { - this.eventsList = res; - this.totalEvent = this.eventsList.length; - }); - - } - this.processesbackend.GetTasksList("Expediente", true).subscribe(result => { - this.totalExpediente = result; - }); + this.pushCordova() + /* //Initialize profile as mdgpr -/* - PushNotifications.addListener('registrationError', (error: any) => { - alert('Error on registration: ' + JSON.stringify(error)); - }); - - PushNotifications.addListener('pushNotificationReceived', notification => { - - //const isPushNotification = !!notification.title || !!notification.body; - - // if this is a push notification received when the app is in the foreground on Android - //if (isAndroid && isPushNotification) { - - // We schedule a LocalNotification 1 second later since Capacitor for Android doesn't show anything in this case - console.log('Recived: ', notification) - //} - }); - - - PushNotifications.addListener( - 'pushNotificationActionPerformed', - (notification: PushNotificationActionPerformed) => { - let service = notification.notification.data.Service; - let object = notification.notification.data.Object; - let idObject = notification.notification.data.IdObject; - - console.log('Complete Object: ', notification.notification ) - - console.log('Service: ', service); - console.log('Object: ', object); - console.log('idObject: ', idObject); - - if (service === "agenda") { - //this.router.navigate(['/home/', service, idObject, 'home']); - this.viewEventDetail(idObject) - } - else if (service === "gabinete-digital" && object === "expediente") { - this.viewExpedientDetail(idObject) - } - else if (service === "gabinete-digital" && object === "event-list") { - // this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', idObject])}) - this.openApproveModal(idObject); - } - else if (service === "accoes" && object === "accao") { - this.viewPublications(idObject) - } - else if (service === "accoes" && object === "publicacao") { - this.viewPublicationDetail(idObject) - } - - }, - ); */ + let date = new Date(); + date.setMonth(date.getMonth() + 1); + let start = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds(); + let end = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" 23:59:59"; + + this.profile = "mdgpr"; + if (this.profile == "mdgpr") { + this.eventService.getAllMdEvents(start, end).subscribe(res => { + this.eventsList = res; + this.totalEvent = this.eventsList.length; + }); + } + else { + this.eventService.getAllPrEvents(start, end).subscribe(res => { + this.eventsList = res; + this.totalEvent = this.eventsList.length; + }); + + } + this.processesbackend.GetTasksList("Expediente", true).subscribe(result => { + this.totalExpediente = result; + }); + + */ } - /* mobileFirstTest() { - this.zone.run(() => { - alert("Hello MobileFirst"); - alert("Connecting to Server..."); + pushCordova() { + + this.fcm.onNotification().subscribe(data => { + this.viewEventDetail(data.idObject) + if (data.click_action) { + console.log("Received in background: ", data); + + if (data.service === "agenda") { + //this.router.navigate(['/home/', service, idObject, 'home']); + this.viewEventDetail(data.idObject) + } + else if (data.service === "gabinete-digital" && data.object === "expediente") { + this.viewExpedientDetail(data.idObject) + } + else if (data.service === "gabinete-digital" && data.object === "event-list") { + // this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', idObject])}) + this.openApproveModal(data.idObject); + } + else if (data.service === "accoes" && data.object === "accao") { + //this.viewPublications(data.idObject) + alert(data.idObject) + } + else if (data.service === "accoes" && data.object === "publicacao") { + this.viewPublicationDetail(data.idObject) + } + + } else { + console.log("Received in foreground: ", data); + if (data.service === "agenda") { + //this.router.navigate(['/home/', service, idObject, 'home']); + this.viewEventDetail(data.idObject) + } + else if (data.service === "gabinete-digital" && data.object === "expediente") { + this.viewExpedientDetail(data.idObject) + } + else if (data.service === "gabinete-digital" && data.object === "event-list") { + // this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', idObject])}) + this.openApproveModal(data.idObject); + } + else if (data.service === "accoes" && data.object === "accao") { + this.viewPublications(data.idObject) + } + else if (data.service === "accoes" && data.object === "publicacao") { + this.viewPublicationDetail(data.idObject) + } + }; }); - WLAuthorizationManager.obtainAccessToken("").then( - (token) => { - console.log('--> pingMFP(): Success ', token); - this.zone.run(() => { - alert("Yay!"); - alert("Connected to MobileFirst Server"); - }); - var resourceRequest = new WLResourceRequest("/adapters/javaAdapter/resource/greet/", - WLResourceRequest.GET - ); - resourceRequest.setQueryParameter("name", "world"); - resourceRequest.send().then( - (response) => { - // Will display "Hello world" in an alert dialog. - alert("Success: " + response.responseText); - }, - (error) => { - alert("Failure: " + JSON.stringify(error)); - } - ); - }, (error) => { - console.log('--> pingMFP(): failure ', error.responseText); - this.zone.run(() => { - alert("Bummer..."); - alert("Failed to connect to MobileFirst Server"); - }); + this.fcm.onTokenRefresh().subscribe(token => { + // Register your new token in your back-end if you want + // backend.registerToken(token); + }); + + this.ubscribeToTopic() + this.getToken() + + } + + ubscribeToTopic() { + this.fcm.subscribeToTopic('enappd'); + } + getToken() { + this.fcm.getToken().then(token => { + console.log('token: ', token) + // Register your new token in your back-end if you want + // backend.registerToken(token); + }); + } + + async viewEventDetail(eventId: any) { + console.log(this.profile); + + const modal = await this.modalController.create({ + component: ViewEventPage, + componentProps: { + eventId: eventId, + adding: this.adding + }, + cssClass: 'modal modal-desktop', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then((res) => { + if (res) { + //this.viewEventDetailDismiss(res); } - ); - } */ + }); + } - /* async openApproveModal(eventSerialNumber){ + async openApproveModal(eventSerialNumber) { const modal = await this.modalController.create({ component: ApproveEventModalPage, - componentProps:{ + componentProps: { serialNumber: eventSerialNumber, }, cssClass: 'cal-modal', @@ -157,46 +196,17 @@ export class HomePage implements OnInit { await modal.present(); modal.onDidDismiss(); - } */ - - /* async viewEventDetail(eventId:any) { - console.log(this.profile); - - const modal = await this.modalController.create({ - component: ViewEventPage, - componentProps:{ - eventId: eventId, - }, - cssClass: 'modal', - backdropDismiss: false - }); - await modal.present(); - modal.onDidDismiss(); - } */ - - /* async viewExpedientDetail(serialNumber:any) { - console.log(this.profile); - - const modal = await this.modalController.create({ - component: ViewEventPage, - componentProps: { - eventId: eventId, - }, - cssClass: 'modal', - backdropDismiss: false - }); - await modal.present(); - modal.onDidDismiss().then((res) => { - if (res) { - console.log(res); - //this.loadRangeEvents(this.rangeStartDate, this.rangeEndDate); - } - }); } async viewExpedientDetail(serialNumber: any) { - console.log(this.profile); - console.log("Expediente id: ", serialNumber); + let classs; + if (window.innerWidth <= 800) { + classs = 'modal' + } else { + classs = 'modal modal-desktop showAsideOptions' + } + /* console.log(this.profile); + console.log(serialNumber); */ const modal = await this.modalController.create({ component: ExpedienteDetailPage, @@ -204,43 +214,75 @@ export class HomePage implements OnInit { serialNumber: serialNumber, profile: this.profile, }, - cssClass: 'modal', - backdropDismiss: false + cssClass: classs, }); await modal.present(); - modal.onDidDismiss(); - } */ + modal.onDidDismiss().then((res) => { + if (res) { + console.log(res); + } + }); + } - - - /* async viewPublicationDetail(folderId) { + async viewPublicationDetail(publicationId: string) { const modal = await this.modalController.create({ component: PublicationDetailPage, componentProps: { - folderId: folderId, + publicationId: publicationId, + folderId: this.folderId, }, cssClass: 'publication-detail', backdropDismiss: false }); await modal.present(); - modal.onDidDismiss(); - } */ + modal.onDidDismiss().then(() => { + //this.getPublications(); + }); + } + + + async viewPublications(folderId) { + + const enterAnimation = (baseEl: any) => { + const backdropAnimation = this.animationController.create() + .addElement(baseEl.querySelector('ion-backdrop')!) + .fromTo('opacity', '0.01', 'var(--backdrop-opacity)'); + + const wrapperAnimation = this.animationController.create() + .addElement(baseEl.querySelector('.modal-wrapper')!) + .keyframes([ + { offset: 0, opacity: '0', transform: 'scale(0)' }, + { offset: 1, opacity: '0.99', transform: 'scale(1)' } + ]); + + return this.animationController.create() + .addElement(baseEl) + .easing('ease-out') + .duration(500) + .addAnimation([backdropAnimation, wrapperAnimation]); + } + + const leaveAnimation = (baseEl: any) => { + return enterAnimation(baseEl).direction('reverse'); + } - /* async viewPublications(folderId) { const modal = await this.modalController.create({ component: ViewPublicationsPage, enterAnimation, leaveAnimation, componentProps: { - item: folderId, + folderId: folderId, }, cssClass: 'new-action', backdropDismiss: false }); await modal.present(); modal.onDidDismiss(); - } */ + } + + + diff --git a/src/assets/js/index.js b/src/assets/js/index.js new file mode 100644 index 000000000..a2b0dfc2d --- /dev/null +++ b/src/assets/js/index.js @@ -0,0 +1,22 @@ +function wlCommonInit() { + + WLAuthorizationManager.obtainAccessToken() + + .then( + + function (accessToken) { + alert('Index sucsse: ', accessToken) + + }, + + function (error) { + alert('Index error: ', error) + + + } + + ); + + + +} \ No newline at end of file diff --git a/src/assets/js/wldirectudpate.js b/src/assets/js/wldirectudpate.js new file mode 100644 index 000000000..9d0ae6fb0 --- /dev/null +++ b/src/assets/js/wldirectudpate.js @@ -0,0 +1,22 @@ +function wlCommonInit(){ + // Override the default Direct Update interface. + + //uncomment below function to get custom DU + wl_directUpdateChallengeHandler.handleDirectUpdate = function(directUpdateData, directUpdateContext) { + // Create a dialog. + navigator.notification.confirm( + 'Actualização Disponivel', + // Handle dialog buttons. + function(buttonIndex) { + if (buttonIndex == 1) { + directUpdateContext.start(); + } else { + wl_directUpdateChallengeHandler.submitFailure(); + } + }, + 'ctualização Disponivel', + ['Actualizar'] + ); + }; + +} \ No newline at end of file diff --git a/src/index.html b/src/index.html index 624ff63ae..ae8d2c052 100644 --- a/src/index.html +++ b/src/index.html @@ -7,6 +7,9 @@ + + +