Merge pull request #3202 from dpalou/MOBILE-3833

Mobile 3833
main
Pau Ferrer Ocaña 2022-03-24 11:29:30 +01:00 committed by GitHub
commit 275111e8ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 345 additions and 328 deletions

349
package-lock.json generated
View File

@ -9,40 +9,40 @@
"version": "4.0.0-dev", "version": "4.0.0-dev",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@angular/animations": "~10.0.14", "@angular/animations": "10.0.14",
"@angular/common": "~10.0.14", "@angular/common": "10.0.14",
"@angular/core": "~10.0.14", "@angular/core": "10.0.14",
"@angular/forms": "~10.0.14", "@angular/forms": "10.0.14",
"@angular/platform-browser": "~10.0.14", "@angular/platform-browser": "10.0.14",
"@angular/platform-browser-dynamic": "~10.0.14", "@angular/platform-browser-dynamic": "10.0.14",
"@angular/router": "~10.0.14", "@angular/router": "10.0.14",
"@ionic-native/badge": "^5.33.0", "@ionic-native/badge": "5.33.0",
"@ionic-native/camera": "^5.33.0", "@ionic-native/camera": "5.33.0",
"@ionic-native/chooser": "^5.33.0", "@ionic-native/chooser": "5.33.0",
"@ionic-native/clipboard": "^5.33.0", "@ionic-native/clipboard": "5.33.0",
"@ionic-native/core": "^5.33.0", "@ionic-native/core": "5.33.0",
"@ionic-native/device": "^5.33.0", "@ionic-native/device": "5.33.0",
"@ionic-native/diagnostic": "^5.33.0", "@ionic-native/diagnostic": "5.33.0",
"@ionic-native/file": "^5.33.0", "@ionic-native/file": "5.33.0",
"@ionic-native/file-opener": "^5.33.0", "@ionic-native/file-opener": "5.33.0",
"@ionic-native/file-transfer": "^5.33.0", "@ionic-native/file-transfer": "5.33.0",
"@ionic-native/geolocation": "^5.33.0", "@ionic-native/geolocation": "5.33.0",
"@ionic-native/http": "^5.33.0", "@ionic-native/http": "5.33.0",
"@ionic-native/in-app-browser": "^5.33.0", "@ionic-native/in-app-browser": "5.33.0",
"@ionic-native/ionic-webview": "^5.33.0", "@ionic-native/ionic-webview": "5.33.0",
"@ionic-native/keyboard": "^5.33.0", "@ionic-native/keyboard": "5.33.0",
"@ionic-native/local-notifications": "^5.33.0", "@ionic-native/local-notifications": "5.33.0",
"@ionic-native/media": "^5.33.0", "@ionic-native/media": "5.33.0",
"@ionic-native/media-capture": "^5.33.0", "@ionic-native/media-capture": "5.33.0",
"@ionic-native/network": "^5.33.0", "@ionic-native/network": "5.33.0",
"@ionic-native/push": "^5.33.0", "@ionic-native/push": "5.33.0",
"@ionic-native/qr-scanner": "^5.33.0", "@ionic-native/qr-scanner": "5.33.0",
"@ionic-native/splash-screen": "^5.33.0", "@ionic-native/splash-screen": "5.33.0",
"@ionic-native/sqlite": "^5.33.0", "@ionic-native/sqlite": "5.33.0",
"@ionic-native/status-bar": "^5.33.0", "@ionic-native/status-bar": "5.33.0",
"@ionic-native/web-intent": "^5.33.0", "@ionic-native/web-intent": "5.33.0",
"@ionic-native/zip": "^5.33.0", "@ionic-native/zip": "5.33.0",
"@ionic/angular": "^5.9.2", "@ionic/angular": "5.9.2",
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.5", "@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.5",
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.3", "@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.3",
"@moodlehq/cordova-plugin-ionic-webview": "5.0.0-moodle.1", "@moodlehq/cordova-plugin-ionic-webview": "5.0.0-moodle.1",
@ -50,105 +50,105 @@
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2", "@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
"@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1", "@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1",
"@moodlehq/phonegap-plugin-push": "2.0.0-moodle.2", "@moodlehq/phonegap-plugin-push": "2.0.0-moodle.2",
"@ngx-translate/core": "^13.0.0", "@ngx-translate/core": "13.0.0",
"@ngx-translate/http-loader": "^6.0.0", "@ngx-translate/http-loader": "6.0.0",
"@types/chart.js": "^2.9.31", "@types/chart.js": "2.9.31",
"@types/cordova": "0.0.34", "@types/cordova": "0.0.34",
"@types/dom-mediacapture-record": "^1.0.7", "@types/dom-mediacapture-record": "1.0.7",
"chart.js": "^2.9.4", "chart.js": "2.9.4",
"com-darryncampbell-cordova-plugin-intent": "^2.2.0", "com-darryncampbell-cordova-plugin-intent": "2.2.0",
"cordova": "^11.0.0", "cordova": "11.0.0",
"cordova-android": "^10.1.1", "cordova-android": "10.1.1",
"cordova-clipboard": "^1.3.0", "cordova-clipboard": "1.3.0",
"cordova-ios": "^6.2.0", "cordova-ios": "6.2.0",
"cordova-plugin-add-swift-support": "^2.0.2", "cordova-plugin-add-swift-support": "2.0.2",
"cordova-plugin-advanced-http": "^3.2.2", "cordova-plugin-advanced-http": "3.2.2",
"cordova-plugin-badge": "^0.8.8", "cordova-plugin-badge": "0.8.8",
"cordova-plugin-camera": "^6.0.0", "cordova-plugin-camera": "6.0.0",
"cordova-plugin-chooser": "^1.3.2", "cordova-plugin-chooser": "1.3.2",
"cordova-plugin-customurlscheme": "^5.0.2", "cordova-plugin-customurlscheme": "5.0.2",
"cordova-plugin-device": "^2.0.3", "cordova-plugin-device": "2.0.3",
"cordova-plugin-file": "^6.0.2", "cordova-plugin-file": "6.0.2",
"cordova-plugin-file-opener2": "^3.0.5", "cordova-plugin-file-opener2": "3.0.5",
"cordova-plugin-geolocation": "^4.1.0", "cordova-plugin-geolocation": "4.1.0",
"cordova-plugin-globalization": "^1.11.0", "cordova-plugin-globalization": "1.11.0",
"cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-keyboard": "2.2.0",
"cordova-plugin-media": "^5.0.4", "cordova-plugin-media": "5.0.4",
"cordova-plugin-media-capture": "^3.0.3", "cordova-plugin-media-capture": "3.0.3",
"cordova-plugin-network-information": "^3.0.0", "cordova-plugin-network-information": "3.0.0",
"cordova-plugin-prevent-override": "^1.0.1", "cordova-plugin-prevent-override": "1.0.1",
"cordova-plugin-splashscreen": "^6.0.0", "cordova-plugin-splashscreen": "6.0.0",
"cordova-plugin-statusbar": "^3.0.0", "cordova-plugin-statusbar": "3.0.0",
"cordova-plugin-wkuserscript": "^1.0.1", "cordova-plugin-wkuserscript": "1.0.1",
"cordova-plugin-wkwebview-cookies": "^1.0.1", "cordova-plugin-wkwebview-cookies": "1.0.1",
"cordova-sqlite-storage": "^6.0.0", "cordova-sqlite-storage": "6.0.0",
"cordova.plugins.diagnostic": "^6.1.1", "cordova.plugins.diagnostic": "6.1.1",
"core-js": "^3.9.1", "core-js": "3.9.1",
"es6-promise-plugin": "^4.2.2", "es6-promise-plugin": "4.2.2",
"hammerjs": "^2.0.8", "hammerjs": "2.0.8",
"jszip": "^3.5.0", "jszip": "3.5.0",
"mathjax": "2.7.7", "mathjax": "2.7.7",
"moment": "^2.29.0", "moment": "2.29.0",
"nl.kingsquare.cordova.background-audio": "^1.0.1", "nl.kingsquare.cordova.background-audio": "1.0.1",
"rxjs": "~6.5.5", "rxjs": "6.5.5",
"ts-md5": "^1.2.7", "ts-md5": "1.2.7",
"tslib": "^2.3.1", "tslib": "2.3.1",
"zone.js": "~0.10.3" "zone.js": "0.10.3"
}, },
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "^10.0.1", "@angular-builders/custom-webpack": "10.0.1",
"@angular-devkit/architect": "^0.1202.7", "@angular-devkit/architect": "0.1202.7",
"@angular-devkit/build-angular": "~0.1000.8", "@angular-devkit/build-angular": "0.1000.8",
"@angular-eslint/builder": "^4.2.0", "@angular-eslint/builder": "4.2.0",
"@angular-eslint/eslint-plugin": "^4.2.0", "@angular-eslint/eslint-plugin": "4.2.0",
"@angular-eslint/eslint-plugin-template": "^4.2.0", "@angular-eslint/eslint-plugin-template": "4.2.0",
"@angular-eslint/schematics": "^4.2.0", "@angular-eslint/schematics": "4.2.0",
"@angular-eslint/template-parser": "^4.2.0", "@angular-eslint/template-parser": "4.2.0",
"@angular/cli": "~10.0.8", "@angular/cli": "10.0.8",
"@angular/compiler": "~10.0.14", "@angular/compiler": "10.0.14",
"@angular/compiler-cli": "~10.0.14", "@angular/compiler-cli": "10.0.14",
"@angular/language-service": "~10.0.14", "@angular/language-service": "10.0.14",
"@ionic/angular-toolkit": "^2.3.3", "@ionic/angular-toolkit": "2.3.3",
"@ionic/cli": "^6.14.1", "@ionic/cli": "6.14.1",
"@types/faker": "^5.1.3", "@types/faker": "5.1.3",
"@types/node": "^12.12.64", "@types/node": "12.12.64",
"@types/resize-observer-browser": "^0.1.5", "@types/resize-observer-browser": "0.1.5",
"@types/webpack-env": "^1.16.0", "@types/webpack-env": "1.16.0",
"@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/eslint-plugin": "4.22.0",
"@typescript-eslint/parser": "^4.22.0", "@typescript-eslint/parser": "4.22.0",
"check-es-compat": "^1.1.1", "check-es-compat": "1.1.1",
"cordova-plugin-androidx-adapter": "^1.1.3", "cordova-plugin-androidx-adapter": "1.1.3",
"eslint": "^7.25.0", "eslint": "7.25.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "8.3.0",
"eslint-plugin-header": "^3.1.1", "eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "^2.22.1", "eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "^24.3.6", "eslint-plugin-jest": "24.3.6",
"eslint-plugin-jsdoc": "^32.3.3", "eslint-plugin-jsdoc": "32.3.3",
"eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prefer-arrow": "1.2.3",
"eslint-plugin-promise": "^5.1.0", "eslint-plugin-promise": "5.1.0",
"faker": "^5.1.0", "faker": "5.1.0",
"fs-extra": "^9.1.0", "fs-extra": "9.1.0",
"gulp": "4.0.2", "gulp": "4.0.2",
"gulp-clip-empty-files": "^0.1.2", "gulp-clip-empty-files": "0.1.2",
"gulp-concat": "^2.6.1", "gulp-concat": "2.6.1",
"gulp-flatten": "^0.4.0", "gulp-flatten": "0.4.0",
"gulp-htmlmin": "^5.0.1", "gulp-htmlmin": "5.0.1",
"gulp-rename": "^2.0.0", "gulp-rename": "2.0.0",
"gulp-slash": "^1.1.3", "gulp-slash": "1.1.3",
"jest": "^26.5.2", "jest": "26.5.2",
"jest-preset-angular": "^8.3.1", "jest-preset-angular": "8.3.1",
"jsonc-parser": "^2.3.1", "jsonc-parser": "2.3.1",
"native-run": "^1.4.0", "native-run": "1.4.0",
"terser-webpack-plugin": "^4.2.3", "terser-webpack-plugin": "4.2.3",
"ts-jest": "^26.4.1", "ts-jest": "26.4.1",
"ts-node": "~8.3.0", "ts-node": "8.3.0",
"typescript": "^3.9.9" "typescript": "3.9.9"
}, },
"engines": { "engines": {
"node": ">=14.15.0 <15" "node": ">=14.15.0 <15"
}, },
"optionalDependencies": { "optionalDependencies": {
"keytar": "^7.2.0" "keytar": "7.2.0"
} }
}, },
"node_modules/@angular-builders/custom-webpack": { "node_modules/@angular-builders/custom-webpack": {
@ -7987,9 +7987,23 @@
} }
}, },
"node_modules/base64-js": { "node_modules/base64-js": {
"version": "1.3.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
}, },
"node_modules/batch": { "node_modules/batch": {
"version": "0.6.1", "version": "0.6.1",
@ -14880,9 +14894,9 @@
} }
}, },
"node_modules/follow-redirects": { "node_modules/follow-redirects": {
"version": "1.13.0", "version": "1.14.8",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
"integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -14892,6 +14906,11 @@
], ],
"engines": { "engines": {
"node": ">=4.0" "node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
} }
}, },
"node_modules/for-in": { "node_modules/for-in": {
@ -23128,9 +23147,9 @@
} }
}, },
"node_modules/path-parse": { "node_modules/path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
}, },
"node_modules/path-root": { "node_modules/path-root": {
"version": "0.1.1", "version": "0.1.1",
@ -23369,13 +23388,12 @@
} }
}, },
"node_modules/plist": { "node_modules/plist": {
"version": "3.0.1", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
"integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
"dependencies": { "dependencies": {
"base64-js": "^1.2.3", "base64-js": "^1.5.1",
"xmlbuilder": "^9.0.7", "xmlbuilder": "^9.0.7"
"xmldom": "0.1.x"
}, },
"engines": { "engines": {
"node": ">=6" "node": ">=6"
@ -29575,9 +29593,9 @@
} }
}, },
"node_modules/url-parse": { "node_modules/url-parse": {
"version": "1.4.7", "version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"querystringify": "^2.1.1", "querystringify": "^2.1.1",
@ -31206,15 +31224,6 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true "dev": true
}, },
"node_modules/xmldom": {
"version": "0.1.31",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
"deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0",
"engines": {
"node": ">=0.1"
}
},
"node_modules/xregexp": { "node_modules/xregexp": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
@ -37446,9 +37455,9 @@
} }
}, },
"base64-js": { "base64-js": {
"version": "1.3.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
}, },
"batch": { "batch": {
"version": "0.6.1", "version": "0.6.1",
@ -42810,9 +42819,9 @@
} }
}, },
"follow-redirects": { "follow-redirects": {
"version": "1.13.0", "version": "1.14.8",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
"integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
"dev": true "dev": true
}, },
"for-in": { "for-in": {
@ -49379,9 +49388,9 @@
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
}, },
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
}, },
"path-root": { "path-root": {
"version": "0.1.1", "version": "0.1.1",
@ -49558,13 +49567,12 @@
} }
}, },
"plist": { "plist": {
"version": "3.0.1", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
"integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
"requires": { "requires": {
"base64-js": "^1.2.3", "base64-js": "^1.5.1",
"xmlbuilder": "^9.0.7", "xmlbuilder": "^9.0.7"
"xmldom": "0.1.x"
} }
}, },
"plugin-error": { "plugin-error": {
@ -54564,9 +54572,9 @@
} }
}, },
"url-parse": { "url-parse": {
"version": "1.4.7", "version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"querystringify": "^2.1.1", "querystringify": "^2.1.1",
@ -55888,11 +55896,6 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true "dev": true
}, },
"xmldom": {
"version": "0.1.31",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
},
"xregexp": { "xregexp": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",

View File

@ -38,40 +38,40 @@
"ionic:build:before": "gulp" "ionic:build:before": "gulp"
}, },
"dependencies": { "dependencies": {
"@angular/animations": "~10.0.14", "@angular/animations": "10.0.14",
"@angular/common": "~10.0.14", "@angular/common": "10.0.14",
"@angular/core": "~10.0.14", "@angular/core": "10.0.14",
"@angular/forms": "~10.0.14", "@angular/forms": "10.0.14",
"@angular/platform-browser": "~10.0.14", "@angular/platform-browser": "10.0.14",
"@angular/platform-browser-dynamic": "~10.0.14", "@angular/platform-browser-dynamic": "10.0.14",
"@angular/router": "~10.0.14", "@angular/router": "10.0.14",
"@ionic-native/badge": "^5.33.0", "@ionic-native/badge": "5.33.0",
"@ionic-native/camera": "^5.33.0", "@ionic-native/camera": "5.33.0",
"@ionic-native/chooser": "^5.33.0", "@ionic-native/chooser": "5.33.0",
"@ionic-native/clipboard": "^5.33.0", "@ionic-native/clipboard": "5.33.0",
"@ionic-native/core": "^5.33.0", "@ionic-native/core": "5.33.0",
"@ionic-native/device": "^5.33.0", "@ionic-native/device": "5.33.0",
"@ionic-native/diagnostic": "^5.33.0", "@ionic-native/diagnostic": "5.33.0",
"@ionic-native/file": "^5.33.0", "@ionic-native/file": "5.33.0",
"@ionic-native/file-opener": "^5.33.0", "@ionic-native/file-opener": "5.33.0",
"@ionic-native/file-transfer": "^5.33.0", "@ionic-native/file-transfer": "5.33.0",
"@ionic-native/geolocation": "^5.33.0", "@ionic-native/geolocation": "5.33.0",
"@ionic-native/http": "^5.33.0", "@ionic-native/http": "5.33.0",
"@ionic-native/in-app-browser": "^5.33.0", "@ionic-native/in-app-browser": "5.33.0",
"@ionic-native/ionic-webview": "^5.33.0", "@ionic-native/ionic-webview": "5.33.0",
"@ionic-native/keyboard": "^5.33.0", "@ionic-native/keyboard": "5.33.0",
"@ionic-native/local-notifications": "^5.33.0", "@ionic-native/local-notifications": "5.33.0",
"@ionic-native/media": "^5.33.0", "@ionic-native/media": "5.33.0",
"@ionic-native/media-capture": "^5.33.0", "@ionic-native/media-capture": "5.33.0",
"@ionic-native/network": "^5.33.0", "@ionic-native/network": "5.33.0",
"@ionic-native/push": "^5.33.0", "@ionic-native/push": "5.33.0",
"@ionic-native/qr-scanner": "^5.33.0", "@ionic-native/qr-scanner": "5.33.0",
"@ionic-native/splash-screen": "^5.33.0", "@ionic-native/splash-screen": "5.33.0",
"@ionic-native/sqlite": "^5.33.0", "@ionic-native/sqlite": "5.33.0",
"@ionic-native/status-bar": "^5.33.0", "@ionic-native/status-bar": "5.33.0",
"@ionic-native/web-intent": "^5.33.0", "@ionic-native/web-intent": "5.33.0",
"@ionic-native/zip": "^5.33.0", "@ionic-native/zip": "5.33.0",
"@ionic/angular": "^5.9.2", "@ionic/angular": "5.9.2",
"@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.5", "@moodlehq/cordova-plugin-file-transfer": "1.7.1-moodle.5",
"@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.3", "@moodlehq/cordova-plugin-inappbrowser": "5.0.0-moodle.3",
"@moodlehq/cordova-plugin-ionic-webview": "5.0.0-moodle.1", "@moodlehq/cordova-plugin-ionic-webview": "5.0.0-moodle.1",
@ -79,99 +79,99 @@
"@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2", "@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.2",
"@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1", "@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1",
"@moodlehq/phonegap-plugin-push": "2.0.0-moodle.2", "@moodlehq/phonegap-plugin-push": "2.0.0-moodle.2",
"@ngx-translate/core": "^13.0.0", "@ngx-translate/core": "13.0.0",
"@ngx-translate/http-loader": "^6.0.0", "@ngx-translate/http-loader": "6.0.0",
"@types/chart.js": "^2.9.31", "@types/chart.js": "2.9.31",
"@types/cordova": "0.0.34", "@types/cordova": "0.0.34",
"@types/dom-mediacapture-record": "^1.0.7", "@types/dom-mediacapture-record": "1.0.7",
"chart.js": "^2.9.4", "chart.js": "2.9.4",
"com-darryncampbell-cordova-plugin-intent": "^2.2.0", "com-darryncampbell-cordova-plugin-intent": "2.2.0",
"cordova": "^11.0.0", "cordova": "11.0.0",
"cordova-android": "^10.1.1", "cordova-android": "10.1.1",
"cordova-clipboard": "^1.3.0", "cordova-clipboard": "1.3.0",
"cordova-ios": "^6.2.0", "cordova-ios": "6.2.0",
"cordova-plugin-add-swift-support": "^2.0.2", "cordova-plugin-add-swift-support": "2.0.2",
"cordova-plugin-advanced-http": "^3.2.2", "cordova-plugin-advanced-http": "3.2.2",
"cordova-plugin-badge": "^0.8.8", "cordova-plugin-badge": "0.8.8",
"cordova-plugin-camera": "^6.0.0", "cordova-plugin-camera": "6.0.0",
"cordova-plugin-chooser": "^1.3.2", "cordova-plugin-chooser": "1.3.2",
"cordova-plugin-customurlscheme": "^5.0.2", "cordova-plugin-customurlscheme": "5.0.2",
"cordova-plugin-device": "^2.0.3", "cordova-plugin-device": "2.0.3",
"cordova-plugin-file": "^6.0.2", "cordova-plugin-file": "6.0.2",
"cordova-plugin-file-opener2": "^3.0.5", "cordova-plugin-file-opener2": "3.0.5",
"cordova-plugin-geolocation": "^4.1.0", "cordova-plugin-geolocation": "4.1.0",
"cordova-plugin-globalization": "^1.11.0", "cordova-plugin-globalization": "1.11.0",
"cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-keyboard": "2.2.0",
"cordova-plugin-media": "^5.0.4", "cordova-plugin-media": "5.0.4",
"cordova-plugin-media-capture": "^3.0.3", "cordova-plugin-media-capture": "3.0.3",
"cordova-plugin-network-information": "^3.0.0", "cordova-plugin-network-information": "3.0.0",
"cordova-plugin-prevent-override": "^1.0.1", "cordova-plugin-prevent-override": "1.0.1",
"cordova-plugin-splashscreen": "^6.0.0", "cordova-plugin-splashscreen": "6.0.0",
"cordova-plugin-statusbar": "^3.0.0", "cordova-plugin-statusbar": "3.0.0",
"cordova-plugin-wkuserscript": "^1.0.1", "cordova-plugin-wkuserscript": "1.0.1",
"cordova-plugin-wkwebview-cookies": "^1.0.1", "cordova-plugin-wkwebview-cookies": "1.0.1",
"cordova-sqlite-storage": "^6.0.0", "cordova-sqlite-storage": "6.0.0",
"cordova.plugins.diagnostic": "^6.1.1", "cordova.plugins.diagnostic": "6.1.1",
"core-js": "^3.9.1", "core-js": "3.9.1",
"es6-promise-plugin": "^4.2.2", "es6-promise-plugin": "4.2.2",
"hammerjs": "^2.0.8", "hammerjs": "2.0.8",
"jszip": "^3.5.0", "jszip": "3.5.0",
"mathjax": "2.7.7", "mathjax": "2.7.7",
"moment": "^2.29.0", "moment": "2.29.0",
"nl.kingsquare.cordova.background-audio": "^1.0.1", "nl.kingsquare.cordova.background-audio": "1.0.1",
"rxjs": "~6.5.5", "rxjs": "6.5.5",
"ts-md5": "^1.2.7", "ts-md5": "1.2.7",
"tslib": "^2.3.1", "tslib": "2.3.1",
"zone.js": "~0.10.3" "zone.js": "0.10.3"
}, },
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "^10.0.1", "@angular-builders/custom-webpack": "10.0.1",
"@angular-devkit/architect": "^0.1202.7", "@angular-devkit/architect": "0.1202.7",
"@angular-devkit/build-angular": "~0.1000.8", "@angular-devkit/build-angular": "0.1000.8",
"@angular-eslint/builder": "^4.2.0", "@angular-eslint/builder": "4.2.0",
"@angular-eslint/eslint-plugin": "^4.2.0", "@angular-eslint/eslint-plugin": "4.2.0",
"@angular-eslint/eslint-plugin-template": "^4.2.0", "@angular-eslint/eslint-plugin-template": "4.2.0",
"@angular-eslint/schematics": "^4.2.0", "@angular-eslint/schematics": "4.2.0",
"@angular-eslint/template-parser": "^4.2.0", "@angular-eslint/template-parser": "4.2.0",
"@angular/cli": "~10.0.8", "@angular/cli": "10.0.8",
"@angular/compiler": "~10.0.14", "@angular/compiler": "10.0.14",
"@angular/compiler-cli": "~10.0.14", "@angular/compiler-cli": "10.0.14",
"@angular/language-service": "~10.0.14", "@angular/language-service": "10.0.14",
"@ionic/angular-toolkit": "^2.3.3", "@ionic/angular-toolkit": "2.3.3",
"@ionic/cli": "^6.14.1", "@ionic/cli": "6.14.1",
"@types/faker": "^5.1.3", "@types/faker": "5.1.3",
"@types/node": "^12.12.64", "@types/node": "12.12.64",
"@types/resize-observer-browser": "^0.1.5", "@types/resize-observer-browser": "0.1.5",
"@types/webpack-env": "^1.16.0", "@types/webpack-env": "1.16.0",
"@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/eslint-plugin": "4.22.0",
"@typescript-eslint/parser": "^4.22.0", "@typescript-eslint/parser": "4.22.0",
"check-es-compat": "^1.1.1", "check-es-compat": "1.1.1",
"cordova-plugin-androidx-adapter": "^1.1.3", "cordova-plugin-androidx-adapter": "1.1.3",
"eslint": "^7.25.0", "eslint": "7.25.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "8.3.0",
"eslint-plugin-header": "^3.1.1", "eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "^2.22.1", "eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "^24.3.6", "eslint-plugin-jest": "24.3.6",
"eslint-plugin-jsdoc": "^32.3.3", "eslint-plugin-jsdoc": "32.3.3",
"eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prefer-arrow": "1.2.3",
"eslint-plugin-promise": "^5.1.0", "eslint-plugin-promise": "5.1.0",
"faker": "^5.1.0", "faker": "5.1.0",
"fs-extra": "^9.1.0", "fs-extra": "9.1.0",
"gulp": "4.0.2", "gulp": "4.0.2",
"gulp-clip-empty-files": "^0.1.2", "gulp-clip-empty-files": "0.1.2",
"gulp-concat": "^2.6.1", "gulp-concat": "2.6.1",
"gulp-flatten": "^0.4.0", "gulp-flatten": "0.4.0",
"gulp-htmlmin": "^5.0.1", "gulp-htmlmin": "5.0.1",
"gulp-rename": "^2.0.0", "gulp-rename": "2.0.0",
"gulp-slash": "^1.1.3", "gulp-slash": "1.1.3",
"jest": "^26.5.2", "jest": "26.5.2",
"jest-preset-angular": "^8.3.1", "jest-preset-angular": "8.3.1",
"jsonc-parser": "^2.3.1", "jsonc-parser": "2.3.1",
"native-run": "^1.4.0", "native-run": "1.4.0",
"terser-webpack-plugin": "^4.2.3", "terser-webpack-plugin": "4.2.3",
"ts-jest": "^26.4.1", "ts-jest": "26.4.1",
"ts-node": "~8.3.0", "ts-node": "8.3.0",
"typescript": "^3.9.9" "typescript": "3.9.9"
}, },
"engines": { "engines": {
"node": ">=14.15.0 <15" "node": ">=14.15.0 <15"
@ -242,6 +242,6 @@
} }
}, },
"optionalDependencies": { "optionalDependencies": {
"keytar": "^7.2.0" "keytar": "7.2.0"
} }
} }

