MOBILE-3068 quiz: Close modals when time is up

main
Pau Ferrer Ocaña 2019-08-27 09:38:59 +02:00
parent 0a0d639ebf
commit 265f15f380
3 changed files with 39 additions and 13 deletions

View File

@ -25,6 +25,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreTimeUtilsProvider } from '@providers/utils/time'; import { CoreTimeUtilsProvider } from '@providers/utils/time';
import { CoreUrlUtilsProvider } from '@providers/utils/url'; import { CoreUrlUtilsProvider } from '@providers/utils/url';
import { CoreUtilsProvider } from '@providers/utils/utils'; import { CoreUtilsProvider } from '@providers/utils/utils';
import { MoodleMobileApp } from '../../../../../app/app.component';
import { AddonModLessonProvider } from '../../providers/lesson'; import { AddonModLessonProvider } from '../../providers/lesson';
import { AddonModLessonOfflineProvider } from '../../providers/lesson-offline'; import { AddonModLessonOfflineProvider } from '../../providers/lesson-offline';
import { AddonModLessonSyncProvider } from '../../providers/lesson-sync'; import { AddonModLessonSyncProvider } from '../../providers/lesson-sync';
@ -85,7 +86,8 @@ export class AddonModLessonPlayerPage implements OnInit, OnDestroy {
protected lessonHelper: AddonModLessonHelperProvider, protected lessonSync: AddonModLessonSyncProvider, protected lessonHelper: AddonModLessonHelperProvider, protected lessonSync: AddonModLessonSyncProvider,
protected lessonOfflineProvider: AddonModLessonOfflineProvider, protected cdr: ChangeDetectorRef, protected lessonOfflineProvider: AddonModLessonOfflineProvider, protected cdr: ChangeDetectorRef,
modalCtrl: ModalController, protected navCtrl: NavController, protected appProvider: CoreAppProvider, modalCtrl: ModalController, protected navCtrl: NavController, protected appProvider: CoreAppProvider,
protected utils: CoreUtilsProvider, protected urlUtils: CoreUrlUtilsProvider, protected fb: FormBuilder) { protected utils: CoreUtilsProvider, protected urlUtils: CoreUrlUtilsProvider, protected fb: FormBuilder,
protected mmApp: MoodleMobileApp) {
this.lessonId = navParams.get('lessonId'); this.lessonId = navParams.get('lessonId');
this.courseId = navParams.get('courseId'); this.courseId = navParams.get('courseId');
@ -145,6 +147,13 @@ export class AddonModLessonPlayerPage implements OnInit, OnDestroy {
return Promise.resolve(); return Promise.resolve();
} }
/**
* Runs when the page is about to leave and no longer be the active page.
*/
ionViewWillLeave(): void {
this.mmApp.closeModal();
}
/** /**
* A button was clicked. * A button was clicked.
* *

View File

@ -23,6 +23,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreTimeUtilsProvider } from '@providers/utils/time'; import { CoreTimeUtilsProvider } from '@providers/utils/time';
import { CoreQuestionHelperProvider } from '@core/question/providers/helper'; import { CoreQuestionHelperProvider } from '@core/question/providers/helper';
import { CoreQuestionComponent } from '@core/question/components/question/question'; import { CoreQuestionComponent } from '@core/question/components/question/question';
import { MoodleMobileApp } from '../../../../../app/app.component';
import { AddonModQuizProvider } from '../../providers/quiz'; import { AddonModQuizProvider } from '../../providers/quiz';
import { AddonModQuizSyncProvider } from '../../providers/quiz-sync'; import { AddonModQuizSyncProvider } from '../../providers/quiz-sync';
import { AddonModQuizHelperProvider } from '../../providers/helper'; import { AddonModQuizHelperProvider } from '../../providers/helper';
@ -80,7 +81,7 @@ export class AddonModQuizPlayerPage implements OnInit, OnDestroy {
protected timeUtils: CoreTimeUtilsProvider, protected quizProvider: AddonModQuizProvider, protected timeUtils: CoreTimeUtilsProvider, protected quizProvider: AddonModQuizProvider,
protected quizHelper: AddonModQuizHelperProvider, protected quizSync: AddonModQuizSyncProvider, protected quizHelper: AddonModQuizHelperProvider, protected quizSync: AddonModQuizSyncProvider,
protected questionHelper: CoreQuestionHelperProvider, protected cdr: ChangeDetectorRef, protected questionHelper: CoreQuestionHelperProvider, protected cdr: ChangeDetectorRef,
modalCtrl: ModalController, protected navCtrl: NavController) { modalCtrl: ModalController, protected navCtrl: NavController, protected mmApp: MoodleMobileApp) {
this.quizId = navParams.get('quizId'); this.quizId = navParams.get('quizId');
this.courseId = navParams.get('courseId'); this.courseId = navParams.get('courseId');
@ -157,6 +158,13 @@ export class AddonModQuizPlayerPage implements OnInit, OnDestroy {
return Promise.resolve(); return Promise.resolve();
} }
/**
* Runs when the page is about to leave and no longer be the active page.
*/
ionViewWillLeave(): void {
this.mmApp.closeModal();
}
/** /**
* Abort the quiz. * Abort the quiz.
*/ */

View File

@ -38,10 +38,10 @@ export class MoodleMobileApp implements OnInit {
protected lastUrls = {}; protected lastUrls = {};
protected lastInAppUrl: string; protected lastInAppUrl: string;
constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, private app: IonicApp,
private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone, private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone,
private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider, private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider,
private screenOrientation: ScreenOrientation, app: IonicApp, private urlSchemesProvider: CoreCustomURLSchemesProvider, private screenOrientation: ScreenOrientation, private urlSchemesProvider: CoreCustomURLSchemesProvider,
private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider) { private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider) {
this.logger = logger.getInstance('AppComponent'); this.logger = logger.getInstance('AppComponent');
@ -68,15 +68,7 @@ export class MoodleMobileApp implements OnInit {
// Register back button action to allow closing modals before anything else. // Register back button action to allow closing modals before anything else.
this.appProvider.registerBackButtonAction(() => { this.appProvider.registerBackButtonAction(() => {
// Following function is hidden in Ionic Code, however there's no solution for that. return this.closeModal();
const portal = app._getActivePortal();
if (portal) {
portal.pop();
return true;
}
return false;
}, 2000); }, 2000);
}); });
@ -302,4 +294,21 @@ export class MoodleMobileApp implements OnInit {
document.body.classList.remove(tempClass); document.body.classList.remove(tempClass);
}); });
} }
/**
* Close one modal if any.
*
* @return {boolean} True if one modal was present.
*/
closeModal(): boolean {
// Following function is hidden in Ionic Code, however there's no solution for that.
const portal = this.app._getActivePortal();
if (portal) {
portal.pop();
return true;
}
return false;
}
} }