UI: писать SHiNE в ссылках каналов

This commit is contained in:
AidarKC
2026-08-01 10:12:11 +04:00
parent adb0b76559
commit 8de0f8e87c
2 changed files with 13 additions and 11 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
client.version=1.4.19 client.version=1.4.20
server.version=1.4.5 server.version=1.4.5
+12 -10
View File
@@ -10,6 +10,8 @@ function decodeRoutePart(value = '') {
} }
} }
const SHINE_ROUTE_PREFIX = 'SHiNE.';
export function normalizeLogin(value = '') { export function normalizeLogin(value = '') {
return String(value || '').trim().replace(/^@+/, ''); return String(value || '').trim().replace(/^@+/, '');
} }
@@ -23,21 +25,21 @@ export function extractLoginFromBlockchainName(value = '') {
export function makeProfileRoute(login = '') { export function makeProfileRoute(login = '') {
const clean = normalizeLogin(login); const clean = normalizeLogin(login);
return clean ? `shine.${encodeRoutePart(clean)}` : 'profile'; return clean ? `${SHINE_ROUTE_PREFIX}${encodeRoutePart(clean)}` : 'profile';
} }
export function makeProfileLinksRoute(login = '') { export function makeProfileLinksRoute(login = '') {
const clean = normalizeLogin(login); const clean = normalizeLogin(login);
return clean ? `shine.${encodeRoutePart(clean)}/links` : 'network/keep-history'; return clean ? `${SHINE_ROUTE_PREFIX}${encodeRoutePart(clean)}/links` : 'network/keep-history';
} }
export function makeProfileChannelsRoute(login = '', scope = 'all') { export function makeProfileChannelsRoute(login = '', scope = 'all') {
const clean = normalizeLogin(login); const clean = normalizeLogin(login);
if (!clean) return 'channels/feed'; if (!clean) return 'channels/feed';
const normalizedScope = String(scope || '').trim().toLowerCase(); const normalizedScope = String(scope || '').trim().toLowerCase();
if (normalizedScope === 'owned') return `shine.${encodeRoutePart(clean)}/channels/owned`; if (normalizedScope === 'owned') return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(clean)}/channels/owned`;
if (normalizedScope === 'following') return `shine.${encodeRoutePart(clean)}/channels/following`; if (normalizedScope === 'following') return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(clean)}/channels/following`;
return `shine.${encodeRoutePart(clean)}/channels`; return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(clean)}/channels`;
} }
export function makeShineChannelRoute({ ownerLogin = '', ownerBlockchainName = '', channelName = '', messageBlockNumber = '' }) { export function makeShineChannelRoute({ ownerLogin = '', ownerBlockchainName = '', channelName = '', messageBlockNumber = '' }) {
@@ -45,19 +47,19 @@ export function makeShineChannelRoute({ ownerLogin = '', ownerBlockchainName = '
const chName = String(channelName || '').trim(); const chName = String(channelName || '').trim();
const msgNo = String(messageBlockNumber || '').trim(); const msgNo = String(messageBlockNumber || '').trim();
if (!ownerBch || !chName) return ''; if (!ownerBch || !chName) return '';
if (msgNo) return `shine.${encodeRoutePart(ownerBch)}/${encodeRoutePart(chName)}/${encodeRoutePart(msgNo)}`; if (msgNo) return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(ownerBch)}/${encodeRoutePart(chName)}/${encodeRoutePart(msgNo)}`;
return `shine.${encodeRoutePart(ownerBch)}/${encodeRoutePart(chName)}`; return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(ownerBch)}/${encodeRoutePart(chName)}`;
} }
export function makeShineMessageRoute({ ownerLogin = '', messageBlockchainName = '', messageBlockNumber = '' }) { export function makeShineMessageRoute({ ownerLogin = '', messageBlockchainName = '', messageBlockNumber = '' }) {
const msgBch = String(messageBlockchainName || '').trim(); const msgBch = String(messageBlockchainName || '').trim();
const msgNo = String(messageBlockNumber || '').trim(); const msgNo = String(messageBlockNumber || '').trim();
if (!msgBch || !msgNo) return ''; if (!msgBch || !msgNo) return '';
return `shine.${encodeRoutePart(msgBch)}/${encodeRoutePart(msgNo)}`; return `${SHINE_ROUTE_PREFIX}${encodeRoutePart(msgBch)}/${encodeRoutePart(msgNo)}`;
} }
export function parseShineRootSegment(segment = '') { export function parseShineRootSegment(segment = '') {
const raw = String(segment || '').trim(); const raw = String(segment || '').trim();
if (!raw.toLowerCase().startsWith('shine.')) return ''; if (!raw.toLowerCase().startsWith(SHINE_ROUTE_PREFIX.toLowerCase())) return '';
return normalizeLogin(decodeRoutePart(raw.slice('shine.'.length))); return normalizeLogin(decodeRoutePart(raw.slice(SHINE_ROUTE_PREFIX.length)));
} }