View File

@ -203,6 +203,15 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
await this.invalidateCourses(courseIds); await this.invalidateCourses(courseIds);
} }
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected invalidateCourseList(): Promise<void> {
return CoreCourses.invalidateUserCourses();
}
/** /**
* Helper function to invalidate only selected courses. * Helper function to invalidate only selected courses.
* *
@ -213,7 +222,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
const promises: Promise<void>[] = []; const promises: Promise<void>[] = [];
// Invalidate course completion data. // Invalidate course completion data.
promises.push(CoreCourses.invalidateUserCourses().finally(() => promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) => CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId))))); AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -397,7 +406,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
course.hidden = !!data.value; course.hidden = !!data.value;
} }
await this.invalidateCourses([course.id]); await this.invalidateCourseList();
await this.filterCourses(); await this.filterCourses();
} }
@ -409,7 +418,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
course.lastaccess = CoreTimeUtils.timestamp(); course.lastaccess = CoreTimeUtils.timestamp();
await this.invalidateCourses([course.id]); await this.invalidateCourseList();
await this.filterCourses(); await this.filterCourses();
} }
} }

View File

@ -85,6 +85,17 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
await this.invalidateCourses(courseIds); await this.invalidateCourses(courseIds);
} }
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected async invalidateCourseList(): Promise<void> {
return this.site.isVersionGreaterEqualThan('3.8')
? CoreCourses.invalidateRecentCourses()
: CoreCourses.invalidateUserCourses();
}
/** /**
* Helper function to invalidate only selected courses. * Helper function to invalidate only selected courses.
* *
@ -94,12 +105,8 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
protected async invalidateCourses(courseIds: number[]): Promise<void> { protected async invalidateCourses(courseIds: number[]): Promise<void> {
const promises: Promise<void>[] = []; const promises: Promise<void>[] = [];
const invalidateCoursePromise = this.site.isVersionGreaterEqualThan('3.8')
? CoreCourses.invalidateRecentCourses()
: CoreCourses.invalidateUserCourses();
// Invalidate course completion data. // Invalidate course completion data.
promises.push(invalidateCoursePromise.finally(() => promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) => CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId))))); AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -179,13 +186,13 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
this.courses.splice(courseIndex, 1); this.courses.splice(courseIndex, 1);
this.courses.unshift(course); this.courses.unshift(course);
await this.invalidateCourses([course.id]); await this.invalidateCourseList();
} }
if (data.action == CoreCoursesProvider.ACTION_STATE_CHANGED && if (data.action == CoreCoursesProvider.ACTION_STATE_CHANGED &&
data.state == CoreCoursesProvider.STATE_FAVOURITE && course) { data.state == CoreCoursesProvider.STATE_FAVOURITE && course) {
course.isfavourite = !!data.value; course.isfavourite = !!data.value;
await this.invalidateCourses([course.id]); await this.invalidateCourseList();
} }
} }

View File

@ -81,6 +81,15 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
await this.invalidateCourses(courseIds); await this.invalidateCourses(courseIds);
} }
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected async invalidateCourseList(): Promise<void> {
return AddonBlockStarredCourses.invalidateStarredCourses();
}
/** /**
* Helper function to invalidate only selected courses. * Helper function to invalidate only selected courses.
* *
@ -91,7 +100,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
const promises: Promise<void>[] = []; const promises: Promise<void>[] = [];
// Invalidate course completion data. // Invalidate course completion data.
promises.push(AddonBlockStarredCourses.invalidateStarredCourses().finally(() => promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) => CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId))))); AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -172,7 +181,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
this.courses.unshift(course); this.courses.unshift(course);
} }
await this.invalidateCourses([course.id]); await this.invalidateCourseList();
} }
} }

View File

@ -243,6 +243,8 @@ export class AddonModDataIndexComponent extends CoreCourseModuleMainActivityComp
this.isEmpty = true; this.isEmpty = true;
this.groupInfo = undefined; this.groupInfo = undefined;
return;
} else { } else {
canSearch = true; canSearch = true;
canAdd = this.access.canaddentry; canAdd = this.access.canaddentry;

View File

@ -325,7 +325,7 @@ export class CoreCompileProvider {
// Inject the provider to the instance. We use the class name as the property name. // Inject the provider to the instance. We use the class name as the property name.
instance[providerDef.name.replace(/DelegateService$/, 'Delegate')] = this.injector.get(providerDef); instance[providerDef.name.replace(/DelegateService$/, 'Delegate')] = this.injector.get(providerDef);
} catch (ex) { } catch (ex) {
this.logger.warn('Error injecting provider', providerDef.name, ex); this.logger.error('Error injecting provider', providerDef.name, ex);
} }
} }
} }

View File

@ -20,6 +20,7 @@ import { CoreStatusWithWarningsWSResponse, CoreWarningsWSResponse, CoreWSExterna
import { CoreEvents } from '@singletons/events'; import { CoreEvents } from '@singletons/events';
import { CoreWSError } from '@classes/errors/wserror'; import { CoreWSError } from '@classes/errors/wserror';
import { CoreCourseAnyCourseDataWithExtraInfoAndOptions, CoreCourseWithImageAndColor } from './courses-helper'; import { CoreCourseAnyCourseDataWithExtraInfoAndOptions, CoreCourseWithImageAndColor } from './courses-helper';
import { CoreUtils } from '@services/utils/utils';
const ROOT_CACHE_KEY = 'mmCourses:'; const ROOT_CACHE_KEY = 'mmCourses:';
@ -625,25 +626,13 @@ export class CoreCoursesProvider {
// Get the list of courseIds to use based on the param. // Get the list of courseIds to use based on the param.
courseIds = await this.getCourseIdsForAdminAndNavOptions(courseIds, siteId); courseIds = await this.getCourseIdsForAdminAndNavOptions(courseIds, siteId);
let navOptions: CoreCourseUserAdminOrNavOptionCourseIndexed;
let admOptions: CoreCourseUserAdminOrNavOptionCourseIndexed;
// Get user navigation and administration options. // Get user navigation and administration options.
try { const [navOptions, admOptions] = await Promise.all([
navOptions = await this.getUserNavigationOptions(courseIds, siteId); CoreUtils.ignoreErrors(this.getUserNavigationOptions(courseIds, siteId), {}),
} catch { CoreUtils.ignoreErrors(this.getUserAdministrationOptions(courseIds, siteId), {}),
// Couldn't get it, return empty options. ]);
navOptions = {};
}
try { return { navOptions: navOptions, admOptions: admOptions };
admOptions = await this.getUserAdministrationOptions(courseIds, siteId);
} catch {
// Couldn't get it, return empty options.
admOptions = {};
}
return ({ navOptions: navOptions, admOptions: admOptions });
} }
/** /**

View File

@ -29,8 +29,6 @@ import { CoreFileHelper } from './file-helper';
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class CorePluginFileDelegateService extends CoreDelegate<CorePluginFileHandler> { export class CorePluginFileDelegateService extends CoreDelegate<CorePluginFileHandler> {
protected handlerNameProperty = 'component';
constructor() { constructor() {
super('CorePluginFileDelegate', true); super('CorePluginFileDelegate', true);
} }