'use strict' function Hallway (sites) { const feeds = {} this.sites = sites this.el = document.createElement('div') this.el.id = 'hallway' this.install = function (host) { host.appendChild(this.el) this.findFeeds() } this.start = function () { this.el.innerHTML = 'hello' this.fetchFeeds() } this.refresh = function () { const entries = this.sortEntries() let html = '' for (const id in entries) { html += `${this.templateEntry(entries[id])}\n` } this.el.innerHTML = `
The Hallway is a decentralized forum, to join the conversation, simply create yourself a twtxt feed and add it to your entry in the webring.
' } // Utils function parseFeed (author, feed) { const lines = feed.split('\n') const entries = [] for (const id in lines) { const line = lines[id].trim() if (line === '') { continue } const date = line.substr(0, 25).trim() const body = line.substr(26).trim() entries.push({ date, body, author }) } return entries } function timeAgo (dateParam) { if (!dateParam) { return null } const date = typeof dateParam === 'object' ? dateParam : new Date(dateParam) const DAY_IN_MS = 86400000 // 24 * 60 * 60 * 1000 const today = new Date() const yesterday = new Date(today - DAY_IN_MS) const seconds = Math.round((today - date) / 1000) const minutes = Math.round(seconds / 60) const isToday = today.toDateString() === date.toDateString() const isYesterday = yesterday.toDateString() === date.toDateString() if (seconds < 5) { return 'now' } else if (seconds < 60) { return `${seconds} seconds ago` } else if (seconds < 90) { return 'about a minute ago' } else if (minutes < 60) { return `${minutes} minutes ago` } else if (isToday) { return `${Math.floor(minutes / 60)} hours ago` } else if (isYesterday) { return 'yesterday' } return `${Math.floor(minutes / 1440)} days ago` } }