MOBILE-3631 messages: Fix splitview + route params subscription loop
parent
cf2ea354a2
commit
dce706be42
|
@ -166,16 +166,15 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
|
||||||
* Setup code for the page.
|
* Setup code for the page.
|
||||||
*/
|
*/
|
||||||
async ngOnInit(): Promise<void> {
|
async ngOnInit(): Promise<void> {
|
||||||
|
|
||||||
this.route.queryParams.subscribe(async () => {
|
|
||||||
// Disable the profile button if we're already coming from a profile.
|
// Disable the profile button if we're already coming from a profile.
|
||||||
const backViewPage = CoreNavigator.instance.getPreviousPath();
|
const backViewPage = CoreNavigator.instance.getPreviousPath();
|
||||||
this.showInfo = !backViewPage || !CoreTextUtils.instance.matchesGlob(backViewPage, '**/user/profile');
|
this.showInfo = !backViewPage || !CoreTextUtils.instance.matchesGlob(backViewPage, '**/user/profile');
|
||||||
|
|
||||||
|
this.route.queryParams.subscribe(async (params) => {
|
||||||
this.loaded = false;
|
this.loaded = false;
|
||||||
this.conversationId = CoreNavigator.instance.getRouteNumberParam('conversationId') || undefined;
|
this.conversationId = CoreNavigator.instance.getRouteNumberParam('conversationId', params) || undefined;
|
||||||
this.userId = CoreNavigator.instance.getRouteNumberParam('userId') || undefined;
|
this.userId = CoreNavigator.instance.getRouteNumberParam('userId', params) || undefined;
|
||||||
this.showKeyboard = CoreNavigator.instance.getRouteBooleanParam('showKeyboard') || false;
|
this.showKeyboard = CoreNavigator.instance.getRouteBooleanParam('showKeyboard', params) || false;
|
||||||
|
|
||||||
await this.fetchData();
|
await this.fetchData();
|
||||||
|
|
||||||
|
|
|
@ -146,9 +146,9 @@ export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy {
|
||||||
* Component loaded.
|
* Component loaded.
|
||||||
*/
|
*/
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.route.queryParams.subscribe(async () => {
|
this.route.queryParams.subscribe(async (params) => {
|
||||||
const discussionUserId = CoreNavigator.instance.getRouteNumberParam('discussionUserId') ||
|
const discussionUserId = CoreNavigator.instance.getRouteNumberParam('discussionUserId', params) ||
|
||||||
CoreNavigator.instance.getRouteNumberParam('userId') || undefined;
|
CoreNavigator.instance.getRouteNumberParam('userId', params) || undefined;
|
||||||
|
|
||||||
if (this.loaded && this.discussionUserId == discussionUserId) {
|
if (this.loaded && this.discussionUserId == discussionUserId) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -280,11 +280,11 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
|
||||||
* Component loaded.
|
* Component loaded.
|
||||||
*/
|
*/
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.route.queryParams.subscribe(async () => {
|
this.route.queryParams.subscribe(async (params) => {
|
||||||
// Conversation to load.
|
// Conversation to load.
|
||||||
this.conversationId = CoreNavigator.instance.getRouteNumberParam('conversationId') || undefined;
|
this.conversationId = CoreNavigator.instance.getRouteNumberParam('conversationId', params) || undefined;
|
||||||
if (!this.conversationId) {
|
if (!this.conversationId) {
|
||||||
this.discussionUserId = CoreNavigator.instance.getRouteNumberParam('discussionUserId') || undefined;
|
this.discussionUserId = CoreNavigator.instance.getRouteNumberParam('discussionUserId', params) || undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.conversationId || this.discussionUserId) {
|
if (this.conversationId || this.discussionUserId) {
|
||||||
|
|
|
@ -241,9 +241,19 @@ export class CoreNavigatorService {
|
||||||
* @param name Name of the parameter.
|
* @param name Name of the parameter.
|
||||||
* @return Value of the parameter, undefined if not found.
|
* @return Value of the parameter, undefined if not found.
|
||||||
*/
|
*/
|
||||||
getRouteParam<T = unknown>(name: string): T | undefined {
|
getRouteParam<T = unknown>(name: string, params?: Params): T | undefined {
|
||||||
|
let value: any;
|
||||||
|
|
||||||
|
if (!params) {
|
||||||
const route = this.getCurrentRoute();
|
const route = this.getCurrentRoute();
|
||||||
const value = route.snapshot.queryParams[name] ?? route.snapshot.params[name];
|
if (!route.snapshot) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = route.snapshot.queryParams[name] ?? route.snapshot.params[name];
|
||||||
|
} else {
|
||||||
|
value = params[name];
|
||||||
|
}
|
||||||
|
|
||||||
const storedParam = this.storedParams[value];
|
const storedParam = this.storedParams[value];
|
||||||
// Remove the parameter from our map if it's in there.
|
// Remove the parameter from our map if it's in there.
|
||||||
|
@ -259,8 +269,8 @@ export class CoreNavigatorService {
|
||||||
* @param name Name of the parameter.
|
* @param name Name of the parameter.
|
||||||
* @return Value of the parameter, undefined if not found.
|
* @return Value of the parameter, undefined if not found.
|
||||||
*/
|
*/
|
||||||
getRouteNumberParam(name: string): number | undefined {
|
getRouteNumberParam(name: string, params?: Params): number | undefined {
|
||||||
const value = this.getRouteParam<string>(name);
|
const value = this.getRouteParam<string>(name, params);
|
||||||
|
|
||||||
return value !== undefined ? Number(value) : value;
|
return value !== undefined ? Number(value) : value;
|
||||||
}
|
}
|
||||||
|
@ -272,8 +282,8 @@ export class CoreNavigatorService {
|
||||||
* @param name Name of the parameter.
|
* @param name Name of the parameter.
|
||||||
* @return Value of the parameter, undefined if not found.
|
* @return Value of the parameter, undefined if not found.
|
||||||
*/
|
*/
|
||||||
getRouteBooleanParam(name: string): boolean | undefined {
|
getRouteBooleanParam(name: string, params?: Params): boolean | undefined {
|
||||||
const value = this.getRouteParam<string>(name);
|
const value = this.getRouteParam<string>(name, params);
|
||||||
|
|
||||||
return value !== undefined ? Boolean(value) : value;
|
return value !== undefined ? Boolean(value) : value;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue