diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/api/feed-manip.ts | 11 | ||||
-rw-r--r-- | src/lib/api/feed/merge.ts | 1 | ||||
-rw-r--r-- | src/lib/api/hack-add-deleted-embed.ts | 24 | ||||
-rw-r--r-- | src/lib/api/index.ts | 21 | ||||
-rw-r--r-- | src/lib/embeds.ts | 24 | ||||
-rw-r--r-- | src/lib/generate-starterpack.ts | 17 | ||||
-rw-r--r-- | src/lib/moderation/blocked-and-muted.ts | 14 | ||||
-rw-r--r-- | src/lib/strings/embed-player.ts | 9 | ||||
-rw-r--r-- | src/lib/strings/starter-pack.ts | 6 |
9 files changed, 48 insertions, 79 deletions
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts index 4aa20fd12..a1b2e2bc9 100644 --- a/src/lib/api/feed-manip.ts +++ b/src/lib/api/feed-manip.ts @@ -6,6 +6,7 @@ import { AppBskyFeedPost, } from '@atproto/api' +import * as bsky from '#/types/bsky' import {isPostInLanguage} from '../../locale/helpers' import {FALLBACK_MARKER_POST} from './feed/home' import {ReasonFeedSource} from './feed/types' @@ -57,7 +58,9 @@ export class FeedViewPostsSlice { } this._feedPost = feedPost this._reactKey = `slice-${post.uri}-${ - feedPost.reason?.indexedAt || post.indexedAt + feedPost.reason && 'indexedAt' in feedPost.reason + ? feedPost.reason.indexedAt + : post.indexedAt }` if (feedPost.post.uri === FALLBACK_MARKER_POST.post.uri) { this.isFallbackMarker = true @@ -65,7 +68,7 @@ export class FeedViewPostsSlice { } if ( !AppBskyFeedPost.isRecord(post.record) || - !AppBskyFeedPost.validateRecord(post.record).success + !bsky.validate(post.record, AppBskyFeedPost.validateRecord) ) { return } @@ -97,7 +100,7 @@ export class FeedViewPostsSlice { if ( !AppBskyFeedDefs.isPostView(parent) || !AppBskyFeedPost.isRecord(parent.record) || - !AppBskyFeedPost.validateRecord(parent.record).success + !bsky.validate(parent.record, AppBskyFeedPost.validateRecord) ) { this.isOrphan = true return @@ -139,7 +142,7 @@ export class FeedViewPostsSlice { if ( !AppBskyFeedDefs.isPostView(root) || !AppBskyFeedPost.isRecord(root.record) || - !AppBskyFeedPost.validateRecord(root.record).success + !bsky.validate(root.record, AppBskyFeedPost.validateRecord) ) { this.isOrphan = true return diff --git a/src/lib/api/feed/merge.ts b/src/lib/api/feed/merge.ts index 35c344055..7f8c1c275 100644 --- a/src/lib/api/feed/merge.ts +++ b/src/lib/api/feed/merge.ts @@ -311,6 +311,7 @@ class MergeFeedSource_Custom extends MergeFeedSource { ) // attach source info for (const post of res.data.feed) { + // @ts-ignore post.__source = this.sourceInfo } return res diff --git a/src/lib/api/hack-add-deleted-embed.ts b/src/lib/api/hack-add-deleted-embed.ts deleted file mode 100644 index 59aad21a2..000000000 --- a/src/lib/api/hack-add-deleted-embed.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - AppBskyFeedDefs, - AppBskyFeedPost, - ComAtprotoRepoStrongRef, -} from '@atproto/api' - -/** - * HACK - * The server doesnt seem to be correctly giving the notFound view yet - * so I'm adding it manually for now - * -prf - */ -export function hackAddDeletedEmbed(post: AppBskyFeedDefs.PostView) { - const record = post.record as AppBskyFeedPost.Record - if (record.embed?.$type === 'app.bsky.embed.record' && !post.embed) { - post.embed = { - $type: 'app.bsky.embed.record#view', - record: { - $type: 'app.bsky.embed.record#viewNotFound', - uri: (record.embed.record as ComAtprotoRepoStrongRef.Main).uri, - }, - } - } -} diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts index 5cc0d6336..d1f304d4a 100644 --- a/src/lib/api/index.ts +++ b/src/lib/api/index.ts @@ -1,4 +1,5 @@ import { + $Typed, AppBskyEmbedExternal, AppBskyEmbedImages, AppBskyEmbedRecord, @@ -74,7 +75,7 @@ export async function post( } const did = agent.assertDid - const writes: ComAtprotoRepoApplyWrites.Create[] = [] + const writes: $Typed<ComAtprotoRepoApplyWrites.Create>[] = [] const uris: string[] = [] let now = new Date() @@ -91,7 +92,7 @@ export async function post( draft, opts.onStateChange, ) - let labels: ComAtprotoLabelDefs.SelfLabels | undefined + let labels: $Typed<ComAtprotoLabelDefs.SelfLabels> | undefined if (draft.labels.length) { labels = { $type: 'com.atproto.label.defs#selfLabels', @@ -230,11 +231,11 @@ async function resolveEmbed( draft: PostDraft, onStateChange: ((state: string) => void) | undefined, ): Promise< - | AppBskyEmbedImages.Main - | AppBskyEmbedVideo.Main - | AppBskyEmbedExternal.Main - | AppBskyEmbedRecord.Main - | AppBskyEmbedRecordWithMedia.Main + | $Typed<AppBskyEmbedImages.Main> + | $Typed<AppBskyEmbedVideo.Main> + | $Typed<AppBskyEmbedExternal.Main> + | $Typed<AppBskyEmbedRecord.Main> + | $Typed<AppBskyEmbedRecordWithMedia.Main> | undefined > { if (draft.embed.quote) { @@ -288,9 +289,9 @@ async function resolveMedia( embedDraft: EmbedDraft, onStateChange: ((state: string) => void) | undefined, ): Promise< - | AppBskyEmbedExternal.Main - | AppBskyEmbedImages.Main - | AppBskyEmbedVideo.Main + | $Typed<AppBskyEmbedExternal.Main> + | $Typed<AppBskyEmbedImages.Main> + | $Typed<AppBskyEmbedVideo.Main> | undefined > { if (embedDraft.media?.type === 'images') { diff --git a/src/lib/embeds.ts b/src/lib/embeds.ts deleted file mode 100644 index 2904f1cc3..000000000 --- a/src/lib/embeds.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - AppBskyEmbedRecord, - AppBskyEmbedRecordWithMedia, - AppBskyFeedDefs, -} from '@atproto/api' - -export function isEmbedByEmbedder( - embed: AppBskyFeedDefs.PostView['embed'], - did: string, -): boolean { - if (!embed) { - return false - } - if (AppBskyEmbedRecord.isViewRecord(embed.record)) { - return embed.record.author.did === did - } - if ( - AppBskyEmbedRecordWithMedia.isView(embed) && - AppBskyEmbedRecord.isViewRecord(embed.record.record) - ) { - return embed.record.record.author.did === did - } - return true -} diff --git a/src/lib/generate-starterpack.ts b/src/lib/generate-starterpack.ts index 3be338ac8..11e334329 100644 --- a/src/lib/generate-starterpack.ts +++ b/src/lib/generate-starterpack.ts @@ -1,7 +1,9 @@ import { + $Typed, AppBskyActorDefs, AppBskyGraphGetStarterPack, BskyAgent, + ComAtprotoRepoApplyWrites, Facet, } from '@atproto/api' import {msg} from '@lingui/macro' @@ -13,6 +15,7 @@ import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {enforceLen} from '#/lib/strings/helpers' import {useAgent} from '#/state/session' +import * as bsky from '#/types/bsky' export const createStarterPackList = async ({ name, @@ -24,7 +27,7 @@ export const createStarterPackList = async ({ name: string description?: string descriptionFacets?: Facet[] - profiles: AppBskyActorDefs.ProfileViewBasic[] + profiles: bsky.profile.AnyProfileView[] agent: BskyAgent }): Promise<{uri: string; cid: string}> => { if (profiles.length === 0) throw new Error('No profiles given') @@ -68,8 +71,8 @@ export function useGenerateStarterPackMutation({ return useMutation<{uri: string; cid: string}, Error, void>({ mutationFn: async () => { - let profile: AppBskyActorDefs.ProfileViewBasic | undefined - let profiles: AppBskyActorDefs.ProfileViewBasic[] | undefined + let profile: AppBskyActorDefs.ProfileViewDetailed | undefined + let profiles: AppBskyActorDefs.ProfileView[] | undefined await Promise.all([ (async () => { @@ -136,7 +139,13 @@ export function useGenerateStarterPackMutation({ }) } -function createListItem({did, listUri}: {did: string; listUri: string}) { +function createListItem({ + did, + listUri, +}: { + did: string + listUri: string +}): $Typed<ComAtprotoRepoApplyWrites.Create> { return { $type: 'com.atproto.repo.applyWrites#create', collection: 'app.bsky.graph.listitem', diff --git a/src/lib/moderation/blocked-and-muted.ts b/src/lib/moderation/blocked-and-muted.ts index 18e6ef3e3..27c461a3d 100644 --- a/src/lib/moderation/blocked-and-muted.ts +++ b/src/lib/moderation/blocked-and-muted.ts @@ -1,17 +1,9 @@ -import {AppBskyActorDefs} from '@atproto/api' +import * as bsky from '#/types/bsky' -export function isBlockedOrBlocking( - profile: - | AppBskyActorDefs.ProfileViewBasic - | AppBskyActorDefs.ProfileViewDetailed, -) { +export function isBlockedOrBlocking(profile: bsky.profile.AnyProfileView) { return profile.viewer?.blockedBy || profile.viewer?.blocking } -export function isMuted( - profile: - | AppBskyActorDefs.ProfileViewBasic - | AppBskyActorDefs.ProfileViewDetailed, -) { +export function isMuted(profile: bsky.profile.AnyProfileView) { return profile.viewer?.muted || profile.viewer?.mutedByList } diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts index 9ee5128c8..0b3073b95 100644 --- a/src/lib/strings/embed-player.ts +++ b/src/lib/strings/embed-player.ts @@ -568,3 +568,12 @@ export function parseTenorGif(urlp: URL): dimensions, } } + +export function isTenorGifUri(url: URL | string) { + try { + return parseTenorGif(typeof url === 'string' ? new URL(url) : url).success + } catch { + // Invalid URL + return false + } +} diff --git a/src/lib/strings/starter-pack.ts b/src/lib/strings/starter-pack.ts index ca3410015..ced947b59 100644 --- a/src/lib/strings/starter-pack.ts +++ b/src/lib/strings/starter-pack.ts @@ -1,4 +1,6 @@ -import {AppBskyGraphDefs, AtUri} from '@atproto/api' +import {AtUri} from '@atproto/api' + +import * as bsky from '#/types/bsky' export function createStarterPackLinkFromAndroidReferrer( referrerQueryString: string, @@ -79,7 +81,7 @@ export function httpStarterPackUriToAtUri(httpUri?: string): string | null { } export function getStarterPackOgCard( - didOrStarterPack: AppBskyGraphDefs.StarterPackView | string, + didOrStarterPack: bsky.starterPack.AnyStarterPackView | string, rkey?: string, ) { if (typeof didOrStarterPack === 'string') { |