Handle auction links.

This commit is contained in:
John Preston
2025-11-14 14:40:25 +04:00
parent 4a5cdbcfb2
commit e43830c08e
5 changed files with 70 additions and 12 deletions

View File

@@ -1633,6 +1633,21 @@ bool ResolveUniqueGift(
return true;
}
bool ResolveGiftAuction(
Window::SessionController *controller,
const Match &match,
const QVariant &context) {
if (!controller) {
return false;
}
const auto slug = match->captured(1);
if (slug.isEmpty()) {
return false;
}
controller->showStarGiftAuction(slug);
return true;
}
bool ResolveConferenceCall(
Window::SessionController *controller,
const Match &match,
@@ -1770,6 +1785,10 @@ const std::vector<LocalUrlHandler> &LocalUrlHandlers() {
u"^nft/?\\?slug=([a-zA-Z0-9\\.\\_\\-]+)(&|$)"_q,
ResolveUniqueGift
},
{
u"^stargift_auction/?\\?slug=([a-zA-Z0-9\\.\\_\\-]+)(&|$)"_q,
ResolveGiftAuction
},
{
u"^call/?\\?slug=([a-zA-Z0-9\\.\\_\\-]+)(&|$)"_q,
ResolveConferenceCall
@@ -1942,6 +1961,9 @@ QString TryConvertUrlToLocal(QString url) {
} else if (const auto nftMatch = regex_match(u"^nft/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"_q, query, matchOptions)) {
const auto slug = nftMatch->captured(1);
return u"tg://nft?slug="_q + slug;
} else if (const auto auctionMatch = regex_match(u"^auction/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"_q, query, matchOptions)) {
const auto slug = auctionMatch->captured(1);
return u"tg://stargift_auction?slug="_q + slug;
} else if (const auto callMatch = regex_match(u"^call/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"_q, query, matchOptions)) {
const auto slug = callMatch->captured(1);
return u"tg://call?slug="_q + slug;