PageSourceSearch

https://xgm.guru/public/mjs/79df25d1/components/feed.js

js xgm.guru collected 2026-09-24 10:34:09 UTC 2,198 bytes, 57 lines download raw bytes

1import {Cookie} from '../ui/cookie.js'
2import {firemsg} from '../ui/firemsg.js'
3
4addEventListener('click', async e => {
5    const button = /** @type {HTMLElement} */ e.target.closest('[data-feed-tab]')
6    if (!button) return
7    e.preventDefault()
8    e.stopImmediatePropagation()
9
10    const id = button.dataset.feedTab
11
12    /** @type {number} */
13    let offset
14
15    let isChangePage = true
16    if (button.dataset.feedTabOffset === undefined) {
17        offset = 0
18        isChangePage = false
19    } else {
20        offset = +button.dataset.feedTabOffset
21    }
22
23    const oc = document.querySelector('.feeddiv .page-current-offset')
24    const isNext = offset + 1 > (oc ? parseInt(oc.textContent) : 0)
25
26    Cookie.setItem('app.ui.feed-active-tab', id, 10 * 365)
27    document
28        .querySelectorAll('.feed-switcher')
29        .forEach(e => e.classList.remove('active'))
30
31    document.querySelectorAll(`.feed-switcher-${id}`).forEach(e => {
32        e.classList.add('active')
33    })
34    if (isChangePage) {
35        document.querySelectorAll(`.feeddiv .page-${isNext ? 'next' : 'prev'} .btn`).forEach(e => e.innerHTML = '<i class="fa fa-spinner fa-spin"></i>')
36    } else {
37        document.querySelectorAll(`.feed-switcher-${id} .feed-switcher-icon`).forEach(e => e.classList.add('fa-flip'))
38    }
39
40    const formData = new FormData()
41    formData.set('do', 'changefeed')
42    formData.set('postid', id)
43    formData.set('offset', offset.toString())
44    formData.set('is-mobile', getComputedStyle(document.getElementById('mobile-detector')).display !== 'none' ? '1' : '0')
45
46    const request = await fetch('/comment/do', {method: 'post', body: formData})
47    /** @type {{feedcache?:string, feedTitle?:string, error?: string}} */
48    const response = await request.json()
49
50    document.querySelectorAll(`.feed-switcher-${id} .feed-switcher-icon`).forEach(e => e.classList.remove('fa-flip'))
51    if (response.feedcache) {
52        document.querySelectorAll('.feeddiv').forEach(e => e.innerHTML = response.feedcache)
53        document.querySelectorAll('.side-menu-feed .card-head > span').forEach(e => e.innerHTML = response.feedTitle)
54        return
55    }
56    firemsg(`Ошибка! ${response.error}`)
57})

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.