Как не вернуть просроченную заметку Nostr при восстановлении ленты
После импорта старой выгрузки релея в ленте снова появились ранее исчезнувшие записи. Срок действия нужно проверять при восстановлении кеша так же, как при первой доставке.
Сравните абсолютное время в секундах
Тег expiration содержит время Unix, записанное строкой. В примере проверяются моменты за секунду до и через секунду после указанного срока. Результаты — true и false. Если системные часы возвращают миллисекунды, переведите их в секунды перед сравнением, иначе даже свежая запись покажется просроченной.
const tags = [["expiration","1800000000"]];
const deadline = Number(tags.find(([name]) => name === "expiration")[1]);
for (const now of [1799999999, 1800000001]) console.log(now < deadline);
Обновите видимую ленту без нового события
Открытый клиент может пересечь границу срока, не получив ни одного сообщения. Проверяйте время при отображении либо запланируйте удаление из кеша и повторите проверку после выхода из сна. Для некорректных отметок времени задайте явное правило разбора. Исчезновение из ленты не удаляет сохранённые копии у читателей или на релеях, которые игнорируют этот необязательный тег.