SHiNE-server/shine-UI/js/pages/notifications-view.js
AidarKC cf5460c5c7 Промежуточная версия
в которой надо дорабоать

1. Исправить ошибки и сделать что бы работала вторая слева вкладка. ТОесть АПИ для сервера я сделал (пока они возвращают весь список сообщений целиком - всем большим списком сообщений в канал - для мвп это устраивает,и по этому только три АПИ функции добавилось)

  Там какието ошибки на клиенте ( я только сгенерил код - но гдето вылетает) по UI можешь исправлять переделывать - моешь оставить калечное как есть - мне пока не важно. Важно увидить что каналы и сообщения и публичная переписка в каналах блокчейна работает

2. потестировать и сделать корректное завершение сессии (там есть глюки при завершении сесии)
2026-04-03 11:45:42 +03:00

49 lines
1.7 KiB
JavaScript

import { renderHeader } from '../components/header.js?v=20260403081123';
import { notifications } from '../mock-data.js?v=20260403081123';
import { state } from '../state.js?v=20260403081123';
export const pageMeta = { id: 'notifications-view', title: 'Уведомления' };
function renderList(container) {
const active = state.notificationsTab;
const items = notifications[active] || [];
container.innerHTML = '';
items.forEach((item) => {
const card = document.createElement('article');
card.className = 'card stack';
card.innerHTML = `<strong>${item.title}</strong><p class="meta-muted">${item.text}</p><p class="meta-muted">${item.time}</p>`;
container.append(card);
});
}
export function render() {
const screen = document.createElement('section');
screen.className = 'stack';
screen.append(renderHeader({ title: 'Уведомления' }));
const tabs = document.createElement('div');
tabs.className = 'tabs';
tabs.innerHTML = `
<button class="tab-btn ${state.notificationsTab === 'replies' ? 'active' : ''}" data-tab="replies">Ответы</button>
<button class="tab-btn ${state.notificationsTab === 'events' ? 'active' : ''}" data-tab="events">События</button>
`;
const list = document.createElement('div');
list.className = 'stack';
renderList(list);
tabs.querySelectorAll('.tab-btn').forEach((btn) => {
btn.addEventListener('click', () => {
state.notificationsTab = btn.dataset.tab;
tabs.querySelectorAll('.tab-btn').forEach((node) => node.classList.remove('active'));
btn.classList.add('active');
renderList(list);
});
});
screen.append(tabs, list);
return screen;
}