MOBILE-3659 navigator: Create functions to get number/boolean params

main
Dani Palou 2021-01-25 12:37:14 +01:00
parent 83dc2ba39e
commit afa94e3354
6 changed files with 34 additions and 10 deletions

View File

@ -97,9 +97,9 @@ export class CoreCourseContentsPage implements OnInit, OnDestroy {
}
this.course = course;
this.sectionId = CoreNavigator.instance.getRouteParam('sectionId');
this.sectionNumber = CoreNavigator.instance.getRouteParam('sectionNumber');
this.moduleId = CoreNavigator.instance.getRouteParam('moduleId');
this.sectionId = CoreNavigator.instance.getRouteNumberParam('sectionId');
this.sectionNumber = CoreNavigator.instance.getRouteNumberParam('sectionNumber');
this.moduleId = CoreNavigator.instance.getRouteNumberParam('moduleId');
this.displayEnableDownload = !CoreSites.instance.getCurrentSite()?.isOfflineDisabled() &&
CoreCourseFormatDelegate.instance.displayEnableDownload(this.course);

View File

@ -88,8 +88,8 @@ export class CoreCourseIndexPage implements OnInit, OnDestroy {
this.contentsTab.page = CoreTextUtils.instance.concatenatePaths(this.currentPagePath, this.contentsTab.page);
this.contentsTab.pageParams = {
course: this.course,
sectionId: CoreNavigator.instance.getRouteParam<number>('sectionId'),
sectionNumber: CoreNavigator.instance.getRouteParam<number>('sectionNumber'),
sectionId: CoreNavigator.instance.getRouteNumberParam('sectionId'),
sectionNumber: CoreNavigator.instance.getRouteNumberParam('sectionNumber'),
};
if (module) {

View File

@ -47,7 +47,7 @@ export class CoreCourseListModTypePage implements OnInit {
*/
async ngOnInit(): Promise<void> {
this.title = CoreNavigator.instance.getRouteParam('title') || '';
this.courseId = CoreNavigator.instance.getRouteParam('courseId');
this.courseId = CoreNavigator.instance.getRouteNumberParam('courseId');
this.modName = CoreNavigator.instance.getRouteParam('modName');
this.downloadEnabled = !CoreSites.instance.getCurrentSite()?.isOfflineDisabled();

View File

@ -36,7 +36,7 @@ export class CoreCourseUnsupportedModulePage implements OnInit {
*/
ngOnInit(): void {
this.module = CoreNavigator.instance.getRouteParam('module');
this.courseId = CoreNavigator.instance.getRouteParam('courseId');
this.courseId = CoreNavigator.instance.getRouteNumberParam('courseId');
}
/**

View File

@ -97,7 +97,7 @@ export class CoreCoursesCoursePreviewPage implements OnInit, OnDestroy {
*/
async ngOnInit(): Promise<void> {
this.course = CoreNavigator.instance.getRouteParam('course');
this.avoidOpenCourse = !!CoreNavigator.instance.getRouteParam('avoidOpenCourse');
this.avoidOpenCourse = !!CoreNavigator.instance.getRouteBooleanParam('avoidOpenCourse');
if (!this.course) {
CoreNavigator.instance.back();

View File

@ -210,11 +210,35 @@ export class CoreNavigatorService {
// Remove the parameter from our map if it's in there.
delete this.storedParams[value];
// @todo: Convert strings to number/boolean if needed? All number & boolean params are converted to string.
return <T> storedParam ?? value;
}
/**
* Get a number route param.
* Angular router automatically converts numbers to string, this function automatically converts it back to number.
*
* @param name Name of the parameter.
* @return Value of the parameter, undefined if not found.
*/
getRouteNumberParam(name: string): number | undefined {
const value = this.getRouteParam<string>(name);
return value !== undefined ? Number(value) : value;
}
/**
* Get a boolean route param.
* Angular router automatically converts booleans to string, this function automatically converts it back to boolean.
*
* @param name Name of the parameter.
* @return Value of the parameter, undefined if not found.
*/
getRouteBooleanParam(name: string): boolean | undefined {
const value = this.getRouteParam<string>(name);
return value !== undefined ? Boolean(value) : value;
}
/**
* Navigate back.
*