769b1cdabb
## Ticket "1742 Notification popup: incorrect target" Commentron uses old links for some of the notification types. ## Change Factored out the code that determines the new target and use it both Notifications Page and Popup Menu.
59 lines
2.1 KiB
JavaScript
59 lines
2.1 KiB
JavaScript
// @flow
|
|
import { LINKED_COMMENT_QUERY_PARAM } from 'constants/comment';
|
|
import { RULE } from 'constants/notifications';
|
|
import * as PAGES from 'constants/pages';
|
|
import { DISCUSSION_PAGE, PAGE_VIEW_QUERY } from 'page/channel/view'; // TODO: move into const to avoid lazy-load problems
|
|
import { parseURI } from 'util/lbryURI';
|
|
import { formatLbryUrlForWeb } from 'util/url';
|
|
|
|
export function getNotificationTarget(notification: WebNotification) {
|
|
const { notification_rule, notification_parameters } = notification;
|
|
|
|
switch (notification_rule) {
|
|
case RULE.WEEKLY_WATCH_REMINDER:
|
|
case RULE.DAILY_WATCH_AVAILABLE:
|
|
case RULE.DAILY_WATCH_REMIND:
|
|
return `/$/${PAGES.CHANNELS_FOLLOWING}`;
|
|
case RULE.MISSED_OUT:
|
|
case RULE.REWARDS_APPROVAL_PROMPT:
|
|
return `/$/${PAGES.REWARDS_VERIFY}?redirect=/$/${PAGES.REWARDS}`;
|
|
case RULE.FIAT_TIP:
|
|
return `/$/${PAGES.WALLET}?fiatType=incoming&tab=fiat-payment-history¤cy=fiat`;
|
|
default:
|
|
return notification_parameters.device.target;
|
|
}
|
|
}
|
|
|
|
function getUrlParams(notification, notificationTarget) {
|
|
const { notification_rule, notification_parameters } = notification;
|
|
|
|
const isCommentNotification =
|
|
notification_rule === RULE.COMMENT ||
|
|
notification_rule === RULE.COMMENT_REPLY ||
|
|
notification_rule === RULE.CREATOR_COMMENT;
|
|
|
|
const urlParams = new URLSearchParams();
|
|
|
|
if (isCommentNotification && notification_parameters.dynamic.hash) {
|
|
urlParams.append(LINKED_COMMENT_QUERY_PARAM, notification_parameters.dynamic.hash);
|
|
}
|
|
|
|
try {
|
|
const { isChannel } = parseURI(notificationTarget);
|
|
if (isChannel) urlParams.append(PAGE_VIEW_QUERY, DISCUSSION_PAGE);
|
|
} catch (e) {}
|
|
|
|
return urlParams;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param notification
|
|
* @param target Optional (minor optimization if pre-calculated outside). Must be value from getNotificationTarget().
|
|
* @returns {string}
|
|
*/
|
|
export function getNotificationLink(notification: WebNotification, target: ?string) {
|
|
const notificationTarget = target || getNotificationTarget(notification);
|
|
const urlParams = getUrlParams(notification, notificationTarget);
|
|
return `${formatLbryUrlForWeb(notificationTarget)}?${urlParams.toString()}`;
|
|
}
|