Skip to content

Commit c69d108

Browse files
committed
MOBILE-3532 ionic: Apply ios mode on iPadOS
1 parent dbae55b commit c69d108

File tree

1 file changed

+56
-6
lines changed

1 file changed

+56
-6
lines changed

src/app/app.component.ts

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

1515
import { Component, OnInit, NgZone } from '@angular/core';
16-
import { Platform, IonicApp } from 'ionic-angular';
16+
import { Config, Platform, IonicApp } from 'ionic-angular';
1717
import { Network } from '@ionic-native/network';
1818
import { CoreApp, CoreAppProvider } from '@providers/app';
1919
import { CoreEventsProvider } from '@providers/events';
@@ -28,6 +28,7 @@ import { Keyboard } from '@ionic-native/keyboard';
2828
import { ScreenOrientation } from '@ionic-native/screen-orientation';
2929
import { CoreLoginSitesPage } from '@core/login/pages/sites/sites';
3030
import { CoreWindow } from '@singletons/window';
31+
import { Device } from '@ionic-native/device';
3132

3233
@Component({
3334
templateUrl: 'app.html'
@@ -40,13 +41,62 @@ export class MoodleMobileApp implements OnInit {
4041
protected lastUrls = {};
4142
protected lastInAppUrl: string;
4243

43-
constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, private app: IonicApp,
44-
private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone,
45-
private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider,
46-
private screenOrientation: ScreenOrientation, private urlSchemesProvider: CoreCustomURLSchemesProvider,
47-
private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider, private network: Network) {
44+
constructor(
45+
private platform: Platform,
46+
logger: CoreLoggerProvider,
47+
keyboard: Keyboard,
48+
config: Config,
49+
device: Device,
50+
private app: IonicApp,
51+
private eventsProvider: CoreEventsProvider,
52+
private loginHelper: CoreLoginHelperProvider,
53+
private zone: NgZone,
54+
private appProvider: CoreAppProvider,
55+
private langProvider: CoreLangProvider,
56+
private sitesProvider: CoreSitesProvider,
57+
private screenOrientation: ScreenOrientation,
58+
private urlSchemesProvider: CoreCustomURLSchemesProvider,
59+
private utils: CoreUtilsProvider,
60+
private urlUtils: CoreUrlUtilsProvider,
61+
private network: Network
62+
) {
4863
this.logger = logger.getInstance('AppComponent');
4964

65+
if (this.appProvider.isIOS() && !platform.is('ios')) {
66+
// Solve problem with wrong detected iPadOS.
67+
const platforms = platform.platforms();
68+
const index = platforms.indexOf('core');
69+
if (index > -1) {
70+
platforms.splice(index, 1);
71+
}
72+
platforms.push('mobile');
73+
platforms.push('ios');
74+
platforms.push('ipad');
75+
platforms.push('tablet');
76+
77+
app.setElementClass('app-root-ios', true);
78+
platform.ready().then(() => {
79+
if (device.version) {
80+
const [major, minor]: string[] = device.version.split('.', 2);
81+
app.setElementClass('platform-ios' + major, true);
82+
app.setElementClass('platform-ios' + major + '_' + minor, true);
83+
}
84+
});
85+
86+
app._elementRef.nativeElement.classList.remove('app-root-md');
87+
88+
const iosConfig = config.getModeConfig('ios');
89+
90+
config.set('mode', 'ios');
91+
92+
Object.keys(iosConfig).forEach((key) => {
93+
// Already overriden: pageTransition, do not change.
94+
if (key != 'pageTransition') {
95+
config.set('ios', key, iosConfig[key]);
96+
}
97+
});
98+
}
99+
50100
platform.ready().then(() => {
51101
// Okay, so the platform is ready and our plugins are available.
52102
// Here you can do any higher level native things you might need.

0 commit comments

Comments
 (0)