Добавить страницу донатов канала

This commit is contained in:
AidarKC
2026-09-17 22:43:49 +03:00
parent 7b81d140ec
commit 7aa05dc609
10 changed files with 1609 additions and 124 deletions
+55 -13
View File
@@ -28,6 +28,7 @@ const PRETTY_PATHS = new Map([
['add-personal-public-chat-view', 'channels/new-public-chat'],
['channel-view', 'channel'],
['channel-about-view', 'channel/about'],
['channel-donate-view', 'channel/donate'],
['channel-thread-view', 'thread'],
['network-view', 'network'],
['notifications-view', 'notifications'],
@@ -180,9 +181,9 @@ export function parseRouteFromPath(pathname = '') {
const channelName = decodePart(segments[1] || '');
const sub = decodePart(segments[2] || '').toLowerCase();
if (ownerBlockchainName && channelName) {
if (sub === 'about') {
if (sub === 'about' || sub === 'donate') {
return {
pageId: 'channel-about-view',
pageId: sub === 'donate' ? 'channel-donate-view' : 'channel-about-view',
params: {
ownerBlockchainName,
channelRootBlockNumber: '',
@@ -270,16 +271,19 @@ export function parseRouteFromPath(pathname = '') {
}
if (pageId === 'channel') {
if (segments.length >= 5 && decodePart(segments[4] || '').toLowerCase() === 'about') {
return {
pageId: 'channel-about-view',
params: {
ownerBlockchainName: decodePart(segments[1]),
channelRootBlockNumber: segments[2] || '',
channelRootBlockHash: segments[3] || '',
channelId: '',
},
};
if (segments.length >= 5) {
const sub = decodePart(segments[4] || '').toLowerCase();
if (sub === 'about' || sub === 'donate') {
return {
pageId: sub === 'donate' ? 'channel-donate-view' : 'channel-about-view',
params: {
ownerBlockchainName: decodePart(segments[1]),
channelRootBlockNumber: segments[2] || '',
channelRootBlockHash: segments[3] || '',
channelId: '',
},
};
}
}
if (segments.length >= 4) {
return {
@@ -358,6 +362,18 @@ export function parseRouteFromPath(pathname = '') {
return { pageId: 'remote-addblock-session-view', params: {} };
}
if (pageId === 'channel-donate-view' || pageId === 'channel-about-view') {
return {
pageId,
params: {
ownerBlockchainName: decodePart(segments[1]),
channelRootBlockNumber: segments[2] || '',
channelRootBlockHash: segments[3] || '',
channelId: '',
},
};
}
if (pageId === 'channel-view') {
if (segments.length >= 4) {
return {
@@ -399,6 +415,32 @@ export function parseRouteFromPath(pathname = '') {
return { pageId, params: { mode: segments[1] ? decodePart(segments[1]) : '' } };
}
// Публичная короткая ссылка канала не содержит внутренний номер блокчейна:
// /<login>/<channel>. Старый /<login>-001/<channel> обрабатывается выше.
if (segments.length === 2 || (segments.length === 3 && ['about', 'donate'].includes(decodePart(segments[2] || '').toLowerCase()))) {
const ownerBlockchainName = decodePart(segments[0] || '');
const channelName = decodePart(segments[1] || '');
if (ownerBlockchainName && channelName) {
if (segments.length === 3) {
const sub = decodePart(segments[2] || '').toLowerCase();
return {
pageId: sub === 'donate' ? 'channel-donate-view' : 'channel-about-view',
params: {
ownerBlockchainName,
channelRootBlockNumber: '',
channelRootBlockHash: '',
channelId: '',
channelName,
},
};
}
return {
pageId: 'channel-view',
params: { ownerBlockchainName, channelName, channelId: '' },
};
}
}
return { pageId, params: {} };
}
@@ -467,7 +509,7 @@ export function resolveToolbarActive(pageId) {
pageId === 'solana-users-init-view'
) return 'profile-view';
if (pageId === 'chat-view' || pageId === 'contact-search-view') return 'messages-list';
if (pageId === 'channel-view' || pageId === 'channel-about-view' || pageId === 'channel-thread-view' || pageId === 'add-channel-view' || pageId === 'add-personal-public-chat-view') return 'channels-list';
if (pageId === 'channel-view' || pageId === 'channel-about-view' || pageId === 'channel-donate-view' || pageId === 'channel-thread-view' || pageId === 'add-channel-view' || pageId === 'add-personal-public-chat-view') return 'channels-list';
if (pageId === 'user') return 'messages-list';
return 'profile-view';
}