Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
1.6 kB · 45 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import {type app} from '#/lexicons'import {replacePostInData} from './replace-redrafted-post'
const original = { uri: 'at://did:plc:alice/app.bsky.feed.post/old', author: {did: 'did:plc:alice', handle: 'alice.test'}, cid: 'bafyreia', indexedAt: '2026-09-09T00:00:00Z', record: {text: 'Original'},} as app.bsky.feed.defs.PostViewconst replacement = { ...original, uri: 'at://did:plc:alice/app.bsky.feed.post/new', record: {text: 'Edited'},} as app.bsky.feed.defs.PostView
it('replaces a feed slot while retaining order, cursor, and unrelated references', () => { const other = {...original, uri: 'at://did:plc:bob/app.bsky.feed.post/other'} const data = { pages: [{feed: [{post: other}, {post: original}], cursor: 'next'}], pageParams: [undefined], } const result = replacePostInData( data, original.uri, replacement, ) as typeof data expect(result.pages[0].feed[0]).toBe(data.pages[0].feed[0]) expect(result.pages[0].feed[1].post).toBe(replacement) expect(result.pages[0].cursor).toBe('next') expect(result.pageParams).toBe(data.pageParams) expect(data.pages[0].feed[1].post).toBe(original)})
it('updates the thread item URI alongside its post', () => { const data = {thread: [{uri: original.uri, value: {post: original}}]} expect(replacePostInData(data, original.uri, replacement)).toEqual({ thread: [{uri: replacement.uri, value: {post: replacement}}], })})
it('preserves immutable quote embeds and record references', () => { const data = {embed: {post: original}, record: {reply: original}} expect(replacePostInData(data, original.uri, replacement)).toBe(data)})