Add alternative method to fetch user
This commit is contained in:
32
src/lib/structures/ReelUser.js
Normal file
32
src/lib/structures/ReelUser.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const constants = require("../constants")
|
||||
const {proxyImage} = require("../utils/proxyurl")
|
||||
const Timeline = require("./Timeline")
|
||||
require("../testimports")(constants, Timeline)
|
||||
|
||||
class ReelUser {
|
||||
/**
|
||||
* @param {import("../types").GraphUser} data
|
||||
*/
|
||||
constructor(data) {
|
||||
this.data = data
|
||||
this.fromReel = true
|
||||
this.following = 0
|
||||
this.followedBy = 0
|
||||
this.posts = 0
|
||||
this.timeline = new Timeline(this)
|
||||
this.cachedAt = Date.now()
|
||||
this.proxyProfilePicture = proxyImage(this.data.profile_pic_url)
|
||||
}
|
||||
|
||||
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 = ReelUser
|
||||
@@ -19,14 +19,15 @@ function transformEdges(edges) {
|
||||
|
||||
class Timeline {
|
||||
/**
|
||||
* @param {import("./User")} user
|
||||
* @param {import("./User")|import("./ReelUser")} user
|
||||
*/
|
||||
constructor(user) {
|
||||
this.user = user
|
||||
/** @type {import("./TimelineEntry")[][]} */
|
||||
this.pages = []
|
||||
this.addPage(this.user.data.edge_owner_to_timeline_media)
|
||||
this.page_info = this.user.data.edge_owner_to_timeline_media.page_info
|
||||
if (this.user.data.edge_owner_to_timeline_media) {
|
||||
this.addPage(this.user.data.edge_owner_to_timeline_media)
|
||||
}
|
||||
}
|
||||
|
||||
hasNextPage() {
|
||||
|
||||
@@ -180,27 +180,28 @@ class TimelineEntry extends TimelineBaseMethods {
|
||||
}
|
||||
// The owner may be in the user cache, so copy from that.
|
||||
// This could be implemented better.
|
||||
else if (collectors.requestCache.hasWithoutClean("user/"+this.data.owner.username)) {
|
||||
else if (collectors.requestCache.hasNotPromise("user/"+this.data.owner.username)) {
|
||||
/** @type {import("./User")} */
|
||||
const user = collectors.requestCache.getWithoutClean("user/"+this.data.owner.username)
|
||||
this.data.owner = {
|
||||
id: user.data.id,
|
||||
username: user.data.username,
|
||||
is_verified: user.data.is_verified,
|
||||
full_name: user.data.full_name,
|
||||
profile_pic_url: user.data.profile_pic_url // _hd is also available here.
|
||||
if (user.data.full_name) {
|
||||
this.data.owner = {
|
||||
id: user.data.id,
|
||||
username: user.data.username,
|
||||
is_verified: user.data.is_verified,
|
||||
full_name: user.data.full_name,
|
||||
profile_pic_url: user.data.profile_pic_url // _hd is also available here.
|
||||
}
|
||||
const clone = proxyExtendedOwner(this.data.owner)
|
||||
this.ownerPfpCacheP = clone.profile_pic_url
|
||||
return clone
|
||||
}
|
||||
const clone = proxyExtendedOwner(this.data.owner)
|
||||
this.ownerPfpCacheP = clone.profile_pic_url
|
||||
return clone
|
||||
// That didn't work, so just fall through...
|
||||
}
|
||||
// We'll have to re-request ourselves.
|
||||
else {
|
||||
await this.update()
|
||||
const clone = proxyExtendedOwner(this.data.owner)
|
||||
this.ownerPfpCacheP = clone.profile_pic_url
|
||||
return clone
|
||||
}
|
||||
await this.update()
|
||||
const clone = proxyExtendedOwner(this.data.owner)
|
||||
this.ownerPfpCacheP = clone.profile_pic_url
|
||||
return clone
|
||||
}
|
||||
|
||||
fetchVideoURL() {
|
||||
|
||||
Reference in New Issue
Block a user