MOBILE-2953 push: Use customdata in push click handlers

main
Dani Palou 2019-04-02 10:51:09 +02:00
parent b9aa0e0a90
commit 9886362499
3 changed files with 18 additions and 7 deletions

View File

@ -37,9 +37,10 @@ export class AddonBadgesPushClickHandler implements CorePushNotificationsClickHa
* @return {boolean} Whether the notification click is handled by this handler
*/
handles(notification: any): boolean | Promise<boolean> {
// @todo: Support 'badgecreatornotice' once we receive the hash or contexturl.
const data = notification.customdata || {};
if (this.utils.isTrueOrOne(notification.notif) && notification.moodlecomponent == 'moodle' &&
notification.name == 'badgerecipientnotice') {
(notification.name == 'badgerecipientnotice' || (notification.name == 'badgecreatornotice' && data.hash))) {
return this.badgesProvider.isPluginEnabled(notification.site);
}
@ -53,8 +54,14 @@ export class AddonBadgesPushClickHandler implements CorePushNotificationsClickHa
* @return {Promise<any>} Promise resolved when done.
*/
handleClick(notification: any): Promise<any> {
// @todo: Go to the badge page once we receive the hash or contexturl.
const data = notification.customdata || {};
if (data.hash) {
// We have the hash, open the badge directly.
return this.loginHelper.redirect('AddonBadgesIssuedBadgePage', {courseId: 0, badgeHash: data.hash}, notification.site);
}
// No hash, open the list of user badges.
return this.badgesProvider.invalidateUserBadges(0, Number(notification.usertoid), notification.site).catch(() => {
// Ignore errors.
}).then(() => {

View File

@ -50,13 +50,16 @@ export class AddonModForumPushClickHandler implements CorePushNotificationsClick
*/
handleClick(notification: any): Promise<any> {
const contextUrlParams = this.urlUtils.extractUrlParams(notification.contexturl),
data = notification.customdata || {},
pageParams: any = {
courseId: Number(notification.courseid),
discussionId: Number(contextUrlParams.d),
discussionId: Number(contextUrlParams.d || data.discussionid),
cmId: Number(data.cmid),
forumId: Number(data.instance)
};
if (contextUrlParams.urlHash) {
pageParams.postId = Number(contextUrlParams.urlHash.replace('p', ''));
if (data.postid || contextUrlParams.urlHash) {
pageParams.postId = Number(data.postid || contextUrlParams.urlHash.replace('p', ''));
}
return this.forumProvider.invalidateDiscussionPosts(pageParams.discussionId, notification.site).catch(() => {

View File

@ -54,12 +54,13 @@ export class AddonModQuizPushClickHandler implements CorePushNotificationsClickH
*/
handleClick(notification: any): Promise<any> {
const contextUrlParams = this.urlUtils.extractUrlParams(notification.contexturl),
data = notification.customdata || {},
courseId = Number(notification.courseid);
if (notification.name == 'submission') {
// A student made a submission, go to view the attempt.
return this.quizHelper.handleReviewLink(undefined, Number(contextUrlParams.attempt), Number(contextUrlParams.page),
courseId, undefined, notification.site);
courseId, data.instance, notification.site);
} else {
// Open the activity.
const moduleId = Number(contextUrlParams.id);