- const { host, siteId } = theme.remark42 - const { limit } = theme.newest_comments script. window.addEventListener('load', () => { const api = ['!{host}','/api/v1/last/','!{limit}','?site=','!{siteId}'].join('') const changeContent = (content) => { if (content === '') return content content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
            content = content.replace(/<[^>]+>/g,"") // remove html tag

            if (content.length > 150) {
                content = content.substring(0,150) + '...'
            }
            return content
        }

        const getComment = () => {
            try {
                let request = new XMLHttpRequest()
                request.open("GET",api)
                request.send(null)
                request.onload = () => {
                    if (request.status == 200) {
                        const commentsData = JSON.parse(request.responseText)
                        const commentsArray = commentsData.map(k => {
                            return {
                                'content': changeContent(k.text), //Maybe we can use e.orig
                                'avatar': k.user.picture,
                                'nick': k.user.name,
                                'url': k.locator.url,
                                'date': new Date(k.time).toISOString()
                            }
                        })

                        saveToLocal.set('remark42-newest-comments', JSON.stringify(commentsArray), !{theme.newest_comments.storage}/(60*24))
                        generateHtml(commentsArray)
                    } else {
                        throw Error("Request to Remark42 Failed")
                    }
                }
            } catch(e) {
                const $dom = document.querySelector('#card-newest-comments .aside-list')
                $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}"
            }
        }

        const generateHtml = array => {
            let result = ''

            if (array.length) {
                for (let i = 0; i < array.length; i++) {
                result += '
' if (!{theme.newest_comments.avatar}) { const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' result += `${array[i].nick}` } result += `
${array[i].content}
${array[i].nick} /
` } } else { result += '!{_p("aside.card_newest_comments.zero")}' } let $dom = document.querySelector('#card-newest-comments .aside-list') $dom.innerHTML= result window.lazyLoadInstance && window.lazyLoadInstance.update() window.pjax && window.pjax.refresh($dom) } const newestCommentInit = () => { if (document.querySelector('#card-newest-comments .aside-list')) { const data = saveToLocal.get('remark42-newest-comments') if (data) { generateHtml(JSON.parse(data)) } else { getComment() } } } newestCommentInit() document.addEventListener('pjax:complete', newestCommentInit) })