SHA256
UI: отправка UI-ошибок, персональный публичный чат, русские pending-файлы
This commit is contained in:
@@ -75,10 +75,10 @@ function buildAbsoluteRouteUrl(routePath = '') {
|
||||
|
||||
function parseThreadSelector(route) {
|
||||
const params = route?.params || {};
|
||||
if (params.ownerLogin && params.channelName && params.messageBlockNumber && params.messageBlockHash) {
|
||||
if (params.ownerBlockchainName && params.channelName && params.messageBlockNumber) {
|
||||
return {
|
||||
short: {
|
||||
ownerLogin: String(params.ownerLogin || '').trim(),
|
||||
ownerBlockchainName: String(params.ownerBlockchainName || '').trim(),
|
||||
channelName: String(params.channelName || '').trim(),
|
||||
},
|
||||
message: {
|
||||
@@ -135,13 +135,11 @@ function resolveChannelDisplayName(channelSelector) {
|
||||
}
|
||||
|
||||
function buildBackRoute(selector) {
|
||||
const channel = selector?.channel;
|
||||
if (channel?.ownerBlockchainName && channel.rootBlockNumber != null) {
|
||||
if (selector?.short?.ownerBlockchainName && selector?.short?.channelName) {
|
||||
return [
|
||||
'channel-view',
|
||||
encodeRoutePart(channel.ownerBlockchainName),
|
||||
channel.rootBlockNumber,
|
||||
channel.rootBlockHash,
|
||||
'channel',
|
||||
encodeRoutePart(selector.short.ownerBlockchainName),
|
||||
encodeRoutePart(selector.short.channelName),
|
||||
].join('/');
|
||||
}
|
||||
return 'channels-list';
|
||||
@@ -149,13 +147,12 @@ function buildBackRoute(selector) {
|
||||
|
||||
function buildThreadRouteFromTarget(target, selector) {
|
||||
if (!target) return '';
|
||||
if (selector?.short?.ownerLogin && selector?.short?.channelName) {
|
||||
if (selector?.short?.ownerBlockchainName && selector?.short?.channelName) {
|
||||
return [
|
||||
'channel',
|
||||
encodeRoutePart(selector.short.ownerLogin),
|
||||
encodeRoutePart(selector.short.ownerBlockchainName),
|
||||
encodeRoutePart(selector.short.channelName),
|
||||
target.blockNumber,
|
||||
normalizeRouteHash(target.blockHash),
|
||||
].join('/');
|
||||
}
|
||||
if (!selector?.channel?.ownerBlockchainName || selector.channel.rootBlockNumber == null) return '';
|
||||
@@ -577,20 +574,44 @@ export function render({ navigate, route }) {
|
||||
(async () => {
|
||||
try {
|
||||
let resolvedMessage = selector.message;
|
||||
if (selector.short?.ownerLogin && selector.short?.channelName) {
|
||||
const ownerFeed = await authService.listSubscriptionsFeed(selector.short.ownerLogin, 1000);
|
||||
const ownChannels = Array.isArray(ownerFeed?.ownedChannels) ? ownerFeed.ownedChannels : [];
|
||||
const channel = ownChannels.find((item) => (
|
||||
String(item?.channel?.channelName || '').trim().toLowerCase() === selector.short.channelName.toLowerCase()
|
||||
if (selector.short?.ownerBlockchainName && selector.short?.channelName) {
|
||||
const ownFeed = await authService.listSubscriptionsFeed(state.session.login, 1000);
|
||||
const allRows = [
|
||||
...(Array.isArray(ownFeed?.ownedChannels) ? ownFeed.ownedChannels : []),
|
||||
...(Array.isArray(ownFeed?.followedUsersChannels) ? ownFeed.followedUsersChannels : []),
|
||||
...(Array.isArray(ownFeed?.followedChannels) ? ownFeed.followedChannels : []),
|
||||
];
|
||||
const channel = allRows.find((item) => (
|
||||
String(item?.channel?.ownerBlockchainName || '').trim() === selector.short.ownerBlockchainName
|
||||
&& String(item?.channel?.channelName || '').trim().toLowerCase() === selector.short.channelName.toLowerCase()
|
||||
));
|
||||
const ownerBch = String(channel?.channel?.ownerBlockchainName || '').trim();
|
||||
if (!ownerBch || !Number.isFinite(resolvedMessage?.blockNumber)) {
|
||||
const rootNo = Number(channel?.channel?.channelRoot?.blockNumber);
|
||||
const rootHash = normalizeRouteHash(channel?.channel?.channelRoot?.blockHash);
|
||||
if (!ownerBch || !Number.isFinite(rootNo) || !Number.isFinite(resolvedMessage?.blockNumber)) {
|
||||
throw new Error('Канал или сообщение не найдено.');
|
||||
}
|
||||
selector.channel = {
|
||||
ownerBlockchainName: ownerBch,
|
||||
rootBlockNumber: rootNo,
|
||||
rootBlockHash: rootHash,
|
||||
};
|
||||
|
||||
let resolvedHash = normalizeMessageHash(resolvedMessage?.blockHash);
|
||||
if (!resolvedHash) {
|
||||
const channelPayload = await authService.getChannelMessages(selector.channel, 400, 'asc', state.session.login);
|
||||
const messages = Array.isArray(channelPayload?.messages) ? channelPayload.messages : [];
|
||||
const foundMessage = messages.find((item) => Number(item?.messageRef?.blockNumber) === Number(resolvedMessage.blockNumber));
|
||||
const foundHash = normalizeMessageHash(foundMessage?.messageRef?.blockHash);
|
||||
if (!foundHash) {
|
||||
throw new Error('Не удалось определить hash сообщения для открытия треда.');
|
||||
}
|
||||
resolvedHash = foundHash;
|
||||
}
|
||||
resolvedMessage = {
|
||||
blockchainName: ownerBch,
|
||||
blockNumber: resolvedMessage.blockNumber,
|
||||
blockHash: normalizeRouteHash(resolvedMessage.blockHash),
|
||||
blockHash: resolvedHash,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user