xssbook/public/js/people.js
Tyler Murphy a2c89301d5 start dms
2023-07-26 01:04:39 -04:00

66 lines
1.3 KiB
JavaScript

import { div, body, span, parse } from './main.js'
import { loadself, loaduserspage } from './api.js'
import { header, parseUser } from './components.js'
function render() {
let new_body =
body({},
...header(false, true, false, data.self.user_id),
div({id: 'users'},
...data.users.map(u => parseUser(u))
),
div({id: 'load'},
span({class: 'bold gtext', onclick: async () => {
let users = await load()
let el = document.getElementById("users")
for (const user of users) {
el.appendChild(parseUser(user))
}
}},
parse("Load more users")
)
)
)
document.body.replaceWith(new_body)
}
var page = 0
const data = {
users: [],
self: {}
}
async function load() {
const users = (await loaduserspage(page)).json
if (users.length === 0) {
document.getElementById('load').remove()
return []
} else {
page++
}
return users
}
async function init() {
let request = (await loadself());
if (request.json == undefined) {
location.href = '/login'
return
}
data.self = request.json
const users = await load()
data.users.push(... users)
render()
}
init()