MOBILE-3320 android: Fix issues with back button in some pages
parent
e5b63b9dc2
commit
a0a0385c95
|
@ -21,10 +21,14 @@ import { CoreCommentsComponentsModule } from '@features/comments/components/comp
|
|||
|
||||
import { CoreTagComponentsModule } from '@features/tag/components/components.module';
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { AddonBlogMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
function buildRoutes(injector: Injector): Routes {
|
||||
return [
|
||||
...buildTabMainRoutes(injector, {
|
||||
data: {
|
||||
mainMenuTabRoot: AddonBlogMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonBlogEntriesPage,
|
||||
}),
|
||||
];
|
||||
|
|
|
@ -16,6 +16,7 @@ import { Injector, NgModule } from '@angular/core';
|
|||
import { Route, RouterModule, ROUTES, Routes } from '@angular/router';
|
||||
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { AddonCalendarMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
export const AddonCalendarEditRoute: Route = {
|
||||
path: 'edit/:eventId',
|
||||
|
@ -33,14 +34,14 @@ function buildRoutes(injector: Injector): Routes {
|
|||
{
|
||||
path: 'index',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonCalendarMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
loadChildren: () => import('@/addons/calendar/pages/index/index.module').then(m => m.AddonCalendarIndexPageModule),
|
||||
},
|
||||
{
|
||||
path: 'list',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonCalendarMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
loadChildren: () => import('@/addons/calendar/pages/list/list.module').then(m => m.AddonCalendarListPageModule),
|
||||
},
|
||||
|
|
|
@ -25,11 +25,15 @@ import { AddonCompetencyCompetencyPage } from './pages/competency/competency';
|
|||
import { AddonCompetencyCompetencySummaryPage } from './pages/competencysummary/competencysummary';
|
||||
import { AddonCompetencyCourseCompetenciesPage } from './pages/coursecompetencies/coursecompetencies.page';
|
||||
import { AddonCompetencyCourseCompetenciesPageModule } from './pages/coursecompetencies/coursecompetencies.module';
|
||||
import { AddonCompetencyMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
const mobileRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
pathMatch: 'full',
|
||||
data: {
|
||||
mainMenuTabRoot: AddonCompetencyMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonCompetencyPlanListPage,
|
||||
},
|
||||
{
|
||||
|
@ -75,6 +79,9 @@ const tabletRoutes: Routes = [
|
|||
},
|
||||
{
|
||||
path: '',
|
||||
data: {
|
||||
mainMenuTabRoot: AddonCompetencyMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonCompetencyPlanListPage,
|
||||
children: [
|
||||
{
|
||||
|
|
|
@ -22,12 +22,13 @@ import { CoreSharedModule } from '@/core/shared.module';
|
|||
import { CoreSearchComponentsModule } from '@features/search/components/components.module';
|
||||
|
||||
import { AddonMessagesDiscussions35Page } from './discussions.page';
|
||||
import { AddonMessagesMainMenuHandlerService } from '@addons/messages/services/handlers/mainmenu';
|
||||
|
||||
const mobileRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonMessagesDiscussions35Page,
|
||||
},
|
||||
|
@ -38,7 +39,7 @@ const tabletRoutes: Routes = [
|
|||
{
|
||||
path: '',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonMessagesDiscussions35Page,
|
||||
children: [
|
||||
|
|
|
@ -21,12 +21,13 @@ import { CoreScreen } from '@services/screen';
|
|||
import { CoreSharedModule } from '@/core/shared.module';
|
||||
|
||||
import { AddonMessagesGroupConversationsPage } from './group-conversations.page';
|
||||
import { AddonMessagesMainMenuHandlerService } from '@addons/messages/services/handlers/mainmenu';
|
||||
|
||||
const mobileRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonMessagesGroupConversationsPage,
|
||||
},
|
||||
|
@ -37,7 +38,7 @@ const tabletRoutes: Routes = [
|
|||
{
|
||||
path: '',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: AddonMessagesGroupConversationsPage,
|
||||
children: [
|
||||
|
|
|
@ -16,13 +16,14 @@ import { Injector, NgModule } from '@angular/core';
|
|||
import { RouterModule, ROUTES, Routes } from '@angular/router';
|
||||
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { AddonNotificationsMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
function buildRoutes(injector: Injector): Routes {
|
||||
return [
|
||||
{
|
||||
path: 'list',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonNotificationsMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
loadChildren: () => import('./pages/list/list.module').then(m => m.AddonNotificationsListPageModule),
|
||||
},
|
||||
|
|
|
@ -16,13 +16,14 @@ import { Injector, NgModule } from '@angular/core';
|
|||
import { RouterModule, ROUTES, Routes } from '@angular/router';
|
||||
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { AddonPrivateFilesMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
function buildRoutes(injector: Injector): Routes {
|
||||
return [
|
||||
{
|
||||
path: 'root',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: AddonPrivateFilesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
loadChildren: () => import('./pages/index/index.module').then(m => m.AddonPrivateFilesIndexPageModule),
|
||||
},
|
||||
|
|
|
@ -23,10 +23,14 @@ import { CoreGradesCoursePage } from './pages/course/course.page';
|
|||
import { CoreGradesCoursePageModule } from './pages/course/course.module';
|
||||
import { CoreGradesCoursesPage } from './pages/courses/courses.page';
|
||||
import { CoreGradesGradePage } from './pages/grade/grade.page';
|
||||
import { CoreGradesMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
const mobileRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
data: {
|
||||
mainMenuTabRoot: CoreGradesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: CoreGradesCoursesPage,
|
||||
},
|
||||
{
|
||||
|
@ -42,6 +46,9 @@ const mobileRoutes: Routes = [
|
|||
const tabletRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
data: {
|
||||
mainMenuTabRoot: CoreGradesMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: CoreGradesCoursesPage,
|
||||
children: [
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@ import { CoreSharedModule } from '@/core/shared.module';
|
|||
import { CoreMainMenuHomePage } from './home';
|
||||
import { MAIN_MENU_HOME_ROUTES } from './home-routing.module';
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { CoreMainMenuHomeHandlerService } from '@features/mainmenu/services/handlers/mainmenu';
|
||||
|
||||
function buildRoutes(injector: Injector): Routes {
|
||||
const routes = resolveModuleRoutes(injector, MAIN_MENU_HOME_ROUTES);
|
||||
|
@ -29,7 +30,7 @@ function buildRoutes(injector: Injector): Routes {
|
|||
...buildTabMainRoutes(injector, {
|
||||
path: '',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
||||
},
|
||||
component: CoreMainMenuHomePage,
|
||||
children: routes.children,
|
||||
|
|
|
@ -176,12 +176,12 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
e.stopImmediatePropagation();
|
||||
|
||||
// Current tab was clicked. Check if user is already at root level.
|
||||
const mainMenuRootRoute = CoreNavigator.getCurrentRoute({ routeData: { isMainMenuRoot: true } });
|
||||
if (mainMenuRootRoute) {
|
||||
const isMainMenuRoot = await this.currentRouteIsMainMenuRoot();
|
||||
if (isMainMenuRoot) {
|
||||
return; // Already at root level, nothing to do.
|
||||
}
|
||||
|
||||
// Current route doesn't define isMainMenuRoot. Check if the current path is the tab one.
|
||||
// Maybe the route isn't defined as it should. Check if the current path is the tab one.
|
||||
const currentPath = CoreNavigator.getCurrentPath();
|
||||
if (currentPath == `/main/${page}`) {
|
||||
return; // Already at root level, nothing to do.
|
||||
|
@ -227,8 +227,8 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
event.detail.register(-10, async (processNextHandler: () => void) => {
|
||||
// This callback can be called at the same time as Ionic's back navigation callback.
|
||||
// Check if user is already at the root of a tab.
|
||||
const mainMenuRootRoute = CoreNavigator.getCurrentRoute({ routeData: { isMainMenuRoot: true } });
|
||||
if (!mainMenuRootRoute) {
|
||||
const isMainMenuRoot = await this.currentRouteIsMainMenuRoot();
|
||||
if (!isMainMenuRoot) {
|
||||
return; // Not at root level, let Ionic handle the navigation.
|
||||
}
|
||||
|
||||
|
@ -257,6 +257,16 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if current route is the root of the current main menu tab.
|
||||
*
|
||||
* @return Promise.
|
||||
*/
|
||||
protected async currentRouteIsMainMenuRoot(): Promise<boolean> {
|
||||
// Check if the current route is the root of the current main menu tab.
|
||||
return !!CoreNavigator.getCurrentRoute({ routeData: { mainMenuTabRoot: CoreNavigator.getCurrentMainMenuTab() } });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,6 +18,7 @@ import { RouterModule, ROUTES } from '@angular/router';
|
|||
import { CoreSharedModule } from '@/core/shared.module';
|
||||
import { CoreMainMenuMorePage } from './more';
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { CoreMainMenuProvider } from '@features/mainmenu/services/mainmenu';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -31,7 +32,7 @@ import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.modu
|
|||
useFactory: (injector: Injector) => buildTabMainRoutes(injector, {
|
||||
component: CoreMainMenuMorePage,
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: CoreMainMenuProvider.MORE_PAGE_NAME,
|
||||
},
|
||||
}),
|
||||
},
|
||||
|
|
|
@ -16,6 +16,7 @@ import { Injector, NgModule } from '@angular/core';
|
|||
import { Route, RouterModule, ROUTES, Routes } from '@angular/router';
|
||||
|
||||
import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module';
|
||||
import { CoreTagMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
export const CoreTagIndexAreaRoute: Route = {
|
||||
path: 'index-area',
|
||||
|
@ -32,7 +33,7 @@ function buildRoutes(injector: Injector): Routes {
|
|||
{
|
||||
path: 'search',
|
||||
data: {
|
||||
isMainMenuRoot: true,
|
||||
mainMenuTabRoot: CoreTagMainMenuHandlerService.PAGE_NAME,
|
||||
},
|
||||
loadChildren: () => import('@features/tag//pages/search/search.page.module').then(m => m.CoreTagSearchPageModule),
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue