about summary refs log tree commit diff
path: root/src/state/queries/util.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/queries/util.ts')
-rw-r--r--src/state/queries/util.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/state/queries/util.ts b/src/state/queries/util.ts
index b74893fcd..f733c3788 100644
--- a/src/state/queries/util.ts
+++ b/src/state/queries/util.ts
@@ -1,8 +1,10 @@
 import {
+  AppBskyActorDefs,
   AppBskyEmbedRecord,
   AppBskyEmbedRecordWithMedia,
   AppBskyFeedDefs,
   AppBskyFeedPost,
+  AtUri,
 } from '@atproto/api'
 import {InfiniteData, QueryClient, QueryKey} from '@tanstack/react-query'
 
@@ -22,6 +24,23 @@ export function truncateAndInvalidate<T = any>(
   queryClient.invalidateQueries({queryKey})
 }
 
+// Given an AtUri, this function will check if the AtUri matches a
+// hit regardless of whether the AtUri uses a DID or handle as a host.
+//
+// AtUri should be the URI that is being searched for, while currentUri
+// is the URI that is being checked. currentAuthor is the author
+// of the currentUri that is being checked.
+export function didOrHandleUriMatches(
+  atUri: AtUri,
+  record: {uri: string; author: AppBskyActorDefs.ProfileViewBasic},
+) {
+  if (atUri.host.startsWith('did:')) {
+    return atUri.href === record.uri
+  }
+
+  return atUri.host === record.author.handle && record.uri.endsWith(atUri.rkey)
+}
+
 export function getEmbeddedPost(
   v: unknown,
 ): AppBskyEmbedRecord.ViewRecord | undefined {