1313// limitations under the License.
1414
1515import { Component , OnInit , NgZone } from '@angular/core' ;
16- import { Platform , IonicApp } from 'ionic-angular' ;
16+ import { Config , Platform , IonicApp } from 'ionic-angular' ;
1717import { Network } from '@ionic-native/network' ;
1818import { CoreApp , CoreAppProvider } from '@providers/app' ;
1919import { CoreEventsProvider } from '@providers/events' ;
@@ -28,6 +28,7 @@ import { Keyboard } from '@ionic-native/keyboard';
2828import { ScreenOrientation } from '@ionic-native/screen-orientation' ;
2929import { CoreLoginSitesPage } from '@core/login/pages/sites/sites' ;
3030import { 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