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' |
|
export type DeepLinkMethod = 'resolve' | 'login' | 'passport' | 'settings' | 'join' | 'addstickers' | 'addemoji' |
|
||||||
'setlanguage' | 'addtheme' | 'confirmphone' | 'socks' | 'proxy' | 'privatepost' | 'bg' | 'share' | 'msg' | 'msg_url' |
|
'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 {
|
interface PublicMessageLink {
|
||||||
type: 'publicMessageLink';
|
type: 'publicMessageLink';
|
||||||
@ -71,6 +71,16 @@ interface BusinessChatLink {
|
|||||||
slug: string;
|
slug: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface PremiumReferrerLink {
|
||||||
|
type: 'premiumReferrerLink';
|
||||||
|
referrer: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PremiumMultigiftLink {
|
||||||
|
type: 'premiumMultigiftLink';
|
||||||
|
referrer: string;
|
||||||
|
}
|
||||||
|
|
||||||
type DeepLink =
|
type DeepLink =
|
||||||
TelegramPassportLink |
|
TelegramPassportLink |
|
||||||
LoginCodeLink |
|
LoginCodeLink |
|
||||||
@ -79,7 +89,9 @@ type DeepLink =
|
|||||||
ShareLink |
|
ShareLink |
|
||||||
ChatFolderLink |
|
ChatFolderLink |
|
||||||
PublicUsernameOrBotLink |
|
PublicUsernameOrBotLink |
|
||||||
BusinessChatLink;
|
BusinessChatLink |
|
||||||
|
PremiumReferrerLink |
|
||||||
|
PremiumMultigiftLink;
|
||||||
|
|
||||||
type BuilderParams<T extends DeepLink> = Record<keyof Omit<T, 'type'>, string | undefined>;
|
type BuilderParams<T extends DeepLink> = Record<keyof Omit<T, 'type'>, string | undefined>;
|
||||||
type BuilderReturnType<T extends DeepLink> = T | undefined;
|
type BuilderReturnType<T extends DeepLink> = T | undefined;
|
||||||
@ -191,6 +203,10 @@ function parseTgLink(url: URL) {
|
|||||||
});
|
});
|
||||||
case 'businessChatLink':
|
case 'businessChatLink':
|
||||||
return buildBusinessChatLink({ slug: queryParams.slug });
|
return buildBusinessChatLink({ slug: queryParams.slug });
|
||||||
|
case 'premiumReferrerLink':
|
||||||
|
return buildPremiumReferrerLink({ referrer: queryParams.ref });
|
||||||
|
case 'premiumMultigiftLink':
|
||||||
|
return buildPremiumMultigiftLink({ referrer: queryParams.ref });
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -364,6 +380,10 @@ function getTgDeepLinkType(
|
|||||||
return 'telegramPassportLink';
|
return 'telegramPassportLink';
|
||||||
case 'message':
|
case 'message':
|
||||||
return 'businessChatLink';
|
return 'businessChatLink';
|
||||||
|
case 'premium_offer':
|
||||||
|
return 'premiumReferrerLink';
|
||||||
|
case 'premium_multigift':
|
||||||
|
return 'premiumMultigiftLink';
|
||||||
default:
|
default:
|
||||||
break;
|
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) {
|
function isNumber(s: string) {
|
||||||
return /^-?\d+$/.test(s);
|
return /^-?\d+$/.test(s);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,12 @@ export const processDeepLink = (url: string): boolean => {
|
|||||||
slug: parsedLink.slug,
|
slug: parsedLink.slug,
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
case 'premiumReferrerLink':
|
||||||
|
actions.openPremiumModal();
|
||||||
|
return true;
|
||||||
|
case 'premiumMultigiftLink':
|
||||||
|
actions.openPremiumGiftingModal();
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user