в которой надо дорабоать 1. Исправить ошибки и сделать что бы работала вторая слева вкладка. ТОесть АПИ для сервера я сделал (пока они возвращают весь список сообщений целиком - всем большим списком сообщений в канал - для мвп это устраивает,и по этому только три АПИ функции добавилось) Там какието ошибки на клиенте ( я только сгенерил код - но гдето вылетает) по UI можешь исправлять переделывать - моешь оставить калечное как есть - мне пока не важно. Важно увидить что каналы и сообщения и публичная переписка в каналах блокчейна работает 2. потестировать и сделать корректное завершение сессии (там есть глюки при завершении сесии)
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { renderHeader } from '../components/header.js?v=20260403081123';
|
|
import { directMessages } from '../mock-data.js?v=20260403081123';
|
|
|
|
export const pageMeta = { id: 'messages-list', title: 'Личные сообщения' };
|
|
|
|
export function render({ navigate }) {
|
|
const screen = document.createElement('section');
|
|
screen.className = 'stack';
|
|
|
|
screen.append(
|
|
renderHeader({
|
|
title: 'Личные сообщения',
|
|
rightActions: [{ label: '+', onClick: () => navigate('contact-search-view') }],
|
|
}),
|
|
);
|
|
|
|
const list = document.createElement('div');
|
|
list.className = 'stack';
|
|
|
|
directMessages.forEach((item) => {
|
|
const row = document.createElement('article');
|
|
row.className = 'list-item';
|
|
row.innerHTML = `
|
|
<div class="avatar">${item.initials}</div>
|
|
<div>
|
|
<div class="row" style="justify-content:flex-start; gap:8px;">
|
|
<strong>${item.name}</strong>
|
|
</div>
|
|
<p class="meta-muted" style="margin-top:4px;">${item.lastMessage}</p>
|
|
</div>
|
|
<div style="display:grid; justify-items:end; gap:6px;">
|
|
<span class="meta-muted">${item.time}</span>
|
|
${item.unread ? `<span class="unread">${item.unread}</span>` : '<span></span>'}
|
|
</div>
|
|
`;
|
|
row.addEventListener('click', () => navigate(`chat-view/${item.id}`));
|
|
list.append(row);
|
|
});
|
|
|
|
screen.append(list);
|
|
return screen;
|
|
}
|