Баг со скрытием просмотренных постов
Скрываются посты в разделе Оценки, если поставлена галочка Скрывать просмотренные. Андроид, бета.
Скрываются посты в разделе Оценки, если поставлена галочка Скрывать просмотренные. Андроид, бета.
Что случилось с пикабу? Уже неделю фигня какая то происходит, при обновлении страницы у меня появляются посты, которые я уже видел 1,2,3,.....n раз. Из за этого нереально сидеть на сайте. Я захожу, вижу ленту которую уже видел, выхожу.
Извиняюсь если где то уже спрашивали, не нашел.
Модератора пока не призываю, вдруг уже был где то ответ, буду благодарен если кинете ссылку.
Такое ощущение что скрывает только первый пост в ленте.
Mobile iOS
Алгоритм пикабу по скрытию постов работает очень странно. Проблема старая, но раньше сильно жить не мешала. А на режиме ХЗ, пикабу пользуюсь сильно чаще - проблема снова начала давать о себе знать. Накидал скрипт, чтобы локально сохранять id просмотренных постов и скрывать их.
Инструкция:
Скачиваете расширение для хрома или фаерфокса по внедрению своего кода и для страниц https://pikabu.ru и https://pikabu.ru/new добавляете следующий скрипт (дисклеймер - говнокод за 20 минут):
console.log('readed ext');
(function() {
var proxied = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
let params =arguments[0];
var pointer = this
var intervalId = window.setInterval(function(){
if(pointer.readyState != 4){
return;
}
console.log( pointer.responseURL );
if(pointer.responseURL==="https://pikabu.ru/ajax/save_stories_stat.php")
{
let ids = decodeURIComponent(params).split('=')[1].split(',');
console.log('mark as readed:',ids);
let readedPosts = localStorage.getItem('readedPosts');
if(readedPosts === null)
{
readedPosts='{}';
}
readedPosts = JSON.parse(readedPosts);
for(let i=0;i<ids.length;i++)
{
readedPosts[ids[i]]=true;
}
localStorage.setItem('readedPosts', JSON.stringify(readedPosts));
}
if(pointer.responseURL.indexOf('https://pikabu.ru/?twitmode') === 0)
{
let readedPosts = localStorage.getItem('readedPosts');
if(readedPosts === null)
{
readedPosts='{}';
}
readedPosts = JSON.parse(readedPosts);
let hidePosts = [];
let posts = JSON.parse(pointer.response).data.stories;
for(let i=0;i<posts.length;i++)
{
if(posts[i].id in readedPosts)
{
hidePosts.push(posts[i].id);
}
}
console.log(hidePosts);
setTimeout(()=> {
for(let i=0;i<hidePosts.length;i++)
{
let el = document.querySelector("article[data-story-id='"+hidePosts[i]+"']");
if(el !== null)
{
// console.log('hide el', el);
console.log('hide',el.querySelector('h2.story__title').innerText);
el.hidden = true;
}
}
}, 1000);
}
clearInterval(intervalId);
}, 1);
return proxied.apply(this, [].slice.call(arguments));
};
})();
Просмотрел, зашел, а посты опять те же самые. Тогда волей неволей закрываешь пикабу и работаешь. Красота!
В мобильном приложении не скрываются просмотренные посты. Как застряло на одном и том же месте, так и остаётся
Добрый день! Я уже второй день смотрю одни и те же посты, сворачивание постов вроде как работает, но не так как хотелось бы. Я вижу что он скрыл сколько-то просмотренных постов, но все равно у меня вся лента забита постами, которые уже видел по 4 раза.
Началось примерно в понедельник, возможно немного ранее.
Браузер Opera 51.0.2830.55
Допустим, пользователь листает свежее/горячее/лучшее, натыкается на неизвестное сообщество, листает его. Ничего интересного не находит, разочаровывается. Закрывает вкладку с сообществом.
Но в сообществе на самом деле много постов, которые когда-то уже побывали в лучшем, он их уже видел, они ему понравились. Пользователь хотел бы видеть подобный контент у себя в ленте. Но не увидит, потому что кнопка скрытия постов размещена в самом незаметном месте, и в большинстве случаев она в положении "скрывать".
Если же пользователь заметит, что скрытие просмотренных постов включено, и переключит на отображение просмотренных постов, то он увидит все те годны посты. Подпишется. Потом снова зайдет в горячее/свежее/лучшее. А там те посты, которые он уже видел на этой неделе. Опять надо переключать на "скрывать просмотренные посты". Неудобно.
Предлагаю:
Вынести кнопку переключения просмотренных постов в шапку сообщества, и распостранить действие этой кнопки только на это сообщество.
Пример: