const resetBadgeAndVersion = () => {
    Client4.serverVersion = '';
    Client4.setUserId('');
    PushNotifications.setApplicationIconBadgeNumber(0);
    PushNotifications.cancelAllLocalNotifications();
    store.dispatch(setServerVersion(''));
};
Beispiel #2
0
export const onPushNotificationReply = async (data, text, badge, completed) => {
    const {dispatch, getState} = store;
    const state = getState();
    const reduxCurrentUser = getCurrentUser(state);
    const reduxCredentialsUrl = state.entities.general.credentials.url;
    const reduxCredentialsToken = state.entities.general.credentials.token;

    const currentUserId = reduxCurrentUser ? reduxCurrentUser.id : app.currentUserId;
    const url = reduxCredentialsUrl || app.url;
    const token = reduxCredentialsToken || app.token;

    if (currentUserId) {
        // one thing to note is that for android it will reply to the last post in the stack
        const rootId = data.root_id || data.post_id;
        const post = {
            user_id: currentUserId,
            channel_id: data.channel_id,
            root_id: rootId,
            parent_id: rootId,
            message: text,
        };

        if (!Client4.getUrl()) {
            // Make sure the Client has the server url set
            Client4.setUrl(url);
        }

        if (!Client4.getToken()) {
            // Make sure the Client has the server token set
            Client4.setToken(token);
        }

        retryGetPostsAction(getPosts(data.channel_id), dispatch, getState);
        const result = await dispatch(createPostForNotificationReply(post));
        if (result.error) {
            const locale = reduxCurrentUser ? reduxCurrentUser.locale : DEFAULT_LOCALE;
            PushNotifications.localNotification({
                message: getLocalizedMessage(locale, t('mobile.reply_post.failed')),
                userInfo: {
                    localNotification: true,
                    localTest: true,
                },
            });
            console.warn('Failed to send reply to push notification', result.error); // eslint-disable-line no-console
            completed();
            return;
        }

        if (badge >= 0) {
            PushNotifications.setApplicationIconBadgeNumber(badge);
        }

        dispatch(markChannelAsRead(data.channel_id));
        app.setReplyNotificationData(null);
        completed();
    } else {
        app.setReplyNotificationData({
            data,
            text,
            badge,
            completed,
        });
    }
};