import { renderHeader } from '../components/header.js?v=20260330001044'; import { channels } from '../mock-data.js?v=20260330001044'; export const pageMeta = { id: 'channels-list', title: 'Каналы' }; function openSimpleSubscribeModal(kindLabel) { const root = document.getElementById('modal-root'); root.innerHTML = ` `; const close = () => { root.innerHTML = ''; }; root.querySelector('#sub-cancel').addEventListener('click', close); root.querySelector('#sub-submit').addEventListener('click', close); } function renderChannelRow(channel, navigate) { const row = document.createElement('article'); row.className = 'list-item'; row.innerHTML = `
${channel.initials}
# ${channel.name}

${channel.description}

${channel.lastMessage}

Владелец: ${channel.ownerName}

Канал ${channel.time} ${channel.messagesCount}
`; row.addEventListener('click', () => navigate(`channel-view/${channel.id}`)); return row; } function renderSection(title, items, navigate) { const wrap = document.createElement('section'); wrap.className = 'stack'; const header = document.createElement('h3'); header.className = 'section-title'; header.textContent = title; wrap.append(header); items.forEach((channel) => { wrap.append(renderChannelRow(channel, navigate)); }); return wrap; } export function render({ navigate }) { const screen = document.createElement('section'); screen.className = 'stack'; screen.append( renderHeader({ title: 'Каналы', rightActions: [ { label: 'Подписаться на человека', onClick: () => openSimpleSubscribeModal('Подписка на человека') }, { label: 'Подписаться на канал', onClick: () => openSimpleSubscribeModal('Подписка на канал') }, ], }) ); const ownChannels = channels .filter((channel) => channel.kind === 'own-personal' || channel.kind === 'own') .sort((a, b) => { if (a.kind === 'own-personal') return -1; if (b.kind === 'own-personal') return 1; return a.name.localeCompare(b.name, 'ru'); }); const followedUserChannels = channels.filter((channel) => channel.kind === 'followed-user-channel'); const subscribedChannels = channels.filter((channel) => channel.kind === 'subscribed'); const listWrap = document.createElement('div'); listWrap.className = 'channels-scroll-wrap'; const list = document.createElement('div'); list.className = 'stack channels-groups'; list.append(renderSection('Мои каналы', ownChannels, navigate)); const dividerOne = document.createElement('hr'); dividerOne.className = 'channels-divider'; list.append(dividerOne); list.append(renderSection('Каналы пользователей, на кого вы подписаны', followedUserChannels, navigate)); const dividerTwo = document.createElement('hr'); dividerTwo.className = 'channels-divider'; list.append(dividerTwo); list.append(renderSection('Каналы, на которые вы подписаны', subscribedChannels, navigate)); const addChannelButton = document.createElement('button'); addChannelButton.className = 'primary-btn'; addChannelButton.textContent = 'Добавить канал'; addChannelButton.addEventListener('click', () => navigate('add-channel-view')); list.append(addChannelButton); const scrollHint = document.createElement('div'); scrollHint.className = 'channels-scroll-hint'; listWrap.append(list, scrollHint); screen.append(listWrap); return screen; }