SHA256
Исправить edit/delete сообщений, упростить вкладки каналов и улучшить автоскролл DM
This commit is contained in:
@@ -17,7 +17,7 @@ const CREATE_CHANNEL_FLASH_KEY = 'shine-channels-create-success';
|
||||
const MENU_OVERLAY_ID = 'channels-context-menu-overlay';
|
||||
const CHANNEL_TYPE_STORIES = 0;
|
||||
const CHANNEL_TYPE_PERSONAL = 100;
|
||||
const TAB_ORDER = ['dialogs', 'feed', 'my'];
|
||||
const TAB_ORDER = ['feed', 'my'];
|
||||
|
||||
function isChannelsDemoMode() {
|
||||
try {
|
||||
@@ -583,11 +583,9 @@ function mapMockGroups() {
|
||||
const mapRow = (channel) => ({
|
||||
...channel,
|
||||
route: `channel/${encodeRoutePart(String(channel.ownerName || 'channel'))}/${encodeRoutePart(String(channel.channelName || channel.title || channel.id))}`,
|
||||
tabCategory: channel.kind === 'own'
|
||||
tabCategory: channel.kind === 'own' || channel.kind === 'own-personal'
|
||||
? 'my'
|
||||
: channel.kind === 'own-personal'
|
||||
? 'dialogs'
|
||||
: 'feed',
|
||||
: 'feed',
|
||||
messagePreview: channel.lastMessage || 'Ждем ваших начинаний',
|
||||
isSubscribed: channel.kind !== 'own' && channel.kind !== 'own-personal',
|
||||
isOwnChannel: channel.kind === 'own' || channel.kind === 'own-personal',
|
||||
@@ -625,9 +623,7 @@ function mapApiChannelRow(summary, bucketKey, idx, index, notificationsState) {
|
||||
const channelTypeCode = Number(summary?.channel?.channelTypeCode ?? 1);
|
||||
const channelTypeVersion = Number(summary?.channel?.channelTypeVersion ?? 1);
|
||||
const isOwn = bucketKey === 'own';
|
||||
const tabCategory = isOwn
|
||||
? (channelTypeCode === CHANNEL_TYPE_PERSONAL ? 'dialogs' : 'my')
|
||||
: 'feed';
|
||||
const tabCategory = isOwn ? 'my' : 'feed';
|
||||
|
||||
const title = isOwn ? channelName : `${ownerLogin}/${channelName}`;
|
||||
|
||||
@@ -691,8 +687,6 @@ function renderEmptyState(activeTab, navigate) {
|
||||
text.className = 'meta-muted';
|
||||
if (activeTab === 'feed') {
|
||||
text.textContent = 'Нет подписок и найденных каналов.';
|
||||
} else if (activeTab === 'dialogs') {
|
||||
text.textContent = 'Чаты пока не работают.';
|
||||
} else if (activeTab === 'my') {
|
||||
text.textContent = 'У вас пока нет каналов.';
|
||||
} else {
|
||||
@@ -953,7 +947,7 @@ function renderChannelMain(channel, activeTab) {
|
||||
title.className = 'channel-row-title';
|
||||
title.textContent = activeTab === 'my' ? channel.channelName : channel.title;
|
||||
|
||||
if ((activeTab === 'my' || activeTab === 'dialogs') && channel.channelDescription) {
|
||||
if (activeTab === 'my' && channel.channelDescription) {
|
||||
const desc = document.createElement('p');
|
||||
desc.className = 'channel-row-description';
|
||||
desc.textContent = channel.channelDescription;
|
||||
@@ -1062,13 +1056,6 @@ function updateBottomCta({ button, listState, navigate, isTabEmpty = false }) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (tab === 'dialogs') {
|
||||
button.textContent = 'Новый персональный публичный чат';
|
||||
button.className = baseClass;
|
||||
button.onclick = () => navigate('add-personal-public-chat-view');
|
||||
return;
|
||||
}
|
||||
|
||||
if (tab === 'my') {
|
||||
button.textContent = 'Создать канал';
|
||||
button.className = baseClass;
|
||||
@@ -1140,18 +1127,13 @@ export function render({ navigate, route }) {
|
||||
tabsEl.className = 'channels-tabs';
|
||||
const tabLabels = {
|
||||
feed: 'Каналы',
|
||||
dialogs: 'Чаты',
|
||||
my: 'Мои',
|
||||
my: 'Мои каналы',
|
||||
};
|
||||
TAB_ORDER.forEach((tabKey) => {
|
||||
const tabBtn = document.createElement('button');
|
||||
tabBtn.type = 'button';
|
||||
tabBtn.className = `channels-tab-btn${listState.activeTab === tabKey ? ' is-active' : ''}`;
|
||||
tabBtn.textContent = tabLabels[tabKey] || tabKey;
|
||||
if (tabKey === 'dialogs') {
|
||||
tabBtn.classList.add('is-disabled');
|
||||
tabBtn.title = 'Чаты пока не работают';
|
||||
}
|
||||
tabBtn.addEventListener('click', () => {
|
||||
if (listState.activeTab === tabKey) return;
|
||||
listState.activeTab = tabKey;
|
||||
|
||||
Reference in New Issue
Block a user