quote aggs, list quotes (#2658)
* add quote count to post_agg, add getPostQuotes rework schema rework schema add getPostQuotes to api use posts use posts codegen use items instead of quotes codegen add getPostQuotes add quoteCount to response update lexicon for postview increment post ags add quote to post aggs add quote interface oops add quote table migration * update * bufgen * update params * update to use v2 * logs * rm comment * pass cursor * add index * Update packages/bsky/src/data-plane/server/db/migrations/20240723T220703655Z-quotes.ts Co-authored-by: devin ivy <devinivy@gmail.com> * only if its a post * tests * Discard changes to packages/bsky/tests/views/posts.test.ts * fix client call * Include new quotes agg in test expectation * Use new API for headers * Update packages/bsky/src/data-plane/server/indexing/plugins/post.ts Co-authored-by: devin ivy <devinivy@gmail.com> * revert rm * rm timeout * cursor test * Changeset * Remove pds specific bump --------- Co-authored-by: devin ivy <devinivy@gmail.com> Co-authored-by: Eric Bailey <git@esb.lol>
This commit is contained in:
parent
922b2e82ac
commit
2a0c088cc5
.changeset
lexicons/app/bsky/feed
packages
api/src/client
bsky
proto
src
api
data-plane/server
hydration
lexicon
proto
views
tests
__snapshots__
data-plane
views
dev-env/src/seed
ozone/src/lexicon
pds
src/lexicon
tests/proxied/__snapshots__
6
.changeset/cyan-ladybugs-dance.md
Normal file
6
.changeset/cyan-ladybugs-dance.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
"@atproto/bsky": patch
|
||||
"@atproto/api": patch
|
||||
---
|
||||
|
||||
Adds `app.bsky.feed.getQuotes` lexicon and handlers
|
@ -25,6 +25,7 @@
|
||||
"replyCount": { "type": "integer" },
|
||||
"repostCount": { "type": "integer" },
|
||||
"likeCount": { "type": "integer" },
|
||||
"quoteCount": { "type": "integer" },
|
||||
"indexedAt": { "type": "string", "format": "datetime" },
|
||||
"viewer": { "type": "ref", "ref": "#viewerState" },
|
||||
"labels": {
|
||||
|
52
lexicons/app/bsky/feed/getQuotes.json
Normal file
52
lexicons/app/bsky/feed/getQuotes.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"lexicon": 1,
|
||||
"id": "app.bsky.feed.getQuotes",
|
||||
"defs": {
|
||||
"main": {
|
||||
"type": "query",
|
||||
"description": "Get a list of quotes for a given post.",
|
||||
"parameters": {
|
||||
"type": "params",
|
||||
"required": ["uri"],
|
||||
"properties": {
|
||||
"uri": {
|
||||
"type": "string",
|
||||
"format": "at-uri",
|
||||
"description": "Reference (AT-URI) of post record"
|
||||
},
|
||||
"cid": {
|
||||
"type": "string",
|
||||
"format": "cid",
|
||||
"description": "If supplied, filters to quotes of specific version (by CID) of the post record."
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 100,
|
||||
"default": 50
|
||||
},
|
||||
"cursor": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"encoding": "application/json",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["uri", "posts"],
|
||||
"properties": {
|
||||
"uri": { "type": "string", "format": "at-uri" },
|
||||
"cid": { "type": "string", "format": "cid" },
|
||||
"cursor": { "type": "string" },
|
||||
"posts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "ref",
|
||||
"ref": "app.bsky.feed.defs#postView"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -110,6 +110,7 @@ import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes'
|
||||
import * as AppBskyFeedGetListFeed from './types/app/bsky/feed/getListFeed'
|
||||
import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread'
|
||||
import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts'
|
||||
import * as AppBskyFeedGetQuotes from './types/app/bsky/feed/getQuotes'
|
||||
import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy'
|
||||
import * as AppBskyFeedGetSuggestedFeeds from './types/app/bsky/feed/getSuggestedFeeds'
|
||||
import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline'
|
||||
@ -307,6 +308,7 @@ export * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes'
|
||||
export * as AppBskyFeedGetListFeed from './types/app/bsky/feed/getListFeed'
|
||||
export * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread'
|
||||
export * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts'
|
||||
export * as AppBskyFeedGetQuotes from './types/app/bsky/feed/getQuotes'
|
||||
export * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy'
|
||||
export * as AppBskyFeedGetSuggestedFeeds from './types/app/bsky/feed/getSuggestedFeeds'
|
||||
export * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline'
|
||||
@ -1739,6 +1741,17 @@ export class AppBskyFeedNS {
|
||||
return this._client.call('app.bsky.feed.getPosts', params, undefined, opts)
|
||||
}
|
||||
|
||||
getQuotes(
|
||||
params?: AppBskyFeedGetQuotes.QueryParams,
|
||||
opts?: AppBskyFeedGetQuotes.CallOptions,
|
||||
): Promise<AppBskyFeedGetQuotes.Response> {
|
||||
return this._client
|
||||
.call('app.bsky.feed.getQuotes', params, undefined, opts)
|
||||
.catch((e) => {
|
||||
throw AppBskyFeedGetQuotes.toKnownErr(e)
|
||||
})
|
||||
}
|
||||
|
||||
getRepostedBy(
|
||||
params?: AppBskyFeedGetRepostedBy.QueryParams,
|
||||
opts?: AppBskyFeedGetRepostedBy.CallOptions,
|
||||
|
@ -5165,6 +5165,9 @@ export const schemaDict = {
|
||||
likeCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
quoteCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
indexedAt: {
|
||||
type: 'string',
|
||||
format: 'datetime',
|
||||
@ -6280,6 +6283,69 @@ export const schemaDict = {
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetQuotes: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getQuotes',
|
||||
defs: {
|
||||
main: {
|
||||
type: 'query',
|
||||
description: 'Get a list of quotes for a given post.',
|
||||
parameters: {
|
||||
type: 'params',
|
||||
required: ['uri'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
description: 'Reference (AT-URI) of post record',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
description:
|
||||
'If supplied, filters to quotes of specific version (by CID) of the post record.',
|
||||
},
|
||||
limit: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
maximum: 100,
|
||||
default: 50,
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
output: {
|
||||
encoding: 'application/json',
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['uri', 'posts'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
posts: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'ref',
|
||||
ref: 'lex:app.bsky.feed.defs#postView',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetRepostedBy: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getRepostedBy',
|
||||
@ -11792,6 +11858,7 @@ export const ids = {
|
||||
AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed',
|
||||
AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread',
|
||||
AppBskyFeedGetPosts: 'app.bsky.feed.getPosts',
|
||||
AppBskyFeedGetQuotes: 'app.bsky.feed.getQuotes',
|
||||
AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy',
|
||||
AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds',
|
||||
AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline',
|
||||
|
@ -28,6 +28,7 @@ export interface PostView {
|
||||
replyCount?: number
|
||||
repostCount?: number
|
||||
likeCount?: number
|
||||
quoteCount?: number
|
||||
indexedAt: string
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
|
44
packages/api/src/client/types/app/bsky/feed/getQuotes.ts
Normal file
44
packages/api/src/client/types/app/bsky/feed/getQuotes.ts
Normal file
@ -0,0 +1,44 @@
|
||||
/**
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import { Headers, XRPCError } from '@atproto/xrpc'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import * as AppBskyFeedDefs from './defs'
|
||||
|
||||
export interface QueryParams {
|
||||
/** Reference (AT-URI) of post record */
|
||||
uri: string
|
||||
/** If supplied, filters to quotes of specific version (by CID) of the post record. */
|
||||
cid?: string
|
||||
limit?: number
|
||||
cursor?: string
|
||||
}
|
||||
|
||||
export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
uri: string
|
||||
cid?: string
|
||||
cursor?: string
|
||||
posts: AppBskyFeedDefs.PostView[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export interface CallOptions {
|
||||
headers?: Headers
|
||||
}
|
||||
|
||||
export interface Response {
|
||||
success: boolean
|
||||
headers: Headers
|
||||
data: OutputSchema
|
||||
}
|
||||
|
||||
export function toKnownErr(e: any) {
|
||||
if (e instanceof XRPCError) {
|
||||
}
|
||||
return e
|
||||
}
|
@ -249,6 +249,23 @@ message GetActorLikesResponse {
|
||||
string cursor = 2;
|
||||
}
|
||||
|
||||
//
|
||||
// Quotes
|
||||
//
|
||||
|
||||
message GetQuotesBySubjectRequest {
|
||||
RecordRef subject = 1;
|
||||
int32 limit = 2;
|
||||
string cursor = 3;
|
||||
}
|
||||
|
||||
message GetQuotesBySubjectResponse {
|
||||
repeated RecordRef refs = 1;
|
||||
string cursor = 2;
|
||||
}
|
||||
|
||||
// - return post uris that quote the given subject uri
|
||||
|
||||
//
|
||||
// Interactions
|
||||
//
|
||||
@ -260,6 +277,7 @@ message GetInteractionCountsResponse {
|
||||
repeated int32 likes = 1;
|
||||
repeated int32 reposts = 2;
|
||||
repeated int32 replies = 3;
|
||||
repeated int32 quotes = 4;
|
||||
}
|
||||
|
||||
message GetCountsForUsersRequest {
|
||||
@ -1087,6 +1105,9 @@ service Service {
|
||||
rpc GetRepostsByActorAndSubjects(GetRepostsByActorAndSubjectsRequest) returns (GetRepostsByActorAndSubjectsResponse);
|
||||
rpc GetActorReposts(GetActorRepostsRequest) returns (GetActorRepostsResponse);
|
||||
|
||||
// Quotes
|
||||
rpc GetQuotesBySubject(GetQuotesBySubjectRequest) returns (GetQuotesBySubjectResponse);
|
||||
|
||||
// Interaction Counts
|
||||
rpc GetInteractionCounts(GetInteractionCountsRequest) returns (GetInteractionCountsResponse);
|
||||
rpc GetCountsForUsers(GetCountsForUsersRequest) returns (GetCountsForUsersResponse);
|
||||
|
105
packages/bsky/src/api/app/bsky/feed/getQuotes.ts
Normal file
105
packages/bsky/src/api/app/bsky/feed/getQuotes.ts
Normal file
@ -0,0 +1,105 @@
|
||||
import { Server } from '../../../../lexicon'
|
||||
import AppContext from '../../../../context'
|
||||
import { createPipeline } from '../../../../pipeline'
|
||||
import { clearlyBadCursor, resHeaders } from '../../../util'
|
||||
import {
|
||||
HydrateCtx,
|
||||
HydrationState,
|
||||
Hydrator,
|
||||
} from '../../../../hydration/hydrator'
|
||||
import { Views } from '../../../../views'
|
||||
import { mapDefined } from '@atproto/common'
|
||||
import { QueryParams } from '../../../../lexicon/types/app/bsky/feed/getQuotes'
|
||||
import { ItemRef, parseString } from '../../../../hydration/util'
|
||||
|
||||
export default function (server: Server, ctx: AppContext) {
|
||||
const getQuotes = createPipeline(skeleton, hydration, noBlocks, presentation)
|
||||
server.app.bsky.feed.getQuotes({
|
||||
auth: ctx.authVerifier.standardOptional,
|
||||
handler: async ({ params, auth, req }) => {
|
||||
const { viewer, includeTakedowns } = ctx.authVerifier.parseCreds(auth)
|
||||
const labelers = ctx.reqLabelers(req)
|
||||
const hydrateCtx = await ctx.hydrator.createContext({
|
||||
labelers,
|
||||
viewer,
|
||||
includeTakedowns,
|
||||
})
|
||||
const result = await getQuotes({ ...params, hydrateCtx }, ctx)
|
||||
return {
|
||||
encoding: 'application/json',
|
||||
body: result,
|
||||
headers: resHeaders({ labelers: hydrateCtx.labelers }),
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
const skeleton = async (inputs: {
|
||||
ctx: Context
|
||||
params: Params
|
||||
}): Promise<Skeleton> => {
|
||||
const { ctx, params } = inputs
|
||||
if (clearlyBadCursor(params.cursor)) {
|
||||
return { refs: [] }
|
||||
}
|
||||
const quotesRes = await ctx.hydrator.dataplane.getQuotesBySubject({
|
||||
subject: { uri: params.uri, cid: params.cid },
|
||||
cursor: params.cursor,
|
||||
limit: params.limit,
|
||||
})
|
||||
return {
|
||||
refs: quotesRes.refs,
|
||||
cursor: parseString(quotesRes.cursor),
|
||||
}
|
||||
}
|
||||
|
||||
const hydration = async (inputs: {
|
||||
ctx: Context
|
||||
params: Params
|
||||
skeleton: Skeleton
|
||||
}) => {
|
||||
const { ctx, params, skeleton } = inputs
|
||||
return await ctx.hydrator.hydratePosts(skeleton.refs, params.hydrateCtx)
|
||||
}
|
||||
|
||||
const noBlocks = (inputs: {
|
||||
ctx: Context
|
||||
skeleton: Skeleton
|
||||
hydration: HydrationState
|
||||
}) => {
|
||||
const { ctx, skeleton, hydration } = inputs
|
||||
skeleton.refs = skeleton.refs.filter((ref) => {
|
||||
return !ctx.views.viewerBlockExists(ref.uri, hydration)
|
||||
})
|
||||
return skeleton
|
||||
}
|
||||
|
||||
const presentation = (inputs: {
|
||||
ctx: Context
|
||||
params: Params
|
||||
skeleton: Skeleton
|
||||
hydration: HydrationState
|
||||
}) => {
|
||||
const { ctx, params, skeleton, hydration } = inputs
|
||||
const postViews = mapDefined(skeleton.refs, (ref) => {
|
||||
return ctx.views.post(ref.uri, hydration)
|
||||
})
|
||||
return {
|
||||
posts: postViews,
|
||||
cursor: skeleton.cursor,
|
||||
uri: params.uri,
|
||||
cid: params.cid,
|
||||
}
|
||||
}
|
||||
|
||||
type Context = {
|
||||
hydrator: Hydrator
|
||||
views: Views
|
||||
}
|
||||
|
||||
type Params = QueryParams & { hydrateCtx: HydrateCtx }
|
||||
|
||||
type Skeleton = {
|
||||
refs: ItemRef[]
|
||||
cursor?: string
|
||||
}
|
@ -13,6 +13,7 @@ import getPostThread from './app/bsky/feed/getPostThread'
|
||||
import getPosts from './app/bsky/feed/getPosts'
|
||||
import searchPosts from './app/bsky/feed/searchPosts'
|
||||
import getActorLikes from './app/bsky/feed/getActorLikes'
|
||||
import getQuotes from './app/bsky/feed/getQuotes'
|
||||
import getProfile from './app/bsky/actor/getProfile'
|
||||
import getProfiles from './app/bsky/actor/getProfiles'
|
||||
import getRepostedBy from './app/bsky/feed/getRepostedBy'
|
||||
@ -72,6 +73,7 @@ export default function (server: Server, ctx: AppContext) {
|
||||
getFeedGenerators(server, ctx)
|
||||
getLikes(server, ctx)
|
||||
getListFeed(server, ctx)
|
||||
getQuotes(server, ctx)
|
||||
getPostThread(server, ctx)
|
||||
getPosts(server, ctx)
|
||||
searchPosts(server, ctx)
|
||||
|
@ -35,6 +35,7 @@ import * as taggedSuggestion from './tables/tagged-suggestion'
|
||||
import * as blobTakedown from './tables/blob-takedown'
|
||||
import * as labeler from './tables/labeler'
|
||||
import * as starterPack from './tables/starter-pack'
|
||||
import * as quote from './tables/quote'
|
||||
|
||||
export type DatabaseSchemaType = duplicateRecord.PartialDB &
|
||||
profile.PartialDB &
|
||||
@ -71,7 +72,8 @@ export type DatabaseSchemaType = duplicateRecord.PartialDB &
|
||||
blobTakedown.PartialDB &
|
||||
labeler.PartialDB &
|
||||
starterPack.PartialDB &
|
||||
taggedSuggestion.PartialDB
|
||||
taggedSuggestion.PartialDB &
|
||||
quote.PartialDB
|
||||
|
||||
export type DatabaseSchema = Kysely<DatabaseSchemaType>
|
||||
|
||||
|
12
packages/bsky/src/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.ts
Normal file
12
packages/bsky/src/data-plane/server/db/migrations/20240723T220700077Z-quotes-post-aggs.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import { Kysely } from 'kysely'
|
||||
|
||||
export async function up(db: Kysely<unknown>): Promise<void> {
|
||||
await db.schema
|
||||
.alterTable('post_agg')
|
||||
.addColumn('quoteCount', 'bigint', (col) => col.notNull().defaultTo(0))
|
||||
.execute()
|
||||
}
|
||||
|
||||
export async function down(db: Kysely<unknown>): Promise<void> {
|
||||
await db.schema.alterTable('post_agg').dropColumn('quoteCount').execute()
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
import { Kysely, sql } from 'kysely'
|
||||
|
||||
export async function up(db: Kysely<unknown>): Promise<void> {
|
||||
await db.schema
|
||||
.createTable('quote')
|
||||
.addColumn('uri', 'varchar', (col) => col.primaryKey())
|
||||
.addColumn('cid', 'varchar', (col) => col.notNull())
|
||||
.addColumn('subject', 'varchar', (col) => col.notNull())
|
||||
.addColumn('subjectCid', 'varchar', (col) => col.notNull())
|
||||
.addColumn('createdAt', 'varchar', (col) => col.notNull())
|
||||
.addColumn('indexedAt', 'varchar', (col) => col.notNull())
|
||||
.addColumn('sortAt', 'varchar', (col) =>
|
||||
col
|
||||
.generatedAlwaysAs(sql`least("createdAt", "indexedAt")`)
|
||||
.stored()
|
||||
.notNull(),
|
||||
)
|
||||
.execute()
|
||||
await db.schema
|
||||
.createIndex('quote_subject_cursor_idx')
|
||||
.on('quote')
|
||||
.columns(['subject', 'sortAt', 'cid'])
|
||||
.execute()
|
||||
}
|
||||
|
||||
export async function down(db: Kysely<unknown>): Promise<void> {
|
||||
await db.schema.dropTable('quote').execute()
|
||||
}
|
@ -38,3 +38,5 @@ export * as _20240530T170337073Z from './20240530T170337073Z-account-deactivatio
|
||||
export * as _20240606T171229898Z from './20240606T171229898Z-thread-mutes'
|
||||
export * as _20240606T222548219Z from './20240606T222548219Z-starter-packs'
|
||||
export * as _20240719T203853939Z from './20240719T203853939Z-priority-notifs'
|
||||
export * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs'
|
||||
export * as _20240723T220703655Z from './20240723T220703655Z-quotes'
|
||||
|
@ -7,6 +7,7 @@ export interface PostAgg {
|
||||
likeCount: Generated<number>
|
||||
replyCount: Generated<number>
|
||||
repostCount: Generated<number>
|
||||
quoteCount: Generated<number>
|
||||
}
|
||||
|
||||
export type PartialDB = {
|
||||
|
15
packages/bsky/src/data-plane/server/db/tables/quote.ts
Normal file
15
packages/bsky/src/data-plane/server/db/tables/quote.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import { GeneratedAlways } from 'kysely'
|
||||
|
||||
const tableName = 'quote'
|
||||
|
||||
export interface Quote {
|
||||
uri: string
|
||||
cid: string
|
||||
subject: string
|
||||
subjectCid: string
|
||||
createdAt: string
|
||||
indexedAt: string
|
||||
sortAt: GeneratedAlways<string>
|
||||
}
|
||||
|
||||
export type PartialDB = { [tableName]: Quote }
|
@ -168,6 +168,7 @@ const insertFn = async (
|
||||
await db.insertInto('post_embed_external').values(externalEmbed).execute()
|
||||
} else if (isEmbedRecord(postEmbed)) {
|
||||
const { record } = postEmbed
|
||||
const embedUri = new AtUri(record.uri)
|
||||
const recordEmbed = {
|
||||
postUri: uri.toString(),
|
||||
embedUri: record.uri,
|
||||
@ -175,6 +176,39 @@ const insertFn = async (
|
||||
}
|
||||
embeds.push(recordEmbed)
|
||||
await db.insertInto('post_embed_record').values(recordEmbed).execute()
|
||||
|
||||
if (embedUri.collection === lex.ids.AppBskyFeedPost) {
|
||||
const quote = {
|
||||
uri: uri.toString(),
|
||||
cid: cid.toString(),
|
||||
subject: record.uri,
|
||||
subjectCid: record.cid,
|
||||
createdAt: normalizeDatetimeAlways(obj.createdAt),
|
||||
indexedAt: timestamp,
|
||||
}
|
||||
await db
|
||||
.insertInto('quote')
|
||||
.values(quote)
|
||||
.onConflict((oc) => oc.doNothing())
|
||||
.returningAll()
|
||||
.executeTakeFirst()
|
||||
|
||||
const quoteCountQb = db
|
||||
.insertInto('post_agg')
|
||||
.values({
|
||||
uri: record.uri.toString(),
|
||||
quoteCount: db
|
||||
.selectFrom('quote')
|
||||
.where('quote.subjectCid', '=', record.cid.toString())
|
||||
.select(countAll.as('count')),
|
||||
})
|
||||
.onConflict((oc) =>
|
||||
oc
|
||||
.column('uri')
|
||||
.doUpdateSet({ quoteCount: excluded(db, 'quoteCount') }),
|
||||
)
|
||||
await quoteCountQb.execute()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -228,6 +262,7 @@ const notifsForInsert = (obj: IndexedPost) => {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
for (const embed of obj.embeds ?? []) {
|
||||
if ('embedUri' in embed) {
|
||||
const embedUri = new AtUri(embed.embedUri)
|
||||
@ -304,6 +339,7 @@ const deleteFn = async (
|
||||
.executeTakeFirst(),
|
||||
db.deleteFrom('feed_item').where('postUri', '=', uriStr).executeTakeFirst(),
|
||||
])
|
||||
await db.deleteFrom('quote').where('subject', '=', uriStr).execute()
|
||||
const deletedEmbeds: (
|
||||
| PostEmbedImage[]
|
||||
| PostEmbedExternal
|
||||
@ -333,7 +369,27 @@ const deleteFn = async (
|
||||
deletedEmbeds.push(deletedExternals)
|
||||
}
|
||||
if (deletedPosts) {
|
||||
const embedUri = new AtUri(deletedPosts.embedUri)
|
||||
deletedEmbeds.push(deletedPosts)
|
||||
|
||||
if (embedUri.collection === lex.ids.AppBskyFeedPost) {
|
||||
await db.deleteFrom('quote').where('uri', '=', uriStr).execute()
|
||||
await db
|
||||
.insertInto('post_agg')
|
||||
.values({
|
||||
uri: deletedPosts.embedUri,
|
||||
quoteCount: db
|
||||
.selectFrom('quote')
|
||||
.where('quote.subjectCid', '=', deletedPosts.embedCid.toString())
|
||||
.select(countAll.as('count')),
|
||||
})
|
||||
.onConflict((oc) =>
|
||||
oc
|
||||
.column('uri')
|
||||
.doUpdateSet({ quoteCount: excluded(db, 'quoteCount') }),
|
||||
)
|
||||
.execute()
|
||||
}
|
||||
}
|
||||
return deleted
|
||||
? {
|
||||
|
@ -15,6 +15,7 @@ import mutes from './mutes'
|
||||
import notifs from './notifs'
|
||||
import posts from './posts'
|
||||
import profile from './profile'
|
||||
import quotes from './quotes'
|
||||
import records from './records'
|
||||
import relationships from './relationships'
|
||||
import reposts from './reposts'
|
||||
@ -42,6 +43,7 @@ export default (db: Database, idResolver: IdResolver) =>
|
||||
...notifs(db),
|
||||
...posts(db),
|
||||
...profile(db),
|
||||
...quotes(db),
|
||||
...records(db),
|
||||
...relationships(db),
|
||||
...reposts(db),
|
||||
|
@ -8,7 +8,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
|
||||
async getInteractionCounts(req) {
|
||||
const uris = req.refs.map((ref) => ref.uri)
|
||||
if (uris.length === 0) {
|
||||
return { likes: [], replies: [], reposts: [] }
|
||||
return { likes: [], replies: [], reposts: [], quotes: [] }
|
||||
}
|
||||
const res = await db.db
|
||||
.selectFrom('post_agg')
|
||||
@ -20,6 +20,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
|
||||
likes: uris.map((uri) => byUri[uri]?.likeCount ?? 0),
|
||||
replies: uris.map((uri) => byUri[uri]?.replyCount ?? 0),
|
||||
reposts: uris.map((uri) => byUri[uri]?.repostCount ?? 0),
|
||||
quotes: uris.map((uri) => byUri[uri]?.quoteCount ?? 0),
|
||||
}
|
||||
},
|
||||
async getCountsForUsers(req) {
|
||||
|
32
packages/bsky/src/data-plane/server/routes/quotes.ts
Normal file
32
packages/bsky/src/data-plane/server/routes/quotes.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { ServiceImpl } from '@connectrpc/connect'
|
||||
import { Service } from '../../../proto/bsky_connect'
|
||||
import { Database } from '../db'
|
||||
import { paginate, TimeCidKeyset } from '../db/pagination'
|
||||
|
||||
export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
|
||||
async getQuotesBySubject(req) {
|
||||
const { subject, cursor, limit } = req
|
||||
const { ref } = db.db.dynamic
|
||||
|
||||
if (!subject?.uri) return { uris: [] }
|
||||
|
||||
let builder = db.db
|
||||
.selectFrom('quote')
|
||||
.where('quote.subject', '=', subject.uri)
|
||||
.select(['quote.uri', 'quote.cid', 'quote.sortAt'])
|
||||
|
||||
const keyset = new TimeCidKeyset(ref('quote.sortAt'), ref('quote.cid'))
|
||||
builder = paginate(builder, {
|
||||
limit,
|
||||
cursor,
|
||||
keyset,
|
||||
})
|
||||
|
||||
const quotes = await builder.execute()
|
||||
|
||||
return {
|
||||
refs: quotes.map((q) => ({ uri: q.uri, cid: q.cid })),
|
||||
cursor: keyset.packFromResult(quotes),
|
||||
}
|
||||
},
|
||||
})
|
@ -31,6 +31,7 @@ export type PostAgg = {
|
||||
likes: number
|
||||
replies: number
|
||||
reposts: number
|
||||
quotes: number
|
||||
}
|
||||
|
||||
export type PostAggs = HydrationMap<PostAgg>
|
||||
@ -135,6 +136,7 @@ export class FeedHydrator {
|
||||
likes: counts.likes[i] ?? 0,
|
||||
reposts: counts.reposts[i] ?? 0,
|
||||
replies: counts.replies[i] ?? 0,
|
||||
quotes: counts.quotes[i] ?? 0,
|
||||
})
|
||||
}, new HydrationMap<PostAgg>())
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes'
|
||||
import * as AppBskyFeedGetListFeed from './types/app/bsky/feed/getListFeed'
|
||||
import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread'
|
||||
import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts'
|
||||
import * as AppBskyFeedGetQuotes from './types/app/bsky/feed/getQuotes'
|
||||
import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy'
|
||||
import * as AppBskyFeedGetSuggestedFeeds from './types/app/bsky/feed/getSuggestedFeeds'
|
||||
import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline'
|
||||
@ -1385,6 +1386,17 @@ export class AppBskyFeedNS {
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getQuotes<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
AppBskyFeedGetQuotes.Handler<ExtractAuth<AV>>,
|
||||
AppBskyFeedGetQuotes.HandlerReqCtx<ExtractAuth<AV>>
|
||||
>,
|
||||
) {
|
||||
const nsid = 'app.bsky.feed.getQuotes' // @ts-ignore
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getRepostedBy<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
|
@ -5165,6 +5165,9 @@ export const schemaDict = {
|
||||
likeCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
quoteCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
indexedAt: {
|
||||
type: 'string',
|
||||
format: 'datetime',
|
||||
@ -6280,6 +6283,69 @@ export const schemaDict = {
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetQuotes: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getQuotes',
|
||||
defs: {
|
||||
main: {
|
||||
type: 'query',
|
||||
description: 'Get a list of quotes for a given post.',
|
||||
parameters: {
|
||||
type: 'params',
|
||||
required: ['uri'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
description: 'Reference (AT-URI) of post record',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
description:
|
||||
'If supplied, filters to quotes of specific version (by CID) of the post record.',
|
||||
},
|
||||
limit: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
maximum: 100,
|
||||
default: 50,
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
output: {
|
||||
encoding: 'application/json',
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['uri', 'posts'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
posts: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'ref',
|
||||
ref: 'lex:app.bsky.feed.defs#postView',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetRepostedBy: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getRepostedBy',
|
||||
@ -10074,6 +10140,7 @@ export const ids = {
|
||||
AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed',
|
||||
AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread',
|
||||
AppBskyFeedGetPosts: 'app.bsky.feed.getPosts',
|
||||
AppBskyFeedGetQuotes: 'app.bsky.feed.getQuotes',
|
||||
AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy',
|
||||
AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds',
|
||||
AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline',
|
||||
|
@ -28,6 +28,7 @@ export interface PostView {
|
||||
replyCount?: number
|
||||
repostCount?: number
|
||||
likeCount?: number
|
||||
quoteCount?: number
|
||||
indexedAt: string
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
|
54
packages/bsky/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
54
packages/bsky/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import express from 'express'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
|
||||
import * as AppBskyFeedDefs from './defs'
|
||||
|
||||
export interface QueryParams {
|
||||
/** Reference (AT-URI) of post record */
|
||||
uri: string
|
||||
/** If supplied, filters to quotes of specific version (by CID) of the post record. */
|
||||
cid?: string
|
||||
limit: number
|
||||
cursor?: string
|
||||
}
|
||||
|
||||
export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
uri: string
|
||||
cid?: string
|
||||
cursor?: string
|
||||
posts: AppBskyFeedDefs.PostView[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export type HandlerInput = undefined
|
||||
|
||||
export interface HandlerSuccess {
|
||||
encoding: 'application/json'
|
||||
body: OutputSchema
|
||||
headers?: { [key: string]: string }
|
||||
}
|
||||
|
||||
export interface HandlerError {
|
||||
status: number
|
||||
message?: string
|
||||
}
|
||||
|
||||
export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
|
||||
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
|
||||
auth: HA
|
||||
params: QueryParams
|
||||
input: HandlerInput
|
||||
req: express.Request
|
||||
res: express.Response
|
||||
}
|
||||
export type Handler<HA extends HandlerAuth = never> = (
|
||||
ctx: HandlerReqCtx<HA>,
|
||||
) => Promise<HandlerOutput> | HandlerOutput
|
@ -134,6 +134,8 @@ import {
|
||||
GetPostReplyCountsResponse,
|
||||
GetProfileRecordsRequest,
|
||||
GetProfileRecordsResponse,
|
||||
GetQuotesBySubjectRequest,
|
||||
GetQuotesBySubjectResponse,
|
||||
GetRecordTakedownRequest,
|
||||
GetRecordTakedownResponse,
|
||||
GetRelationshipsRequest,
|
||||
@ -423,6 +425,17 @@ export const Service = {
|
||||
O: GetActorRepostsResponse,
|
||||
kind: MethodKind.Unary,
|
||||
},
|
||||
/**
|
||||
* Quotes
|
||||
*
|
||||
* @generated from rpc bsky.Service.GetQuotesBySubject
|
||||
*/
|
||||
getQuotesBySubject: {
|
||||
name: 'GetQuotesBySubject',
|
||||
I: GetQuotesBySubjectRequest,
|
||||
O: GetQuotesBySubjectResponse,
|
||||
kind: MethodKind.Unary,
|
||||
},
|
||||
/**
|
||||
* Interaction Counts
|
||||
*
|
||||
|
@ -2984,6 +2984,134 @@ export class GetActorLikesResponse extends Message<GetActorLikesResponse> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @generated from message bsky.GetQuotesBySubjectRequest
|
||||
*/
|
||||
export class GetQuotesBySubjectRequest extends Message<GetQuotesBySubjectRequest> {
|
||||
/**
|
||||
* @generated from field: bsky.RecordRef subject = 1;
|
||||
*/
|
||||
subject?: RecordRef
|
||||
|
||||
/**
|
||||
* @generated from field: int32 limit = 2;
|
||||
*/
|
||||
limit = 0
|
||||
|
||||
/**
|
||||
* @generated from field: string cursor = 3;
|
||||
*/
|
||||
cursor = ''
|
||||
|
||||
constructor(data?: PartialMessage<GetQuotesBySubjectRequest>) {
|
||||
super()
|
||||
proto3.util.initPartial(data, this)
|
||||
}
|
||||
|
||||
static readonly runtime: typeof proto3 = proto3
|
||||
static readonly typeName = 'bsky.GetQuotesBySubjectRequest'
|
||||
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
||||
{ no: 1, name: 'subject', kind: 'message', T: RecordRef },
|
||||
{ no: 2, name: 'limit', kind: 'scalar', T: 5 /* ScalarType.INT32 */ },
|
||||
{ no: 3, name: 'cursor', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
|
||||
])
|
||||
|
||||
static fromBinary(
|
||||
bytes: Uint8Array,
|
||||
options?: Partial<BinaryReadOptions>,
|
||||
): GetQuotesBySubjectRequest {
|
||||
return new GetQuotesBySubjectRequest().fromBinary(bytes, options)
|
||||
}
|
||||
|
||||
static fromJson(
|
||||
jsonValue: JsonValue,
|
||||
options?: Partial<JsonReadOptions>,
|
||||
): GetQuotesBySubjectRequest {
|
||||
return new GetQuotesBySubjectRequest().fromJson(jsonValue, options)
|
||||
}
|
||||
|
||||
static fromJsonString(
|
||||
jsonString: string,
|
||||
options?: Partial<JsonReadOptions>,
|
||||
): GetQuotesBySubjectRequest {
|
||||
return new GetQuotesBySubjectRequest().fromJsonString(jsonString, options)
|
||||
}
|
||||
|
||||
static equals(
|
||||
a:
|
||||
| GetQuotesBySubjectRequest
|
||||
| PlainMessage<GetQuotesBySubjectRequest>
|
||||
| undefined,
|
||||
b:
|
||||
| GetQuotesBySubjectRequest
|
||||
| PlainMessage<GetQuotesBySubjectRequest>
|
||||
| undefined,
|
||||
): boolean {
|
||||
return proto3.util.equals(GetQuotesBySubjectRequest, a, b)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @generated from message bsky.GetQuotesBySubjectResponse
|
||||
*/
|
||||
export class GetQuotesBySubjectResponse extends Message<GetQuotesBySubjectResponse> {
|
||||
/**
|
||||
* @generated from field: repeated bsky.RecordRef refs = 1;
|
||||
*/
|
||||
refs: RecordRef[] = []
|
||||
|
||||
/**
|
||||
* @generated from field: string cursor = 2;
|
||||
*/
|
||||
cursor = ''
|
||||
|
||||
constructor(data?: PartialMessage<GetQuotesBySubjectResponse>) {
|
||||
super()
|
||||
proto3.util.initPartial(data, this)
|
||||
}
|
||||
|
||||
static readonly runtime: typeof proto3 = proto3
|
||||
static readonly typeName = 'bsky.GetQuotesBySubjectResponse'
|
||||
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
||||
{ no: 1, name: 'refs', kind: 'message', T: RecordRef, repeated: true },
|
||||
{ no: 2, name: 'cursor', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
|
||||
])
|
||||
|
||||
static fromBinary(
|
||||
bytes: Uint8Array,
|
||||
options?: Partial<BinaryReadOptions>,
|
||||
): GetQuotesBySubjectResponse {
|
||||
return new GetQuotesBySubjectResponse().fromBinary(bytes, options)
|
||||
}
|
||||
|
||||
static fromJson(
|
||||
jsonValue: JsonValue,
|
||||
options?: Partial<JsonReadOptions>,
|
||||
): GetQuotesBySubjectResponse {
|
||||
return new GetQuotesBySubjectResponse().fromJson(jsonValue, options)
|
||||
}
|
||||
|
||||
static fromJsonString(
|
||||
jsonString: string,
|
||||
options?: Partial<JsonReadOptions>,
|
||||
): GetQuotesBySubjectResponse {
|
||||
return new GetQuotesBySubjectResponse().fromJsonString(jsonString, options)
|
||||
}
|
||||
|
||||
static equals(
|
||||
a:
|
||||
| GetQuotesBySubjectResponse
|
||||
| PlainMessage<GetQuotesBySubjectResponse>
|
||||
| undefined,
|
||||
b:
|
||||
| GetQuotesBySubjectResponse
|
||||
| PlainMessage<GetQuotesBySubjectResponse>
|
||||
| undefined,
|
||||
): boolean {
|
||||
return proto3.util.equals(GetQuotesBySubjectResponse, a, b)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Interactions
|
||||
@ -3062,6 +3190,11 @@ export class GetInteractionCountsResponse extends Message<GetInteractionCountsRe
|
||||
*/
|
||||
replies: number[] = []
|
||||
|
||||
/**
|
||||
* @generated from field: repeated int32 quotes = 4;
|
||||
*/
|
||||
quotes: number[] = []
|
||||
|
||||
constructor(data?: PartialMessage<GetInteractionCountsResponse>) {
|
||||
super()
|
||||
proto3.util.initPartial(data, this)
|
||||
@ -3091,6 +3224,13 @@ export class GetInteractionCountsResponse extends Message<GetInteractionCountsRe
|
||||
T: 5 /* ScalarType.INT32 */,
|
||||
repeated: true,
|
||||
},
|
||||
{
|
||||
no: 4,
|
||||
name: 'quotes',
|
||||
kind: 'scalar',
|
||||
T: 5 /* ScalarType.INT32 */,
|
||||
repeated: true,
|
||||
},
|
||||
])
|
||||
|
||||
static fromBinary(
|
||||
|
@ -577,6 +577,7 @@ export class Views {
|
||||
replyCount: aggs?.replies ?? 0,
|
||||
repostCount: aggs?.reposts ?? 0,
|
||||
likeCount: aggs?.likes ?? 0,
|
||||
quoteCount: aggs?.quotes ?? 0,
|
||||
indexedAt: post.sortedAt.toISOString(),
|
||||
viewer: viewer
|
||||
? {
|
||||
|
@ -26,6 +26,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -73,6 +74,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -160,6 +162,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -249,6 +252,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -531,6 +535,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -573,6 +578,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -662,6 +668,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -730,6 +737,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -786,6 +794,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -831,6 +840,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -987,6 +997,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1079,6 +1090,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1157,6 +1169,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1215,6 +1228,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1264,6 +1278,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1302,6 +1317,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1360,6 +1376,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1453,6 +1470,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1521,6 +1539,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1577,6 +1596,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1622,6 +1642,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
|
@ -59,6 +59,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -87,6 +88,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -164,6 +166,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -217,6 +220,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -374,6 +378,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -409,6 +414,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -445,6 +451,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -554,6 +561,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -621,6 +629,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -277,6 +277,7 @@ describe('indexing', () => {
|
||||
replyCount: 1,
|
||||
repostCount: 1,
|
||||
likeCount: 1,
|
||||
quoteCount: 0,
|
||||
})
|
||||
// Cleanup
|
||||
const del = (uri: AtUri) => {
|
||||
|
@ -35,6 +35,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -130,6 +131,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -201,6 +203,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -377,6 +380,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -430,6 +434,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -484,6 +489,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -553,6 +559,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -627,6 +634,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -675,6 +683,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -708,6 +717,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -739,6 +749,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -898,6 +909,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -961,6 +973,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1019,6 +1032,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1067,6 +1081,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1150,6 +1165,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1238,6 +1254,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1352,6 +1369,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1424,6 +1442,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1474,6 +1493,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1644,6 +1664,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1698,6 +1719,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1751,6 +1773,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1847,6 +1870,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1920,6 +1944,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2096,6 +2121,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2152,6 +2178,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2209,6 +2236,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -115,6 +115,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -187,6 +188,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -251,6 +253,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
|
@ -115,6 +115,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -187,6 +188,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -226,6 +228,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -291,6 +294,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -363,6 +367,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -37,6 +37,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -133,6 +134,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -206,6 +208,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -265,6 +268,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -339,6 +343,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -387,6 +392,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -563,6 +569,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -603,6 +610,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -651,6 +659,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -684,6 +693,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -744,6 +754,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -79,6 +79,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -136,6 +137,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -182,6 +184,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -263,6 +266,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -139,6 +139,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -170,6 +171,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -239,6 +241,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -42,6 +42,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -94,6 +95,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -125,6 +127,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -211,6 +214,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -400,6 +404,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -465,6 +470,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
395
packages/bsky/tests/views/__snapshots__/quotes.test.ts.snap
Normal file
395
packages/bsky/tests/views/__snapshots__/quotes.test.ts.snap
Normal file
@ -0,0 +1,395 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`pds quote views decrements quote count when a quote is deleted 1`] = `
|
||||
Object {
|
||||
"posts": Array [
|
||||
Object {
|
||||
"author": Object {
|
||||
"avatar": "https://bsky.public.url/img/avatar/plain/user(1)/cids(1)@jpeg",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"did": "user(0)",
|
||||
"displayName": "bobby",
|
||||
"handle": "bob.test",
|
||||
"labels": Array [],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(0)",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.images#view",
|
||||
"images": Array [
|
||||
Object {
|
||||
"alt": "../dev-env/src/seed/img/key-landscape-small.jpg",
|
||||
"fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(1)/cids(2)@jpeg",
|
||||
"thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(1)/cids(2)@jpeg",
|
||||
},
|
||||
],
|
||||
},
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(0)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "did:example:labeler",
|
||||
"uri": "record(0)",
|
||||
"val": "test-label",
|
||||
},
|
||||
Object {
|
||||
"cid": "cids(0)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "did:example:labeler",
|
||||
"uri": "record(0)",
|
||||
"val": "test-label-2",
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.images",
|
||||
"images": Array [
|
||||
Object {
|
||||
"alt": "../dev-env/src/seed/img/key-landscape-small.jpg",
|
||||
"image": Object {
|
||||
"$type": "blob",
|
||||
"mimeType": "image/jpeg",
|
||||
"ref": Object {
|
||||
"$link": "cids(2)",
|
||||
},
|
||||
"size": 4114,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
"reply": Object {
|
||||
"parent": Object {
|
||||
"cid": "cids(3)",
|
||||
"uri": "record(1)",
|
||||
},
|
||||
"root": Object {
|
||||
"cid": "cids(3)",
|
||||
"uri": "record(1)",
|
||||
},
|
||||
},
|
||||
"text": "hear that label_me label_me_2",
|
||||
},
|
||||
"replyCount": 1,
|
||||
"repostCount": 0,
|
||||
"uri": "record(0)",
|
||||
"viewer": Object {
|
||||
"threadMuted": false,
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`pds quote views does not return post when quote is deleted 1`] = `
|
||||
Object {
|
||||
"cursor": "0000000000000__bafycid",
|
||||
"posts": Array [
|
||||
Object {
|
||||
"author": Object {
|
||||
"did": "user(0)",
|
||||
"handle": "eve.test",
|
||||
"labels": Array [],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(0)",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record#view",
|
||||
"record": Object {
|
||||
"$type": "app.bsky.embed.record#viewRecord",
|
||||
"author": Object {
|
||||
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(2)@jpeg",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"did": "user(1)",
|
||||
"displayName": "ali",
|
||||
"handle": "alice.test",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-a",
|
||||
},
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-b",
|
||||
},
|
||||
],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(1)",
|
||||
"embeds": Array [],
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(1)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(1)",
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(1)",
|
||||
"value": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Object {
|
||||
"$type": "com.atproto.label.defs#selfLabels",
|
||||
"values": Array [
|
||||
Object {
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
},
|
||||
"text": "hey there",
|
||||
},
|
||||
},
|
||||
},
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record",
|
||||
"record": Object {
|
||||
"cid": "cids(1)",
|
||||
"uri": "record(1)",
|
||||
},
|
||||
},
|
||||
"text": "qUoTe 2",
|
||||
},
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(0)",
|
||||
"viewer": Object {
|
||||
"threadMuted": false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"uri": "record(1)",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`pds quote views fetches post quotes 1`] = `
|
||||
Object {
|
||||
"cursor": "0000000000000__bafycid",
|
||||
"posts": Array [
|
||||
Object {
|
||||
"author": Object {
|
||||
"did": "user(0)",
|
||||
"handle": "eve.test",
|
||||
"labels": Array [],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(0)",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record#view",
|
||||
"record": Object {
|
||||
"$type": "app.bsky.embed.record#viewRecord",
|
||||
"author": Object {
|
||||
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(2)@jpeg",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"did": "user(1)",
|
||||
"displayName": "ali",
|
||||
"handle": "alice.test",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-a",
|
||||
},
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-b",
|
||||
},
|
||||
],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(1)",
|
||||
"embeds": Array [],
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(1)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(1)",
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(1)",
|
||||
"value": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Object {
|
||||
"$type": "com.atproto.label.defs#selfLabels",
|
||||
"values": Array [
|
||||
Object {
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
},
|
||||
"text": "hey there",
|
||||
},
|
||||
},
|
||||
},
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record",
|
||||
"record": Object {
|
||||
"cid": "cids(1)",
|
||||
"uri": "record(1)",
|
||||
},
|
||||
},
|
||||
"text": "qUoTe 2",
|
||||
},
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(0)",
|
||||
"viewer": Object {
|
||||
"threadMuted": false,
|
||||
},
|
||||
},
|
||||
Object {
|
||||
"author": Object {
|
||||
"did": "user(0)",
|
||||
"handle": "eve.test",
|
||||
"labels": Array [],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(4)",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record#view",
|
||||
"record": Object {
|
||||
"$type": "app.bsky.embed.record#viewRecord",
|
||||
"author": Object {
|
||||
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(2)@jpeg",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"did": "user(1)",
|
||||
"displayName": "ali",
|
||||
"handle": "alice.test",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-a",
|
||||
},
|
||||
Object {
|
||||
"cid": "cids(3)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(2)",
|
||||
"val": "self-label-b",
|
||||
},
|
||||
],
|
||||
"viewer": Object {
|
||||
"blockedBy": false,
|
||||
"muted": false,
|
||||
},
|
||||
},
|
||||
"cid": "cids(1)",
|
||||
"embeds": Array [],
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [
|
||||
Object {
|
||||
"cid": "cids(1)",
|
||||
"cts": "1970-01-01T00:00:00.000Z",
|
||||
"src": "user(1)",
|
||||
"uri": "record(1)",
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(1)",
|
||||
"value": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Object {
|
||||
"$type": "com.atproto.label.defs#selfLabels",
|
||||
"values": Array [
|
||||
Object {
|
||||
"val": "self-label",
|
||||
},
|
||||
],
|
||||
},
|
||||
"text": "hey there",
|
||||
},
|
||||
},
|
||||
},
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
"embed": Object {
|
||||
"$type": "app.bsky.embed.record",
|
||||
"record": Object {
|
||||
"cid": "cids(1)",
|
||||
"uri": "record(1)",
|
||||
},
|
||||
},
|
||||
"text": "qUoTe 1",
|
||||
},
|
||||
"replyCount": 0,
|
||||
"repostCount": 0,
|
||||
"uri": "record(3)",
|
||||
"viewer": Object {
|
||||
"threadMuted": false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"uri": "record(1)",
|
||||
}
|
||||
`;
|
@ -41,6 +41,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -97,6 +98,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -170,6 +172,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -234,6 +237,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -265,6 +269,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -333,6 +338,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -408,6 +414,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -476,6 +483,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -507,6 +515,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -574,6 +583,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -654,6 +664,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -685,6 +696,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -752,6 +764,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -832,6 +845,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -864,6 +878,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -923,6 +938,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -990,6 +1006,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1048,6 +1065,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1116,6 +1134,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1185,6 +1204,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1249,6 +1269,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1307,6 +1328,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1382,6 +1404,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1450,6 +1473,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1508,6 +1532,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -35,6 +35,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -115,6 +116,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -162,6 +164,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -227,6 +230,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -288,6 +292,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -407,6 +412,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -460,6 +466,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -502,6 +509,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -557,6 +565,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -611,6 +620,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -670,6 +680,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -750,6 +761,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -797,6 +809,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -862,6 +875,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -923,6 +937,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -954,6 +969,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1010,6 +1026,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1055,6 +1072,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1118,6 +1136,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1158,6 +1177,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -1204,6 +1224,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1238,6 +1259,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1338,6 +1360,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1416,6 +1439,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1474,6 +1498,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1533,6 +1558,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1647,6 +1673,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1718,6 +1745,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1765,6 +1793,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1954,6 +1983,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2036,6 +2066,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2131,6 +2162,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2202,6 +2234,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2233,6 +2266,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2289,6 +2323,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2334,6 +2369,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2393,6 +2429,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2465,6 +2502,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2510,6 +2548,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2694,6 +2733,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2734,6 +2774,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -2780,6 +2821,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2950,6 +2992,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3005,6 +3048,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3105,6 +3149,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3183,6 +3228,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3241,6 +3287,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3421,6 +3468,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3504,6 +3552,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3599,6 +3648,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3672,6 +3722,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -3703,6 +3754,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3761,6 +3813,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -3809,6 +3862,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -3867,6 +3921,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3941,6 +3996,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -3989,6 +4045,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -4175,6 +4232,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4214,6 +4272,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -4262,6 +4321,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -4360,6 +4420,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4436,6 +4497,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4496,6 +4558,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4675,6 +4738,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4758,6 +4822,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4854,6 +4919,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -4927,6 +4993,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -4957,6 +5024,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5015,6 +5083,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5063,6 +5132,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5247,6 +5317,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5303,6 +5374,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5401,6 +5473,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5493,6 +5566,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5553,6 +5627,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5667,6 +5742,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5739,6 +5815,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5789,6 +5866,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5866,6 +5944,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -5939,6 +6018,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -5987,6 +6067,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -6022,6 +6103,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -6188,6 +6270,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -6242,6 +6325,7 @@ Array [
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -6282,6 +6366,7 @@ Array [
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
105
packages/bsky/tests/views/quotes.test.ts
Normal file
105
packages/bsky/tests/views/quotes.test.ts
Normal file
@ -0,0 +1,105 @@
|
||||
import { quotesSeed, SeedClient, TestNetwork } from '@atproto/dev-env'
|
||||
import AtpAgent from '@atproto/api'
|
||||
import { forSnapshot } from '../_util'
|
||||
import { ids } from '../../src/lexicon/lexicons'
|
||||
|
||||
describe('pds quote views', () => {
|
||||
let network: TestNetwork
|
||||
let agent: AtpAgent
|
||||
let sc: SeedClient
|
||||
|
||||
// account dids, for convenience
|
||||
let alice: string
|
||||
let bob: string
|
||||
let eve: string
|
||||
|
||||
beforeAll(async () => {
|
||||
network = await TestNetwork.create({
|
||||
dbPostgresSchema: 'bsky_views_quotes',
|
||||
})
|
||||
agent = network.bsky.getClient()
|
||||
sc = network.getSeedClient()
|
||||
await quotesSeed(sc)
|
||||
await network.processAll()
|
||||
alice = sc.dids.alice
|
||||
bob = sc.dids.bob
|
||||
eve = sc.dids.eve
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
await network.close()
|
||||
})
|
||||
|
||||
it('fetches post quotes', async () => {
|
||||
const alicePostQuotes = await agent.api.app.bsky.feed.getQuotes(
|
||||
{ uri: sc.posts[alice][0].ref.uriStr, limit: 30 },
|
||||
{ headers: await network.serviceHeaders(eve, ids.AppBskyFeedGetQuotes) },
|
||||
)
|
||||
|
||||
expect(alicePostQuotes.data.posts.length).toBe(2)
|
||||
expect(forSnapshot(alicePostQuotes.data)).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('utilizes limit parameter and cursor', async () => {
|
||||
const alicePostQuotes1 = await agent.api.app.bsky.feed.getQuotes(
|
||||
{ uri: sc.posts[alice][1].ref.uriStr, limit: 3 },
|
||||
{ headers: await network.serviceHeaders(eve, ids.AppBskyFeedGetQuotes) },
|
||||
)
|
||||
|
||||
expect(alicePostQuotes1.data.posts.length).toBe(3)
|
||||
expect(alicePostQuotes1.data.cursor).toBeDefined()
|
||||
|
||||
const alicePostQuotes2 = await agent.api.app.bsky.feed.getQuotes(
|
||||
{
|
||||
uri: sc.posts[alice][1].ref.uriStr,
|
||||
limit: 3,
|
||||
cursor: alicePostQuotes1.data.cursor,
|
||||
},
|
||||
{ headers: await network.serviceHeaders(eve, ids.AppBskyFeedGetQuotes) },
|
||||
)
|
||||
|
||||
expect(alicePostQuotes2.data.posts.length).toBe(2)
|
||||
})
|
||||
|
||||
it('does not return post when quote is deleted', async () => {
|
||||
await sc.deletePost(eve, sc.posts[eve][0].ref.uri)
|
||||
await network.processAll()
|
||||
|
||||
const alicePostQuotes = await agent.api.app.bsky.feed.getQuotes(
|
||||
{ uri: sc.posts[alice][0].ref.uriStr, limit: 30 },
|
||||
{
|
||||
headers: await network.serviceHeaders(alice, ids.AppBskyFeedGetQuotes),
|
||||
},
|
||||
)
|
||||
|
||||
expect(alicePostQuotes.data.posts.length).toBe(1)
|
||||
expect(forSnapshot(alicePostQuotes.data)).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('does not return any quotes when the quoted post is deleted', async () => {
|
||||
await sc.deletePost(alice, sc.posts[alice][0].ref.uri)
|
||||
await network.processAll()
|
||||
|
||||
const alicePostQuotesAfter = await agent.api.app.bsky.feed.getQuotes(
|
||||
{ uri: sc.posts[alice][0].ref.uriStr, limit: 30 },
|
||||
{
|
||||
headers: await network.serviceHeaders(alice, ids.AppBskyFeedGetQuotes),
|
||||
},
|
||||
)
|
||||
|
||||
expect(alicePostQuotesAfter.data.posts.length).toBe(0)
|
||||
})
|
||||
|
||||
it('decrements quote count when a quote is deleted', async () => {
|
||||
await sc.deletePost(eve, sc.posts[eve][2].ref.uri)
|
||||
await network.processAll()
|
||||
|
||||
const bobPost = await agent.api.app.bsky.feed.getPosts(
|
||||
{ uris: [sc.replies[bob][0].ref.uriStr] },
|
||||
{ headers: await network.serviceHeaders(bob, ids.AppBskyFeedGetPosts) },
|
||||
)
|
||||
|
||||
expect(bobPost.data.posts[0].quoteCount).toEqual(0)
|
||||
expect(forSnapshot(bobPost.data)).toMatchSnapshot()
|
||||
})
|
||||
})
|
@ -7,3 +7,4 @@ export { default as likesSeed } from './likes'
|
||||
export { default as repostsSeed } from './reposts'
|
||||
export { default as usersBulkSeed } from './users-bulk'
|
||||
export { default as usersSeed } from './users'
|
||||
export { default as quotesSeed } from './quotes'
|
||||
|
50
packages/dev-env/src/seed/quotes.ts
Normal file
50
packages/dev-env/src/seed/quotes.ts
Normal file
@ -0,0 +1,50 @@
|
||||
import { SeedClient } from './client'
|
||||
import { basicSeed } from './index'
|
||||
|
||||
export default async (sc: SeedClient) => {
|
||||
await basicSeed(sc)
|
||||
await sc.createAccount('eve', {
|
||||
email: 'eve@test.com',
|
||||
handle: 'eve.test',
|
||||
password: 'eve-pass',
|
||||
})
|
||||
|
||||
await sc.post(
|
||||
sc.dids.eve,
|
||||
'qUoTe 1',
|
||||
undefined,
|
||||
undefined,
|
||||
sc.posts[sc.dids.alice][0].ref,
|
||||
)
|
||||
await sc.post(
|
||||
sc.dids.eve,
|
||||
'qUoTe 2',
|
||||
undefined,
|
||||
undefined,
|
||||
sc.posts[sc.dids.alice][0].ref,
|
||||
)
|
||||
|
||||
await sc.post(
|
||||
sc.dids.eve,
|
||||
'qUoTe 3',
|
||||
undefined,
|
||||
undefined,
|
||||
sc.replies[sc.dids.bob][0].ref,
|
||||
)
|
||||
|
||||
const spamPosts: Promise<any>[] = []
|
||||
for (let i = 0; i < 5; i++) {
|
||||
spamPosts.push(
|
||||
sc.post(
|
||||
sc.dids.eve,
|
||||
`MASSIVE QUOTE SPAM ${i + 1}`,
|
||||
undefined,
|
||||
undefined,
|
||||
sc.posts[sc.dids.alice][1].ref,
|
||||
),
|
||||
)
|
||||
}
|
||||
await Promise.all(spamPosts)
|
||||
|
||||
return sc
|
||||
}
|
@ -102,6 +102,7 @@ import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes'
|
||||
import * as AppBskyFeedGetListFeed from './types/app/bsky/feed/getListFeed'
|
||||
import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread'
|
||||
import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts'
|
||||
import * as AppBskyFeedGetQuotes from './types/app/bsky/feed/getQuotes'
|
||||
import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy'
|
||||
import * as AppBskyFeedGetSuggestedFeeds from './types/app/bsky/feed/getSuggestedFeeds'
|
||||
import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline'
|
||||
@ -1414,6 +1415,17 @@ export class AppBskyFeedNS {
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getQuotes<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
AppBskyFeedGetQuotes.Handler<ExtractAuth<AV>>,
|
||||
AppBskyFeedGetQuotes.HandlerReqCtx<ExtractAuth<AV>>
|
||||
>,
|
||||
) {
|
||||
const nsid = 'app.bsky.feed.getQuotes' // @ts-ignore
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getRepostedBy<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
|
@ -5165,6 +5165,9 @@ export const schemaDict = {
|
||||
likeCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
quoteCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
indexedAt: {
|
||||
type: 'string',
|
||||
format: 'datetime',
|
||||
@ -6280,6 +6283,69 @@ export const schemaDict = {
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetQuotes: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getQuotes',
|
||||
defs: {
|
||||
main: {
|
||||
type: 'query',
|
||||
description: 'Get a list of quotes for a given post.',
|
||||
parameters: {
|
||||
type: 'params',
|
||||
required: ['uri'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
description: 'Reference (AT-URI) of post record',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
description:
|
||||
'If supplied, filters to quotes of specific version (by CID) of the post record.',
|
||||
},
|
||||
limit: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
maximum: 100,
|
||||
default: 50,
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
output: {
|
||||
encoding: 'application/json',
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['uri', 'posts'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
posts: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'ref',
|
||||
ref: 'lex:app.bsky.feed.defs#postView',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetRepostedBy: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getRepostedBy',
|
||||
@ -11792,6 +11858,7 @@ export const ids = {
|
||||
AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed',
|
||||
AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread',
|
||||
AppBskyFeedGetPosts: 'app.bsky.feed.getPosts',
|
||||
AppBskyFeedGetQuotes: 'app.bsky.feed.getQuotes',
|
||||
AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy',
|
||||
AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds',
|
||||
AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline',
|
||||
|
@ -28,6 +28,7 @@ export interface PostView {
|
||||
replyCount?: number
|
||||
repostCount?: number
|
||||
likeCount?: number
|
||||
quoteCount?: number
|
||||
indexedAt: string
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
|
54
packages/ozone/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
54
packages/ozone/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import express from 'express'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
|
||||
import * as AppBskyFeedDefs from './defs'
|
||||
|
||||
export interface QueryParams {
|
||||
/** Reference (AT-URI) of post record */
|
||||
uri: string
|
||||
/** If supplied, filters to quotes of specific version (by CID) of the post record. */
|
||||
cid?: string
|
||||
limit: number
|
||||
cursor?: string
|
||||
}
|
||||
|
||||
export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
uri: string
|
||||
cid?: string
|
||||
cursor?: string
|
||||
posts: AppBskyFeedDefs.PostView[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export type HandlerInput = undefined
|
||||
|
||||
export interface HandlerSuccess {
|
||||
encoding: 'application/json'
|
||||
body: OutputSchema
|
||||
headers?: { [key: string]: string }
|
||||
}
|
||||
|
||||
export interface HandlerError {
|
||||
status: number
|
||||
message?: string
|
||||
}
|
||||
|
||||
export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
|
||||
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
|
||||
auth: HA
|
||||
params: QueryParams
|
||||
input: HandlerInput
|
||||
req: express.Request
|
||||
res: express.Response
|
||||
}
|
||||
export type Handler<HA extends HandlerAuth = never> = (
|
||||
ctx: HandlerReqCtx<HA>,
|
||||
) => Promise<HandlerOutput> | HandlerOutput
|
@ -102,6 +102,7 @@ import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes'
|
||||
import * as AppBskyFeedGetListFeed from './types/app/bsky/feed/getListFeed'
|
||||
import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread'
|
||||
import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts'
|
||||
import * as AppBskyFeedGetQuotes from './types/app/bsky/feed/getQuotes'
|
||||
import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy'
|
||||
import * as AppBskyFeedGetSuggestedFeeds from './types/app/bsky/feed/getSuggestedFeeds'
|
||||
import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline'
|
||||
@ -1414,6 +1415,17 @@ export class AppBskyFeedNS {
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getQuotes<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
AppBskyFeedGetQuotes.Handler<ExtractAuth<AV>>,
|
||||
AppBskyFeedGetQuotes.HandlerReqCtx<ExtractAuth<AV>>
|
||||
>,
|
||||
) {
|
||||
const nsid = 'app.bsky.feed.getQuotes' // @ts-ignore
|
||||
return this._server.xrpc.method(nsid, cfg)
|
||||
}
|
||||
|
||||
getRepostedBy<AV extends AuthVerifier>(
|
||||
cfg: ConfigOf<
|
||||
AV,
|
||||
|
@ -5165,6 +5165,9 @@ export const schemaDict = {
|
||||
likeCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
quoteCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
indexedAt: {
|
||||
type: 'string',
|
||||
format: 'datetime',
|
||||
@ -6280,6 +6283,69 @@ export const schemaDict = {
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetQuotes: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getQuotes',
|
||||
defs: {
|
||||
main: {
|
||||
type: 'query',
|
||||
description: 'Get a list of quotes for a given post.',
|
||||
parameters: {
|
||||
type: 'params',
|
||||
required: ['uri'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
description: 'Reference (AT-URI) of post record',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
description:
|
||||
'If supplied, filters to quotes of specific version (by CID) of the post record.',
|
||||
},
|
||||
limit: {
|
||||
type: 'integer',
|
||||
minimum: 1,
|
||||
maximum: 100,
|
||||
default: 50,
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
output: {
|
||||
encoding: 'application/json',
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['uri', 'posts'],
|
||||
properties: {
|
||||
uri: {
|
||||
type: 'string',
|
||||
format: 'at-uri',
|
||||
},
|
||||
cid: {
|
||||
type: 'string',
|
||||
format: 'cid',
|
||||
},
|
||||
cursor: {
|
||||
type: 'string',
|
||||
},
|
||||
posts: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'ref',
|
||||
ref: 'lex:app.bsky.feed.defs#postView',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
AppBskyFeedGetRepostedBy: {
|
||||
lexicon: 1,
|
||||
id: 'app.bsky.feed.getRepostedBy',
|
||||
@ -11792,6 +11858,7 @@ export const ids = {
|
||||
AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed',
|
||||
AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread',
|
||||
AppBskyFeedGetPosts: 'app.bsky.feed.getPosts',
|
||||
AppBskyFeedGetQuotes: 'app.bsky.feed.getQuotes',
|
||||
AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy',
|
||||
AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds',
|
||||
AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline',
|
||||
|
@ -28,6 +28,7 @@ export interface PostView {
|
||||
replyCount?: number
|
||||
repostCount?: number
|
||||
likeCount?: number
|
||||
quoteCount?: number
|
||||
indexedAt: string
|
||||
viewer?: ViewerState
|
||||
labels?: ComAtprotoLabelDefs.Label[]
|
||||
|
54
packages/pds/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
54
packages/pds/src/lexicon/types/app/bsky/feed/getQuotes.ts
Normal file
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* GENERATED CODE - DO NOT MODIFY
|
||||
*/
|
||||
import express from 'express'
|
||||
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
||||
import { lexicons } from '../../../../lexicons'
|
||||
import { isObj, hasProp } from '../../../../util'
|
||||
import { CID } from 'multiformats/cid'
|
||||
import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
|
||||
import * as AppBskyFeedDefs from './defs'
|
||||
|
||||
export interface QueryParams {
|
||||
/** Reference (AT-URI) of post record */
|
||||
uri: string
|
||||
/** If supplied, filters to quotes of specific version (by CID) of the post record. */
|
||||
cid?: string
|
||||
limit: number
|
||||
cursor?: string
|
||||
}
|
||||
|
||||
export type InputSchema = undefined
|
||||
|
||||
export interface OutputSchema {
|
||||
uri: string
|
||||
cid?: string
|
||||
cursor?: string
|
||||
posts: AppBskyFeedDefs.PostView[]
|
||||
[k: string]: unknown
|
||||
}
|
||||
|
||||
export type HandlerInput = undefined
|
||||
|
||||
export interface HandlerSuccess {
|
||||
encoding: 'application/json'
|
||||
body: OutputSchema
|
||||
headers?: { [key: string]: string }
|
||||
}
|
||||
|
||||
export interface HandlerError {
|
||||
status: number
|
||||
message?: string
|
||||
}
|
||||
|
||||
export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
|
||||
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
|
||||
auth: HA
|
||||
params: QueryParams
|
||||
input: HandlerInput
|
||||
req: express.Request
|
||||
res: express.Response
|
||||
}
|
||||
export type Handler<HA extends HandlerAuth = never> = (
|
||||
ctx: HandlerReqCtx<HA>,
|
||||
) => Promise<HandlerOutput> | HandlerOutput
|
@ -44,6 +44,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -136,6 +137,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
@ -493,6 +493,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -565,6 +566,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -610,6 +612,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -644,6 +647,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -677,6 +681,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -889,6 +894,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -969,6 +975,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1040,6 +1047,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1084,6 +1092,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1156,6 +1165,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1201,6 +1211,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1371,6 +1382,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1411,6 +1423,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -1457,6 +1470,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -1490,6 +1504,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1548,6 +1563,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1595,6 +1611,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1681,6 +1698,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1791,6 +1809,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1892,6 +1911,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -1963,6 +1983,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2010,6 +2031,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2187,6 +2209,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2269,6 +2292,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2349,6 +2373,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2420,6 +2445,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2451,6 +2477,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2507,6 +2534,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2552,6 +2580,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2596,6 +2625,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2668,6 +2698,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2713,6 +2744,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -2883,6 +2915,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -2923,6 +2956,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000+00:00",
|
||||
@ -2969,6 +3003,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 3,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000000Z",
|
||||
@ -3125,6 +3160,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3182,6 +3218,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3266,6 +3303,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 2,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3336,6 +3374,7 @@ Object {
|
||||
"indexedAt": "1970-01-01T00:00:00.000Z",
|
||||
"labels": Array [],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 1,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
@ -3394,6 +3433,7 @@ Object {
|
||||
},
|
||||
],
|
||||
"likeCount": 0,
|
||||
"quoteCount": 0,
|
||||
"record": Object {
|
||||
"$type": "app.bsky.feed.post",
|
||||
"createdAt": "1970-01-01T00:00:00.000Z",
|
||||
|
Loading…
x
Reference in New Issue
Block a user