Switch to the off-spec goodstuff route
parent
8364e1a081
commit
808affc78b
|
@ -161,16 +161,6 @@ export function SUGGESTED_FOLLOWS(serviceUrl: string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function GOOD_STUFF(serviceUrl: string) {
|
|
||||||
if (serviceUrl.includes('localhost')) {
|
|
||||||
return 'alice.test'
|
|
||||||
} else if (serviceUrl.includes('staging')) {
|
|
||||||
return 'paul.staging.bsky.dev'
|
|
||||||
} else {
|
|
||||||
return 'jay.bsky.social'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const POST_IMG_MAX_WIDTH = 2000
|
export const POST_IMG_MAX_WIDTH = 2000
|
||||||
export const POST_IMG_MAX_HEIGHT = 2000
|
export const POST_IMG_MAX_HEIGHT = 2000
|
||||||
export const POST_IMG_MAX_SIZE = 1000000
|
export const POST_IMG_MAX_SIZE = 1000000
|
||||||
|
|
|
@ -16,7 +16,7 @@ import {RootStoreModel} from './root-store'
|
||||||
import * as apilib from 'lib/api/index'
|
import * as apilib from 'lib/api/index'
|
||||||
import {cleanError} from 'lib/strings/errors'
|
import {cleanError} from 'lib/strings/errors'
|
||||||
import {RichText} from 'lib/strings/rich-text'
|
import {RichText} from 'lib/strings/rich-text'
|
||||||
import {SUGGESTED_FOLLOWS, GOOD_STUFF} from 'lib/constants'
|
import {SUGGESTED_FOLLOWS} from 'lib/constants'
|
||||||
import {
|
import {
|
||||||
getCombinedCursors,
|
getCombinedCursors,
|
||||||
getMultipleAuthorsPosts,
|
getMultipleAuthorsPosts,
|
||||||
|
@ -399,6 +399,7 @@ export class FeedModel {
|
||||||
params: this.params,
|
params: this.params,
|
||||||
e,
|
e,
|
||||||
})
|
})
|
||||||
|
this.hasMore = false
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
this.lock.release()
|
this.lock.release()
|
||||||
|
@ -641,14 +642,13 @@ export class FeedModel {
|
||||||
params as GetTimeline.QueryParams,
|
params as GetTimeline.QueryParams,
|
||||||
)
|
)
|
||||||
} else if (this.feedType === 'goodstuff') {
|
} else if (this.feedType === 'goodstuff') {
|
||||||
const res = await this.rootStore.api.app.bsky.feed.getAuthorFeed({
|
const res = await getGoodStuff(
|
||||||
...params,
|
this.rootStore.session.currentSession?.accessJwt || '',
|
||||||
author: GOOD_STUFF(String(this.rootStore.agent.service)),
|
params as GetTimeline.QueryParams,
|
||||||
} as GetAuthorFeed.QueryParams)
|
)
|
||||||
res.data.feed = mergePosts([res], {repostsOnly: true})
|
res.data.feed = res.data.feed.filter(
|
||||||
res.data.feed.forEach(item => {
|
item => !item.post.author.viewer?.muted,
|
||||||
delete item.reason
|
)
|
||||||
})
|
|
||||||
return res
|
return res
|
||||||
} else {
|
} else {
|
||||||
return this.rootStore.api.app.bsky.feed.getAuthorFeed(
|
return this.rootStore.api.app.bsky.feed.getAuthorFeed(
|
||||||
|
@ -657,3 +657,45 @@ export class FeedModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HACK
|
||||||
|
// temporary off-spec route to get the good stuff
|
||||||
|
// -prf
|
||||||
|
async function getGoodStuff(
|
||||||
|
accessJwt: string,
|
||||||
|
params: GetTimeline.QueryParams,
|
||||||
|
): Promise<GetTimeline.Response> {
|
||||||
|
const controller = new AbortController()
|
||||||
|
const to = setTimeout(() => controller.abort(), 15e3)
|
||||||
|
|
||||||
|
const uri = new URL('https://bsky.social/xrpc/app.bsky.unspecced.getPopular')
|
||||||
|
let k: keyof GetTimeline.QueryParams
|
||||||
|
for (k in params) {
|
||||||
|
if (typeof params[k] !== 'undefined') {
|
||||||
|
uri.searchParams.set(k, String(params[k]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = await fetch(String(uri), {
|
||||||
|
method: 'get',
|
||||||
|
headers: {
|
||||||
|
accept: 'application/json',
|
||||||
|
authorization: `Bearer ${accessJwt}`,
|
||||||
|
},
|
||||||
|
signal: controller.signal,
|
||||||
|
})
|
||||||
|
|
||||||
|
const resHeaders: Record<string, string> = {}
|
||||||
|
res.headers.forEach((value: string, key: string) => {
|
||||||
|
resHeaders[key] = value
|
||||||
|
})
|
||||||
|
let resBody = await res.json()
|
||||||
|
|
||||||
|
clearTimeout(to)
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: res.status === 200,
|
||||||
|
headers: resHeaders,
|
||||||
|
data: resBody,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue