UI: обновить ссылки SHiNE и форму канала

This commit is contained in:
AidarKC
2026-08-07 14:38:27 +04:00
parent 98140c1f71
commit 3f402fbde7
4 changed files with 105 additions and 40 deletions
+12 -10
View File
@@ -1,4 +1,4 @@
import { parseShineRootSegment } from './services/shine-routes.js';
import { parseShineRouteParts } from './services/shine-routes.js';
const ROOT_PAGES = ['messages-list', 'channels-list', 'network-view', 'notifications-view', 'profile-view'];
const PRETTY_PATHS = new Map([
@@ -90,9 +90,11 @@ export function getRoute() {
};
const isLikelyBlockNumber = (value) => /^[0-9]+$/.test(String(value || '').trim());
const shineLogin = parseShineRootSegment(pageId);
if (shineLogin) {
const section = decodePart(segments[1] || '').toLowerCase();
const shineRoute = parseShineRouteParts(segments);
if (shineRoute?.entity) {
const shineLogin = shineRoute.entity;
const baseOffset = Number(shineRoute.offset || 0);
const section = decodePart(segments[baseOffset] || '').toLowerCase();
if (!section) {
return { pageId: 'user', params: { login: shineLogin, fromPage: 'messages-list', section: 'profile' } };
}
@@ -100,7 +102,7 @@ export function getRoute() {
return { pageId: 'network-view', params: { mode: 'keep-history', login: shineLogin } };
}
if (section === 'channels') {
const sub = decodePart(segments[2] || '').toLowerCase();
const sub = decodePart(segments[baseOffset + 1] || '').toLowerCase();
if (sub === 'owned') {
return {
pageId: 'channels-list',
@@ -118,12 +120,12 @@ export function getRoute() {
params: { mode: 'feed', login: shineLogin, scope: 'all' },
};
}
if (segments.length === 2 && isLikelyBlockNumber(segments[1])) {
if (segments.length === baseOffset + 1 && isLikelyBlockNumber(segments[baseOffset])) {
return {
pageId: 'channel-thread-view',
params: {
messageBlockchainName: shineLogin,
messageBlockNumber: segments[1] || '',
messageBlockNumber: segments[baseOffset] || '',
messageBlockHash: '',
channelOwnerBlockchainName: '',
channelRootBlockNumber: '',
@@ -131,10 +133,10 @@ export function getRoute() {
},
};
}
if (segments.length >= 2) {
if (segments.length >= baseOffset + 1) {
const ownerBlockchainName = shineLogin;
const channelName = decodePart(segments[1] || '');
const messageBlockNumber = segments[2] || '';
const channelName = decodePart(segments[baseOffset] || '');
const messageBlockNumber = segments[baseOffset + 1] || '';
if (ownerBlockchainName && channelName && messageBlockNumber) {
return {
pageId: 'channel-thread-view',