Skip to content

Commit bc97553

Browse files
authored
Merge pull request #2279 from crazyserver/MOBILE-3339
Mobile 3339
2 parents 6d06a7e + 0c05a9f commit bc97553

File tree

10 files changed

+3273
-3506
lines changed

10 files changed

+3273
-3506
lines changed

PACKAGE_PROBLEMS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Package updates known problems
2+
=================
3+
4+
@ionic/app-scripts 3.2.3 shows error Cannot find type definition file for '@types'. on ngc build.
5+
6+
com-darryncampbell-cordova-plugin-intent 2.0.0 onwards needs Android X Support. Unsupported on PGB.
7+
8+
typescript is needed to be less than 2.7 for @angular/compiler-cli
9+
10+
cordova-plugin-ionic-keyboard has problems on greater verisons than 2.1.3

package-lock.json

Lines changed: 3127 additions & 3363 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -40,57 +40,56 @@
4040
"windows.store": "npx electron-windows-store --input-directory .\\desktop\\dist\\win-unpacked --output-directory .\\desktop\\store -a .\\resources\\desktop -m .\\desktop\\assets\\windows\\AppXManifest.xml --package-version 0.0.0.0 --package-name MoodleDesktop"
4141
},
4242
"dependencies": {
43-
"@angular/animations": "^5.2.10",
44-
"@angular/common": "^5.2.10",
45-
"@angular/compiler": "^5.2.10",
46-
"@angular/compiler-cli": "^5.2.10",
47-
"@angular/core": "^5.2.10",
48-
"@angular/forms": "^5.2.10",
49-
"@angular/http": "^5.2.10",
50-
"@angular/platform-browser": "^5.2.10",
51-
"@angular/platform-browser-dynamic": "^5.2.10",
52-
"@ionic-native/badge": "^4.17.0",
53-
"@ionic-native/camera": "^4.17.0",
54-
"@ionic-native/clipboard": "^4.17.0",
55-
"@ionic-native/core": "^4.11.0",
56-
"@ionic-native/device": "^4.17.0",
57-
"@ionic-native/file": "^4.17.0",
58-
"@ionic-native/file-opener": "^4.17.0",
59-
"@ionic-native/file-transfer": "^4.17.0",
60-
"@ionic-native/geolocation": "^4.17.0",
61-
"@ionic-native/globalization": "^4.17.0",
62-
"@ionic-native/in-app-browser": "^4.17.0",
63-
"@ionic-native/keyboard": "^4.17.0",
64-
"@ionic-native/local-notifications": "^4.17.0",
65-
"@ionic-native/media-capture": "^4.17.0",
66-
"@ionic-native/network": "^4.17.0",
67-
"@ionic-native/push": "^4.17.0",
68-
"@ionic-native/screen-orientation": "^4.17.0",
69-
"@ionic-native/splash-screen": "^4.17.0",
70-
"@ionic-native/sqlite": "^4.17.0",
71-
"@ionic-native/status-bar": "^4.17.0",
72-
"@ionic-native/web-intent": "^4.17.0",
73-
"@ionic-native/zip": "^4.17.0",
43+
"@angular/animations": "^5.2.11",
44+
"@angular/common": "^5.2.11",
45+
"@angular/compiler": "^5.2.11",
46+
"@angular/compiler-cli": "^5.2.11",
47+
"@angular/core": "^5.2.11",
48+
"@angular/forms": "^5.2.11",
49+
"@angular/platform-browser": "^5.2.11",
50+
"@angular/platform-browser-dynamic": "^5.2.11",
51+
"@ionic-native/badge": "^4.20.0",
52+
"@ionic-native/camera": "^4.20.0",
53+
"@ionic-native/clipboard": "^4.20.0",
54+
"@ionic-native/core": "^4.20.0",
55+
"@ionic-native/device": "^4.20.0",
56+
"@ionic-native/file": "^4.20.0",
57+
"@ionic-native/file-opener": "^4.20.0",
58+
"@ionic-native/file-transfer": "^4.20.0",
59+
"@ionic-native/geolocation": "^4.20.0",
60+
"@ionic-native/globalization": "^4.20.0",
61+
"@ionic-native/in-app-browser": "^4.20.0",
62+
"@ionic-native/keyboard": "^4.20.0",
63+
"@ionic-native/local-notifications": "^4.20.0",
64+
"@ionic-native/media-capture": "^4.20.0",
65+
"@ionic-native/network": "^4.20.0",
66+
"@ionic-native/push": "^4.20.0",
67+
"@ionic-native/screen-orientation": "^4.20.0",
68+
"@ionic-native/splash-screen": "^4.20.0",
69+
"@ionic-native/sqlite": "^4.20.0",
70+
"@ionic-native/status-bar": "^4.20.0",
71+
"@ionic-native/web-intent": "^4.20.0",
72+
"@ionic-native/zip": "^4.20.0",
7473
"@ngx-translate/core": "^8.0.0",
7574
"@ngx-translate/http-loader": "^2.0.1",
76-
"ajv": "^6.10.2",
77-
"chart.js": "^2.7.2",
75+
"ajv": "^6.11.0",
76+
"chart.js": "^2.9.3",
7877
"com-darryncampbell-cordova-plugin-intent": "^1.3.0",
7978
"cordova": "9.0.0",
80-
"cordova-android": "8.0.0",
79+
"cordova-android": "^8.1.0",
8180
"cordova-android-support-gradle-release": "^3.0.1",
8281
"cordova-clipboard": "^1.3.0",
83-
"cordova-ios": "5.0.1",
82+
"cordova-ios": "^5.1.1",
8483
"cordova-plugin-badge": "^0.8.8",
8584
"cordova-plugin-camera": "^4.1.0",
86-
"cordova-plugin-customurlscheme": "^4.4.0",
85+
"cordova-plugin-customurlscheme": "^5.0.0",
8786
"cordova-plugin-device": "^2.0.3",
8887
"cordova-plugin-file": "^6.0.2",
89-
"cordova-plugin-file-opener2": "^2.2.1",
88+
"cordova-plugin-file-opener2": "^3.0.0",
9089
"cordova-plugin-file-transfer": "^1.7.1",
9190
"cordova-plugin-geolocation": "^4.0.2",
9291
"cordova-plugin-globalization": "^1.11.0",
93-
"cordova-plugin-inappbrowser": "^3.1.0",
92+
"cordova-plugin-inappbrowser": "^3.2.0",
9493
"cordova-plugin-ionic-keyboard": "2.1.3",
9594
"cordova-plugin-local-notification": "git+https://github.com/moodlemobile/cordova-plugin-local-notification.git#moodle",
9695
"cordova-plugin-media-capture": "^3.0.3",
@@ -100,48 +99,48 @@
10099
"cordova-plugin-statusbar": "^2.4.3",
101100
"cordova-plugin-whitelist": "^1.3.4",
102101
"cordova-plugin-zip": "^3.1.0",
103-
"cordova-sqlite-storage": "^3.4.0",
104-
"cordova-support-google-services": "^1.2.1",
102+
"cordova-sqlite-storage": "^4.0.0",
103+
"cordova-support-google-services": "^1.3.2",
105104
"es6-promise-plugin": "^4.2.2",
106105
"font-awesome": "^4.7.0",
107-
"ionic-angular": "3.9.3",
106+
"ionic-angular": "3.9.9",
108107
"ionicons": "^3.0.0",
109-
"jszip": "^3.1.5",
108+
"jszip": "^3.2.2",
110109
"mathjax": "2.7.7",
111-
"moment": "^2.22.2",
110+
"moment": "^2.24.0",
112111
"nl.kingsquare.cordova.background-audio": "^1.0.1",
113112
"phonegap-plugin-multidex": "^1.0.0",
114113
"phonegap-plugin-push": "git+https://github.com/moodlemobile/phonegap-plugin-push.git#moodle-v3",
115-
"promise.prototype.finally": "^3.1.0",
116-
"rxjs": "^5.5.11",
114+
"promise.prototype.finally": "3.1.0",
115+
"rxjs": "^5.5.12",
117116
"sw-toolbox": "^3.6.0",
118-
"ts-md5": "^1.2.4",
119-
"web-animations-js": "^2.3.1",
120-
"zone.js": "^0.8.26"
117+
"ts-md5": "^1.2.7",
118+
"web-animations-js": "^2.3.2",
119+
"zone.js": "^0.8.29"
121120
},
122121
"devDependencies": {
123-
"@ionic/app-scripts": "3.2.2",
122+
"@ionic/app-scripts": "3.2.3",
124123
"@types/cordova": "^0.0.34",
125124
"@types/cordova-plugin-file-transfer": "^0.0.3",
126125
"@types/cordova-plugin-globalization": "^0.0.3",
127126
"@types/cordova-plugin-network-information": "^0.0.3",
128-
"@types/node": "^8.10.19",
129-
"@types/promise.prototype.finally": "^2.0.2",
127+
"@types/node": "^8.10.59",
128+
"@types/promise.prototype.finally": "^2.0.3",
130129
"electron-builder-lib": "^20.23.1",
131-
"electron-rebuild": "^1.8.1",
130+
"electron-rebuild": "^1.10.0",
132131
"gulp": "4.0.2",
133132
"gulp-clip-empty-files": "^0.1.2",
134133
"gulp-concat": "^2.6.1",
135134
"gulp-flatten": "^0.4.0",
136135
"gulp-htmlmin": "^5.0.1",
137-
"gulp-rename": "^1.3.0",
136+
"gulp-rename": "^2.0.0",
138137
"gulp-slash": "^1.1.3",
139138
"lodash.template": "^4.5.0",
140139
"node-loader": "^0.6.0",
141140
"through": "^2.3.8",
142-
"typescript": "^2.6.2",
141+
"typescript": "~2.6.2",
143142
"vinyl": "^2.2.0",
144-
"webpack-merge": "^4.1.2"
143+
"webpack-merge": "^4.2.2"
145144
},
146145
"browser": {
147146
"electron": false

src/addon/mod/book/providers/book.ts

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http, Response } from '@angular/http';
1716
import { CoreFileProvider } from '@providers/file';
1817
import { CoreFilepoolProvider } from '@providers/filepool';
1918
import { CoreLoggerProvider } from '@providers/logger';
@@ -25,7 +24,7 @@ import { CoreCourseProvider } from '@core/course/providers/course';
2524
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
2625
import { CoreSite } from '@classes/site';
2726
import { CoreTagItem } from '@core/tag/providers/tag';
28-
import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
27+
import { CoreWSProvider, CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws';
2928

3029
/**
3130
* Service that provides some features for books.
@@ -37,10 +36,16 @@ export class AddonModBookProvider {
3736
protected ROOT_CACHE_KEY = 'mmaModBook:';
3837
protected logger;
3938

40-
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
41-
private fileProvider: CoreFileProvider, private filepoolProvider: CoreFilepoolProvider, private http: Http,
42-
private utils: CoreUtilsProvider, private courseProvider: CoreCourseProvider, private domUtils: CoreDomUtilsProvider,
43-
private logHelper: CoreCourseLogHelperProvider) {
39+
constructor(logger: CoreLoggerProvider,
40+
protected sitesProvider: CoreSitesProvider,
41+
protected textUtils: CoreTextUtilsProvider,
42+
protected fileProvider: CoreFileProvider,
43+
protected filepoolProvider: CoreFilepoolProvider,
44+
protected wsProvider: CoreWSProvider,
45+
protected utils: CoreUtilsProvider,
46+
protected courseProvider: CoreCourseProvider,
47+
protected domUtils: CoreDomUtilsProvider,
48+
protected logHelper: CoreCourseLogHelperProvider) {
4449
this.logger = logger.getInstance('AddonModBookProvider');
4550
}
4651

@@ -128,19 +133,11 @@ export class AddonModBookProvider {
128133
return this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
129134
}
130135

131-
return promise.then((url) => {
132-
// Fetch the URL content.
133-
const promise = this.http.get(url).toPromise();
134-
135-
return promise.then((response: Response): any => {
136-
const content = response.text();
137-
if (typeof content !== 'string') {
138-
return Promise.reject(null);
139-
} else {
140-
// Now that we have the content, we update the SRC to point back to the external resource.
141-
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
142-
}
143-
});
136+
return promise.then(async (url) => {
137+
const content = await this.wsProvider.getText(url);
138+
139+
// Now that we have the content, we update the SRC to point back to the external resource.
140+
return this.domUtils.restoreSourcesInHtml(content, contentsMap[chapterId].paths);
144141
});
145142
}
146143

src/addon/mod/page/providers/helper.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { CoreFilepoolProvider } from '@providers/filepool';
2020
import { AddonModPageProvider } from './page';
2121
import { CoreFileProvider } from '@providers/file';
2222
import { CoreSitesProvider } from '@providers/sites';
23-
import { Http, Response } from '@angular/http';
23+
import { CoreWSProvider } from '@providers/ws';
2424

2525
/**
2626
* Service that provides some features for page.
@@ -30,9 +30,13 @@ export class AddonModPageHelperProvider {
3030

3131
protected logger;
3232

33-
constructor(logger: CoreLoggerProvider, private domUtils: CoreDomUtilsProvider, private filepoolProvider: CoreFilepoolProvider,
34-
private fileProvider: CoreFileProvider, private textUtils: CoreTextUtilsProvider, private http: Http,
35-
private sitesProvider: CoreSitesProvider) {
33+
constructor(logger: CoreLoggerProvider,
34+
protected domUtils: CoreDomUtilsProvider,
35+
protected filepoolProvider: CoreFilepoolProvider,
36+
protected fileProvider: CoreFileProvider,
37+
protected textUtils: CoreTextUtilsProvider,
38+
protected wsProvider: CoreWSProvider,
39+
protected sitesProvider: CoreSitesProvider) {
3640
this.logger = logger.getInstance('AddonModPageHelperProvider');
3741
}
3842

@@ -79,21 +83,12 @@ export class AddonModPageHelperProvider {
7983
promise = this.sitesProvider.getCurrentSite().checkAndFixPluginfileURL(indexUrl);
8084
}
8185

82-
return promise.then((url) => {
86+
return promise.then(async (url) => {
87+
const content = await this.wsProvider.getText(url);
8388

84-
// Fetch the URL content.
85-
const promise = this.http.get(url).toPromise();
86-
87-
return promise.then((response: Response): any => {
88-
const content = response.text();
89-
if (typeof content !== 'string') {
90-
return Promise.reject(null);
91-
}
92-
93-
// Now that we have the content, we update the SRC to point back to the external resource.
94-
// That will be caught by core-format-text.
95-
return this.domUtils.restoreSourcesInHtml(content, paths);
96-
});
89+
// Now that we have the content, we update the SRC to point back to the external resource.
90+
// That will be caught by core-format-text.
91+
return this.domUtils.restoreSourcesInHtml(content, paths);
9792
});
9893
}
9994

src/addon/remotethemes/providers/remotethemes.ts

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
import { Injectable } from '@angular/core';
16-
import { Http } from '@angular/http';
16+
import { CoreWSProvider } from '@providers/ws';
1717
import { CoreAppProvider } from '@providers/app';
1818
import { CoreFileProvider } from '@providers/file';
1919
import { CoreFilepoolProvider } from '@providers/filepool';
@@ -34,9 +34,13 @@ export class AddonRemoteThemesProvider {
3434
protected logger;
3535
protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {};
3636

37-
constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private fileProvider: CoreFileProvider,
38-
private filepoolProvider: CoreFilepoolProvider, private http: Http, private utils: CoreUtilsProvider,
39-
private appProvider: CoreAppProvider) {
37+
constructor(logger: CoreLoggerProvider,
38+
protected sitesProvider: CoreSitesProvider,
39+
protected fileProvider: CoreFileProvider,
40+
protected filepoolProvider: CoreFilepoolProvider,
41+
protected wsProvider: CoreWSProvider,
42+
protected utils: CoreUtilsProvider,
43+
protected appProvider: CoreAppProvider) {
4044
this.logger = logger.getInstance('AddonRemoteThemesProvider');
4145
}
4246

@@ -174,18 +178,13 @@ export class AddonRemoteThemesProvider {
174178
return;
175179
}
176180

177-
return promise.then((url) => {
181+
return promise.then(async (url) => {
178182
this.logger.debug('Loading styles from: ', url);
179183

180184
// Get the CSS content using HTTP because we will treat the styles before saving them in the file.
181-
return this.http.get(url).toPromise();
182-
}).then((response): any => {
183-
const text = response && response.text();
184-
if (typeof text == 'string') {
185-
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
186-
} else {
187-
return Promise.reject(null);
188-
}
185+
const text = await this.wsProvider.getText(url);
186+
187+
return {fileUrl: fileUrl, styles: this.get35Styles(text)};
189188
});
190189
});
191190
}
@@ -263,23 +262,18 @@ export class AddonRemoteThemesProvider {
263262
return Promise.resolve();
264263
}
265264

266-
return this.http.get(url).toPromise().then((response) => {
267-
let text = response && response.text();
268-
if (typeof text == 'string') {
269-
text = this.get35Styles(text);
265+
return this.wsProvider.getText(url).then((text) => {
266+
text = this.get35Styles(text);
270267

271-
const styleEl = document.createElement('style');
272-
styleEl.setAttribute('id', 'mobilecssurl-tmpsite');
273-
styleEl.innerHTML = text;
268+
const styleEl = document.createElement('style');
269+
styleEl.setAttribute('id', 'mobilecssurl-tmpsite');
270+
styleEl.innerHTML = text;
274271

275-
document.head.appendChild(styleEl);
276-
this.stylesEls.tmpsite = {
277-
element: styleEl,
278-
hash: ''
279-
};
280-
} else {
281-
return Promise.reject(null);
282-
}
272+
document.head.appendChild(styleEl);
273+
this.stylesEls.tmpsite = {
274+
element: styleEl,
275+
hash: ''
276+
};
283277
});
284278
}
285279

src/app/app.module.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
1717
import { NgModule, COMPILER_OPTIONS } from '@angular/core';
1818
import { IonicApp, IonicModule, Platform, Content, ScrollEvent, Config, Refresher } from 'ionic-angular';
1919
import { assert } from 'ionic-angular/util/util';
20-
import { HttpModule } from '@angular/http';
2120
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
2221
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
2322
import { LocationStrategy } from '@angular/common';
@@ -202,7 +201,6 @@ export const WP_PROVIDER: any = null;
202201
BrowserModule,
203202
BrowserAnimationsModule,
204203
HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
205-
HttpModule,
206204
IonicModule.forRoot(MoodleMobileApp, {
207205
pageTransition: 'core-page-transition'
208206
}),

0 commit comments

Comments
 (0)