forked from CIT/Vmeda.Online
		
	MOBILE-3662 push: Implement push todo code
This commit is contained in:
		
							parent
							
								
									9b522391b1
								
							
						
					
					
						commit
						63f8ae5f4d
					
				@ -21,8 +21,8 @@ import { CoreContentLinksDelegate } from '@features/contentlinks/services/conten
 | 
			
		||||
import { CoreUserDelegate } from '@features/user/services/user-delegate';
 | 
			
		||||
import { AddonBadgesUserHandler } from './services/handlers/user';
 | 
			
		||||
import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module';
 | 
			
		||||
// @todo import { CorePushNotificationsDelegate } from '@core/pushnotifications/services/delegate';
 | 
			
		||||
// import { AddonBadgesPushClickHandler } from './services/push-click-handler';
 | 
			
		||||
import { CorePushNotificationsDelegate } from '@features/pushnotifications/services/push-delegate';
 | 
			
		||||
import { AddonBadgesPushClickHandler } from './services/handlers/push-click';
 | 
			
		||||
 | 
			
		||||
const mainMenuHomeSiblingRoutes: Routes = [
 | 
			
		||||
    {
 | 
			
		||||
@ -44,7 +44,7 @@ const mainMenuHomeSiblingRoutes: Routes = [
 | 
			
		||||
                CoreContentLinksDelegate.instance.registerHandler(AddonBadgesMyBadgesLinkHandler.instance);
 | 
			
		||||
                CoreContentLinksDelegate.instance.registerHandler(AddonBadgesBadgeLinkHandler.instance);
 | 
			
		||||
                CoreUserDelegate.instance.registerHandler(AddonBadgesUserHandler.instance);
 | 
			
		||||
                // CorePushNotificationsDelegate.instance.registerHandler(AddonBadgesPushClickHandler.instance);
 | 
			
		||||
                CorePushNotificationsDelegate.instance.registerClickHandler(AddonBadgesPushClickHandler.instance);
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										79
									
								
								src/addons/badges/services/handlers/push-click.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/addons/badges/services/handlers/push-click.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,79 @@
 | 
			
		||||
// (C) Copyright 2015 Moodle Pty Ltd.
 | 
			
		||||
//
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
import { Injectable } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
import { CoreUtils } from '@services/utils/utils';
 | 
			
		||||
import { CorePushNotificationsClickHandler } from '@features/pushnotifications/services/push-delegate';
 | 
			
		||||
import { AddonBadges } from '../badges';
 | 
			
		||||
import { makeSingleton } from '@singletons';
 | 
			
		||||
import { CorePushNotificationsNotificationBasicData } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
import { CoreNavHelper } from '@services/nav-helper';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Handler for badges push notifications clicks.
 | 
			
		||||
 */
 | 
			
		||||
@Injectable({ providedIn: 'root' })
 | 
			
		||||
export class AddonBadgesPushClickHandlerService implements CorePushNotificationsClickHandler {
 | 
			
		||||
 | 
			
		||||
    name = 'AddonBadgesPushClickHandler';
 | 
			
		||||
    priority = 200;
 | 
			
		||||
    featureName = 'CoreUserDelegate_AddonBadges';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Check if a notification click is handled by this handler.
 | 
			
		||||
     *
 | 
			
		||||
     * @param notification The notification to check.
 | 
			
		||||
     * @return Whether the notification click is handled by this handler
 | 
			
		||||
     */
 | 
			
		||||
    async handles(notification: CorePushNotificationsNotificationBasicData): Promise<boolean> {
 | 
			
		||||
        const data = notification.customdata || {};
 | 
			
		||||
 | 
			
		||||
        if (CoreUtils.instance.isTrueOrOne(notification.notif) && notification.moodlecomponent == 'moodle' &&
 | 
			
		||||
                (notification.name == 'badgerecipientnotice' || (notification.name == 'badgecreatornotice' && data.hash))) {
 | 
			
		||||
            return AddonBadges.instance.isPluginEnabled(notification.site);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Handle the notification click.
 | 
			
		||||
     *
 | 
			
		||||
     * @param notification The notification to check.
 | 
			
		||||
     * @return Promise resolved when done.
 | 
			
		||||
     */
 | 
			
		||||
    async handleClick(notification: CorePushNotificationsNotificationBasicData): Promise<void> {
 | 
			
		||||
        const data = notification.customdata || {};
 | 
			
		||||
 | 
			
		||||
        if (data.hash) {
 | 
			
		||||
            // We have the hash, open the badge directly.
 | 
			
		||||
            return CoreNavHelper.instance.goInSite('/badges/issue', { courseId: 0, badgeHash: data.hash }, notification.site);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // No hash, open the list of user badges.
 | 
			
		||||
        await CoreUtils.instance.ignoreErrors(
 | 
			
		||||
            AddonBadges.instance.invalidateUserBadges(
 | 
			
		||||
                0,
 | 
			
		||||
                Number(notification.usertoid),
 | 
			
		||||
                notification.site,
 | 
			
		||||
            ),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        await CoreNavHelper.instance.goInSite('/badges/user', {}, notification.site);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class AddonBadgesPushClickHandler extends makeSingleton(AddonBadgesPushClickHandlerService) {}
 | 
			
		||||
@ -35,6 +35,7 @@ import {
 | 
			
		||||
} from '../../courses/services/courses';
 | 
			
		||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
			
		||||
import { CoreWSError } from '@classes/errors/wserror';
 | 
			
		||||
import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
 | 
			
		||||
const ROOT_CACHE_KEY = 'mmCourse:';
 | 
			
		||||
 | 
			
		||||
@ -73,7 +74,6 @@ export class CoreCourseProvider {
 | 
			
		||||
        // @todo
 | 
			
		||||
        // protected courseFormatDelegate: CoreCourseFormatDelegate,
 | 
			
		||||
        // protected sitePluginsProvider: CoreSitePluginsProvider,
 | 
			
		||||
        // protected pushNotificationsProvider: CorePushNotificationsProvider,
 | 
			
		||||
        this.logger = CoreLogger.getInstance('CoreCourseProvider');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -857,7 +857,6 @@ export class CoreCourseProvider {
 | 
			
		||||
     * @return Promise resolved when the WS call is successful.
 | 
			
		||||
     * @todo use logHelper. Remove eslint disable when done.
 | 
			
		||||
     */
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
			
		||||
    async logView(courseId: number, sectionNumber?: number, siteId?: string, name?: string): Promise<void> {
 | 
			
		||||
        const params: CoreCourseViewCourseWSParams = {
 | 
			
		||||
            courseid: courseId,
 | 
			
		||||
@ -869,8 +868,7 @@ export class CoreCourseProvider {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const site = await CoreSites.instance.getSite(siteId);
 | 
			
		||||
        // @todo
 | 
			
		||||
        // this.pushNotificationsProvider.logViewEvent(courseId, name, 'course', wsName, { sectionnumber: sectionNumber }, siteId);
 | 
			
		||||
        CorePushNotifications.instance.logViewEvent(courseId, name, 'course', wsName, { sectionnumber: sectionNumber }, siteId);
 | 
			
		||||
        const response: CoreStatusWithWarningsWSResponse = await site.write(wsName, params);
 | 
			
		||||
 | 
			
		||||
        if (!response.status) {
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ import { CoreFile } from '@services/file';
 | 
			
		||||
import { CoreSites } from '@services/sites';
 | 
			
		||||
import { CoreUtils } from '@services/utils/utils';
 | 
			
		||||
import { Subscription } from 'rxjs';
 | 
			
		||||
import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Device Info to be shown and copied to clipboard.
 | 
			
		||||
@ -50,7 +51,7 @@ interface CoreSettingsDeviceInfo {
 | 
			
		||||
    osVersion?: string;
 | 
			
		||||
    model?: string;
 | 
			
		||||
    uuid?: string;
 | 
			
		||||
    pushId: string;
 | 
			
		||||
    pushId?: string;
 | 
			
		||||
    localNotifAvailable: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -86,7 +87,7 @@ export class CoreSettingsDeviceInfoPage implements OnDestroy {
 | 
			
		||||
            networkStatus: appProvider.isOnline() ? 'online' : 'offline',
 | 
			
		||||
            wifiConnection: appProvider.isWifi() ? 'yes' : 'no',
 | 
			
		||||
            localNotifAvailable: CoreLocalNotifications.instance.isAvailable() ? 'yes' : 'no',
 | 
			
		||||
            pushId: '',// TODO pushNotificationsProvider.getPushId(),
 | 
			
		||||
            pushId: CorePushNotifications.instance.getPushId(),
 | 
			
		||||
            deviceType: '',
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ import { CoreConfig } from '@services/config';
 | 
			
		||||
import { CoreEvents } from '@singletons/events';
 | 
			
		||||
import { CoreLang } from '@services/lang';
 | 
			
		||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
			
		||||
// import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
import { CoreSettingsHelper, CoreColorScheme } from '../../services/settings-helper';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -160,7 +160,7 @@ export class CoreSettingsGeneralPage {
 | 
			
		||||
     * @todo
 | 
			
		||||
     */
 | 
			
		||||
    async analyticsEnabledChanged(): Promise<void> {
 | 
			
		||||
        // await this.pushNotificationsProvider.enableAnalytics(this.analyticsEnabled);
 | 
			
		||||
        await CorePushNotifications.instance.enableAnalytics(this.analyticsEnabled);
 | 
			
		||||
 | 
			
		||||
        CoreConfig.instance.set(CoreConstants.SETTINGS_ANALYTICS_ENABLED, this.analyticsEnabled ? 1 : 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,7 @@ import { CoreEvents, CoreEventUserDeletedData } from '@singletons/events';
 | 
			
		||||
import { CoreStatusWithWarningsWSResponse, CoreWSExternalWarning } from '@services/ws';
 | 
			
		||||
import { CoreError } from '@classes/errors/error';
 | 
			
		||||
import { USERS_TABLE_NAME, CoreUserDBRecord } from './database/user';
 | 
			
		||||
import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
 | 
			
		||||
 | 
			
		||||
const ROOT_CACHE_KEY = 'mmUser:';
 | 
			
		||||
 | 
			
		||||
@ -526,7 +527,7 @@ export class CoreUserProvider {
 | 
			
		||||
            params.courseid = courseId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // @todo this.pushNotificationsProvider.logViewEvent(userId, name, 'user', wsName, {courseid: courseId});
 | 
			
		||||
        CorePushNotifications.instance.logViewEvent(userId, name, 'user', wsName, { courseid: courseId });
 | 
			
		||||
 | 
			
		||||
        return site.write(wsName, params);
 | 
			
		||||
    }
 | 
			
		||||
@ -544,7 +545,7 @@ export class CoreUserProvider {
 | 
			
		||||
            courseid: courseId,
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // @todo this.pushNotificationsProvider.logViewListEvent('user', 'core_user_view_user_list', params);
 | 
			
		||||
        CorePushNotifications.instance.logViewListEvent('user', 'core_user_view_user_list', params);
 | 
			
		||||
 | 
			
		||||
        return site.write('core_user_view_user_list', params);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user