diff --git a/src/lib/strings/helpers.ts b/src/lib/strings/helpers.ts
index 381ae32f..e2abe901 100644
--- a/src/lib/strings/helpers.ts
+++ b/src/lib/strings/helpers.ts
@@ -37,3 +37,27 @@ export function countLines(str: string | undefined): number {
if (!str) return 0
return str.match(/\n/g)?.length ?? 0
}
+
+// Augments search query with additional syntax like `from:me`
+export function augmentSearchQuery(query: string, {did}: {did?: string}) {
+ // Don't do anything if there's no DID
+ if (!did) {
+ return query
+ }
+
+ // We don't want to replace substrings that are being "quoted" because those
+ // are exact string matches, so what we'll do here is to split them apart
+
+ // Even-indexed strings are unquoted, odd-indexed strings are quoted
+ const splits = query.split(/("(?:[^"\\]|\\.)*")/g)
+
+ return splits
+ .map((str, idx) => {
+ if (idx % 2 === 0) {
+ return str.replaceAll(/(^|\s)from:me(\s|$)/g, `$1${did}$2`)
+ }
+
+ return str
+ })
+ .join('')
+}
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index 80b514e2..df64cc5a 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -52,6 +52,7 @@ import {isNative, isWeb} from '#/platform/detection'
import {listenSoftReset} from '#/state/events'
import {s} from '#/lib/styles'
import AsyncStorage from '@react-native-async-storage/async-storage'
+import {augmentSearchQuery} from '#/lib/strings/helpers'
function Loader() {
const pal = usePalette('default')
@@ -318,9 +319,13 @@ export function SearchScreenInner({
const pal = usePalette('default')
const setMinimalShellMode = useSetMinimalShellMode()
const setDrawerSwipeDisabled = useSetDrawerSwipeDisabled()
- const {hasSession} = useSession()
+ const {hasSession, currentAccount} = useSession()
const {isDesktop} = useWebMediaQueries()
+ const augmentedQuery = React.useMemo(() => {
+ return augmentSearchQuery(query || '', {did: currentAccount?.did})
+ }, [query, currentAccount])
+
const onPageSelected = React.useCallback(
(index: number) => {
setMinimalShellMode(false)
@@ -343,7 +348,7 @@ export function SearchScreenInner({
)}
initialPage={0}>
-
+