Message: Support links to Premium gifts and Premium modal (#4520)
This commit is contained in:
parent
bade55602a
commit
3e25fbd9c3
@ -6,7 +6,7 @@ import { isUsernameValid } from './username';
|
||||
|
||||
export type DeepLinkMethod = 'resolve' | 'login' | 'passport' | 'settings' | 'join' | 'addstickers' | 'addemoji' |
|
||||
'setlanguage' | 'addtheme' | 'confirmphone' | 'socks' | 'proxy' | 'privatepost' | 'bg' | 'share' | 'msg' | 'msg_url' |
|
||||
'invoice' | 'addlist' | 'boost' | 'giftcode' | 'message';
|
||||
'invoice' | 'addlist' | 'boost' | 'giftcode' | 'message' | 'premium_offer' | 'premium_multigift';
|
||||
|
||||
interface PublicMessageLink {
|
||||
type: 'publicMessageLink';
|
||||
@ -71,6 +71,16 @@ interface BusinessChatLink {
|
||||
slug: string;
|
||||
}
|
||||
|
||||
interface PremiumReferrerLink {
|
||||
type: 'premiumReferrerLink';
|
||||
referrer: string;
|
||||
}
|
||||
|
||||
interface PremiumMultigiftLink {
|
||||
type: 'premiumMultigiftLink';
|
||||
referrer: string;
|
||||
}
|
||||
|
||||
type DeepLink =
|
||||
TelegramPassportLink |
|
||||
LoginCodeLink |
|
||||
@ -79,7 +89,9 @@ type DeepLink =
|
||||
ShareLink |
|
||||
ChatFolderLink |
|
||||
PublicUsernameOrBotLink |
|
||||
BusinessChatLink;
|
||||
BusinessChatLink |
|
||||
PremiumReferrerLink |
|
||||
PremiumMultigiftLink;
|
||||
|
||||
type BuilderParams<T extends DeepLink> = Record<keyof Omit<T, 'type'>, string | undefined>;
|
||||
type BuilderReturnType<T extends DeepLink> = T | undefined;
|
||||
@ -191,6 +203,10 @@ function parseTgLink(url: URL) {
|
||||
});
|
||||
case 'businessChatLink':
|
||||
return buildBusinessChatLink({ slug: queryParams.slug });
|
||||
case 'premiumReferrerLink':
|
||||
return buildPremiumReferrerLink({ referrer: queryParams.ref });
|
||||
case 'premiumMultigiftLink':
|
||||
return buildPremiumMultigiftLink({ referrer: queryParams.ref });
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -364,6 +380,10 @@ function getTgDeepLinkType(
|
||||
return 'telegramPassportLink';
|
||||
case 'message':
|
||||
return 'businessChatLink';
|
||||
case 'premium_offer':
|
||||
return 'premiumReferrerLink';
|
||||
case 'premium_multigift':
|
||||
return 'premiumMultigiftLink';
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -532,6 +552,37 @@ function buildBusinessChatLink(params: BuilderParams<BusinessChatLink>): Builder
|
||||
};
|
||||
}
|
||||
|
||||
function buildPremiumReferrerLink(params: BuilderParams<PremiumReferrerLink>): BuilderReturnType<PremiumReferrerLink> {
|
||||
const {
|
||||
referrer,
|
||||
} = params;
|
||||
|
||||
if (!referrer) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'premiumReferrerLink',
|
||||
referrer,
|
||||
};
|
||||
}
|
||||
|
||||
function buildPremiumMultigiftLink(params: BuilderParams<PremiumMultigiftLink>):
|
||||
BuilderReturnType<PremiumMultigiftLink> {
|
||||
const {
|
||||
referrer,
|
||||
} = params;
|
||||
|
||||
if (!referrer) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'premiumMultigiftLink',
|
||||
referrer,
|
||||
};
|
||||
}
|
||||
|
||||
function isNumber(s: string) {
|
||||
return /^-?\d+$/.test(s);
|
||||
}
|
||||
|
||||
@ -32,6 +32,12 @@ export const processDeepLink = (url: string): boolean => {
|
||||
slug: parsedLink.slug,
|
||||
});
|
||||
return true;
|
||||
case 'premiumReferrerLink':
|
||||
actions.openPremiumModal();
|
||||
return true;
|
||||
case 'premiumMultigiftLink':
|
||||
actions.openPremiumGiftingModal();
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user