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.