-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGame Jolt Notification Filter Preserver.user.js
72 lines (65 loc) · 2.53 KB
/
Game Jolt Notification Filter Preserver.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// ==UserScript==
// @name Game Jolt Notification Filter Preserver
// @name:ru Сохранение фильтров уведомлений Game Jolt
// @namespace http://tampermonkey.net/
// @version 0.1
// @icon https://s.gjcdn.net/img/favicon.png
// @description Preserves and restores selected filters on the notifications page of Game Jolt.
// @description:ru Восстанавливает выбранные фильтры на странице уведомлений Game Jolt.
// @author Deflecta, GKProduction
// @match https://gamejolt.com/*
// @match https://*.gamejolt.com/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
// Задаём переменные
const notifPageUrl = 'https://gamejolt.com/notifications';
// Сохраняем фильтры
function saveFilters()
{
const urlParams = new URLSearchParams(window.location.search);
const filters = urlParams.get('f');
if (filters)
{
localStorage.setItem('gjNotifFilters', filters);
}
}
// Загружаем фильтры
function loadFilters()
{
return localStorage.getItem('gjNotifFilters');
}
// Проверяем факт нажатия
document.addEventListener('click', (event) =>
{
const viewAllButton = event.target.closest('a.button.-trans.-block');
if (viewAllButton && viewAllButton.textContent.trim() === ('View all' || 'Посмотреть всё'))
{
const filters = loadFilters();
if (filters)
{
event.preventDefault();
window.location.href = `${notifPageUrl}?f=${filters}`;
}
}
});
// Запоминаем фильтры в нужный момент с MutationObserver
const observer = new MutationObserver(() =>
{
if (window.location.href.startsWith(notifPageUrl))
{
saveFilters();
}
});
// Запускаем MutationObserver
observer.observe(document.body,
{
childList: true, subtree: true
});
// Сохраняем фильтры, если мы в уведомлениях
if (window.location.href.startsWith(notifPageUrl))
{
saveFilters();
}
})();