1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2025-06-28 07:58:25 +00:00
bibliogram/src/lib/structures/User.js
Cadence Fish 0ea95d1943
Clickable usernames and hashtags
Should work well enough. Report edge cases.
2020-02-04 03:30:19 +13:00

38 lines
971 B
JavaScript

const constants = require("../constants")
const {proxyImage} = require("../utils/proxyurl")
const {structure} = require("../utils/structuretext")
const Timeline = require("./Timeline")
require("../testimports")(constants, Timeline)
class User {
/**
* @param {import("../types").GraphUser} data
*/
constructor(data) {
this.data = data
this.following = data.edge_follow.count
this.followedBy = data.edge_followed_by.count
this.posts = data.edge_owner_to_timeline_media.count
this.timeline = new Timeline(this)
this.cachedAt = Date.now()
this.proxyProfilePicture = proxyImage(this.data.profile_pic_url)
}
getStructuredBio() {
if (!this.data.biography) return null
return structure(this.data.biography)
}
getTtl(scale = 1) {
const expiresAt = this.cachedAt + constants.caching.resource_cache_time
const ttl = expiresAt - Date.now()
return Math.ceil(Math.max(ttl, 0) / scale)
}
export() {
return this.data
}
}
module.exports = User