about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/api/feed-manip.ts11
-rw-r--r--src/lib/api/feed/merge.ts1
-rw-r--r--src/lib/api/hack-add-deleted-embed.ts24
-rw-r--r--src/lib/api/index.ts21
-rw-r--r--src/lib/embeds.ts24
-rw-r--r--src/lib/generate-starterpack.ts17
-rw-r--r--src/lib/moderation/blocked-and-muted.ts14
-rw-r--r--src/lib/strings/embed-player.ts9
-rw-r--r--src/lib/strings/starter-pack.ts6
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') {