about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorSamuel Newman <mozzius@protonmail.com>2024-03-12 22:02:28 +0000
committerSamuel Newman <mozzius@protonmail.com>2024-03-12 22:02:28 +0000
commit1512b5cf68e9e92801a894392569b444fd6af1d1 (patch)
treef756f3a4405127839e6f31ee46945e0b2cfe954f /src/lib
parenta3c09f9f862a4b4abe43cbb6d1042369fb1e14ba (diff)
downloadvoidsky-1512b5cf68e9e92801a894392569b444fd6af1d1.tar.zst
run linter
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ThemeContext.tsx6
-rw-r--r--src/lib/__tests__/moderatePost_wrapped.test.ts2
-rw-r--r--src/lib/analytics/analytics.tsx9
-rw-r--r--src/lib/analytics/analytics.web.tsx7
-rw-r--r--src/lib/api/api-polyfill.ts2
-rw-r--r--src/lib/api/feed-manip.ts7
-rw-r--r--src/lib/api/feed/author.ts4
-rw-r--r--src/lib/api/feed/custom.ts6
-rw-r--r--src/lib/api/feed/following.ts4
-rw-r--r--src/lib/api/feed/home.ts8
-rw-r--r--src/lib/api/feed/likes.ts4
-rw-r--r--src/lib/api/feed/list.ts4
-rw-r--r--src/lib/api/feed/merge.ts14
-rw-r--r--src/lib/api/index.ts8
-rw-r--r--src/lib/app-info.ts2
-rw-r--r--src/lib/embeds.ts2
-rw-r--r--src/lib/hooks/useAccountSwitcher.ts8
-rw-r--r--src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts2
-rw-r--r--src/lib/hooks/useCustomPalette.ts4
-rw-r--r--src/lib/hooks/useDraggableScrollView.ts6
-rw-r--r--src/lib/hooks/useIntentHandler.ts4
-rw-r--r--src/lib/hooks/useIsKeyboardVisible.ts4
-rw-r--r--src/lib/hooks/useMinimalShellMode.tsx1
-rw-r--r--src/lib/hooks/useNavigationDeduped.ts6
-rw-r--r--src/lib/hooks/useOTAUpdate.ts3
-rw-r--r--src/lib/hooks/usePalette.ts3
-rw-r--r--src/lib/hooks/usePermissions.ts2
-rw-r--r--src/lib/hooks/useSetTitle.ts4
-rw-r--r--src/lib/hooks/useTabFocusEffect.ts2
-rw-r--r--src/lib/hooks/useToggleMutationQueue.ts2
-rw-r--r--src/lib/hooks/useWebBodyScrollLock.ts1
-rw-r--r--src/lib/hooks/useWebMediaQueries.tsx2
-rw-r--r--src/lib/hooks/useWebScrollRestoration.ts2
-rw-r--r--src/lib/icons.tsx2
-rw-r--r--src/lib/link-meta/bsky.ts10
-rw-r--r--src/lib/link-meta/link-meta.ts5
-rw-r--r--src/lib/media/image-sizes.ts2
-rw-r--r--src/lib/media/manip.ts11
-rw-r--r--src/lib/media/manip.web.ts5
-rw-r--r--src/lib/media/picker.e2e.tsx5
-rw-r--r--src/lib/media/picker.shared.ts3
-rw-r--r--src/lib/media/picker.tsx3
-rw-r--r--src/lib/media/picker.web.tsx3
-rw-r--r--src/lib/moderatePost_wrapped.ts8
-rw-r--r--src/lib/moderation.ts2
-rw-r--r--src/lib/notifications/notifications.ts10
-rw-r--r--src/lib/react-query.ts3
-rw-r--r--src/lib/routes/helpers.ts3
-rw-r--r--src/lib/routes/router.ts2
-rw-r--r--src/lib/sentry.ts2
-rw-r--r--src/lib/sharing.ts5
-rw-r--r--src/lib/statsig/statsig.tsx3
-rw-r--r--src/lib/statsig/statsig.web.tsx3
-rw-r--r--src/lib/strings/display-names.ts1
-rw-r--r--src/lib/strings/embed-player.ts2
-rw-r--r--src/lib/strings/rich-text-helpers.ts1
-rw-r--r--src/lib/strings/rich-text-manip.ts1
-rw-r--r--src/lib/strings/url-helpers.ts2
-rw-r--r--src/lib/styles.ts3
-rw-r--r--src/lib/themes.ts7
60 files changed, 149 insertions, 103 deletions
diff --git a/src/lib/ThemeContext.tsx b/src/lib/ThemeContext.tsx
index 63e2beeb1..a04252161 100644
--- a/src/lib/ThemeContext.tsx
+++ b/src/lib/ThemeContext.tsx
@@ -1,8 +1,10 @@
-import React, {ReactNode, createContext, useContext} from 'react'
+import React, {createContext, ReactNode, useContext} from 'react'
 import {TextStyle, ViewStyle} from 'react-native'
-import {darkTheme, defaultTheme, dimTheme} from './themes'
+
 import {ThemeName} from '#/alf/themes'
 
+import {darkTheme, defaultTheme, dimTheme} from './themes'
+
 export type ColorScheme = 'light' | 'dark'
 
 export type PaletteColorName =
diff --git a/src/lib/__tests__/moderatePost_wrapped.test.ts b/src/lib/__tests__/moderatePost_wrapped.test.ts
index 45566281a..d87610660 100644
--- a/src/lib/__tests__/moderatePost_wrapped.test.ts
+++ b/src/lib/__tests__/moderatePost_wrapped.test.ts
@@ -1,5 +1,5 @@
-import {describe, it, expect} from '@jest/globals'
 import {RichText} from '@atproto/api'
+import {describe, expect, it} from '@jest/globals'
 
 import {hasMutedWord} from '../moderatePost_wrapped'
 
diff --git a/src/lib/analytics/analytics.tsx b/src/lib/analytics/analytics.tsx
index a0cc7cd6e..c27a4fb70 100644
--- a/src/lib/analytics/analytics.tsx
+++ b/src/lib/analytics/analytics.tsx
@@ -1,13 +1,14 @@
-import React from 'react'
-import {AppState, AppStateStatus} from 'react-native'
 import AsyncStorage from '@react-native-async-storage/async-storage'
 import {createClient, SegmentClient} from '@segment/analytics-react-native'
 import {sha256} from 'js-sha256'
+import React from 'react'
+import {AppState, AppStateStatus} from 'react-native'
 import {Native} from 'sentry-expo'
 
-import {useSession, SessionAccount} from '#/state/session'
-import {ScreenPropertiesMap, TrackPropertiesMap} from './types'
 import {logger} from '#/logger'
+import {SessionAccount, useSession} from '#/state/session'
+
+import {ScreenPropertiesMap, TrackPropertiesMap} from './types'
 
 type AppInfo = {
   build?: string | undefined
diff --git a/src/lib/analytics/analytics.web.tsx b/src/lib/analytics/analytics.web.tsx
index 72b28f9c0..21975bc57 100644
--- a/src/lib/analytics/analytics.web.tsx
+++ b/src/lib/analytics/analytics.web.tsx
@@ -1,11 +1,12 @@
-import React from 'react'
 import {createClient} from '@segment/analytics-react'
 import {sha256} from 'js-sha256'
+import React from 'react'
 import {Browser} from 'sentry-expo'
 
-import {ScreenPropertiesMap, TrackPropertiesMap} from './types'
-import {useSession, SessionAccount} from '#/state/session'
 import {logger} from '#/logger'
+import {SessionAccount, useSession} from '#/state/session'
+
+import {ScreenPropertiesMap, TrackPropertiesMap} from './types'
 
 type SegmentClient = ReturnType<typeof createClient>
 
diff --git a/src/lib/api/api-polyfill.ts b/src/lib/api/api-polyfill.ts
index ea1d97598..a0245839a 100644
--- a/src/lib/api/api-polyfill.ts
+++ b/src/lib/api/api-polyfill.ts
@@ -1,4 +1,4 @@
-import {BskyAgent, stringifyLex, jsonToLex} from '@atproto/api'
+import {BskyAgent, jsonToLex, stringifyLex} from '@atproto/api'
 import RNFS from 'react-native-fs'
 
 const GET_TIMEOUT = 15e3 // 15s
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts
index 227062592..26eea80a1 100644
--- a/src/lib/api/feed-manip.ts
+++ b/src/lib/api/feed-manip.ts
@@ -1,11 +1,12 @@
 import {
+  AppBskyEmbedRecord,
+  AppBskyEmbedRecordWithMedia,
   AppBskyFeedDefs,
   AppBskyFeedPost,
-  AppBskyEmbedRecordWithMedia,
-  AppBskyEmbedRecord,
 } from '@atproto/api'
-import {ReasonFeedSource} from './feed/types'
+
 import {isPostInLanguage} from '../../locale/helpers'
+import {ReasonFeedSource} from './feed/types'
 type FeedViewPost = AppBskyFeedDefs.FeedViewPost
 
 export type FeedTunerFn = (
diff --git a/src/lib/api/feed/author.ts b/src/lib/api/feed/author.ts
index 57db061b3..60bb23603 100644
--- a/src/lib/api/feed/author.ts
+++ b/src/lib/api/feed/author.ts
@@ -2,9 +2,11 @@ import {
   AppBskyFeedDefs,
   AppBskyFeedGetAuthorFeed as GetAuthorFeed,
 } from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
+
 import {getAgent} from '#/state/session'
 
+import {FeedAPI, FeedAPIResponse} from './types'
+
 export class AuthorFeedAPI implements FeedAPI {
   constructor(public params: GetAuthorFeed.QueryParams) {}
 
diff --git a/src/lib/api/feed/custom.ts b/src/lib/api/feed/custom.ts
index 41c5367e5..cb7e7e66a 100644
--- a/src/lib/api/feed/custom.ts
+++ b/src/lib/api/feed/custom.ts
@@ -2,9 +2,11 @@ import {
   AppBskyFeedDefs,
   AppBskyFeedGetFeed as GetCustomFeed,
 } from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
-import {getAgent} from '#/state/session'
+
 import {getContentLanguages} from '#/state/preferences/languages'
+import {getAgent} from '#/state/session'
+
+import {FeedAPI, FeedAPIResponse} from './types'
 
 export class CustomFeedAPI implements FeedAPI {
   constructor(public params: GetCustomFeed.QueryParams) {}
diff --git a/src/lib/api/feed/following.ts b/src/lib/api/feed/following.ts
index 24389b5ed..95f0a7090 100644
--- a/src/lib/api/feed/following.ts
+++ b/src/lib/api/feed/following.ts
@@ -1,7 +1,9 @@
 import {AppBskyFeedDefs} from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
+
 import {getAgent} from '#/state/session'
 
+import {FeedAPI, FeedAPIResponse} from './types'
+
 export class FollowingFeedAPI implements FeedAPI {
   constructor() {}
 
diff --git a/src/lib/api/feed/home.ts b/src/lib/api/feed/home.ts
index 436a66d07..f12dab7b6 100644
--- a/src/lib/api/feed/home.ts
+++ b/src/lib/api/feed/home.ts
@@ -1,9 +1,11 @@
 import {AppBskyFeedDefs} from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
-import {FollowingFeedAPI} from './following'
-import {CustomFeedAPI} from './custom'
+
 import {PROD_DEFAULT_FEED} from '#/lib/constants'
 
+import {CustomFeedAPI} from './custom'
+import {FollowingFeedAPI} from './following'
+import {FeedAPI, FeedAPIResponse} from './types'
+
 // HACK
 // the feed API does not include any facilities for passing down
 // non-post elements. adding that is a bit of a heavy lift, and we
diff --git a/src/lib/api/feed/likes.ts b/src/lib/api/feed/likes.ts
index 2b0afdf11..95697e5d7 100644
--- a/src/lib/api/feed/likes.ts
+++ b/src/lib/api/feed/likes.ts
@@ -2,9 +2,11 @@ import {
   AppBskyFeedDefs,
   AppBskyFeedGetActorLikes as GetActorLikes,
 } from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
+
 import {getAgent} from '#/state/session'
 
+import {FeedAPI, FeedAPIResponse} from './types'
+
 export class LikesFeedAPI implements FeedAPI {
   constructor(public params: GetActorLikes.QueryParams) {}
 
diff --git a/src/lib/api/feed/list.ts b/src/lib/api/feed/list.ts
index 19f2ff177..1b0b259cf 100644
--- a/src/lib/api/feed/list.ts
+++ b/src/lib/api/feed/list.ts
@@ -2,9 +2,11 @@ import {
   AppBskyFeedDefs,
   AppBskyFeedGetListFeed as GetListFeed,
 } from '@atproto/api'
-import {FeedAPI, FeedAPIResponse} from './types'
+
 import {getAgent} from '#/state/session'
 
+import {FeedAPI, FeedAPIResponse} from './types'
+
 export class ListFeedAPI implements FeedAPI {
   constructor(public params: GetListFeed.QueryParams) {}
 
diff --git a/src/lib/api/feed/merge.ts b/src/lib/api/feed/merge.ts
index 28bf143cb..49210afed 100644
--- a/src/lib/api/feed/merge.ts
+++ b/src/lib/api/feed/merge.ts
@@ -1,14 +1,16 @@
 import {AppBskyFeedDefs, AppBskyFeedGetTimeline} from '@atproto/api'
-import shuffle from 'lodash.shuffle'
-import {timeout} from 'lib/async/timeout'
 import {bundleAsync} from 'lib/async/bundle'
+import {timeout} from 'lib/async/timeout'
 import {feedUriToHref} from 'lib/strings/url-helpers'
-import {FeedTuner} from '../feed-manip'
-import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
+import shuffle from 'lodash.shuffle'
+
+import {getContentLanguages} from '#/state/preferences/languages'
 import {FeedParams} from '#/state/queries/post-feed'
-import {FeedTunerFn} from '../feed-manip'
 import {getAgent} from '#/state/session'
-import {getContentLanguages} from '#/state/preferences/languages'
+
+import {FeedTuner} from '../feed-manip'
+import {FeedTunerFn} from '../feed-manip'
+import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
 
 const REQUEST_WAIT_MS = 500 // 500ms
 const POST_AGE_CUTOFF = 60e3 * 60 * 24 // 24hours
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts
index 5fb7fe50e..178554d73 100644
--- a/src/lib/api/index.ts
+++ b/src/lib/api/index.ts
@@ -1,6 +1,6 @@
 import {
-  AppBskyEmbedImages,
   AppBskyEmbedExternal,
+  AppBskyEmbedImages,
   AppBskyEmbedRecord,
   AppBskyEmbedRecordWithMedia,
   AppBskyFeedThreadgate,
@@ -12,13 +12,15 @@ import {
 } from '@atproto/api'
 import {AtUri} from '@atproto/api'
 import {isNetworkError} from 'lib/strings/errors'
-import {LinkMeta} from '../link-meta/link-meta'
+import {shortenLinks} from 'lib/strings/rich-text-manip'
 import {isWeb} from 'platform/detection'
 import {ImageModel} from 'state/models/media/image'
-import {shortenLinks} from 'lib/strings/rich-text-manip'
+
 import {logger} from '#/logger'
 import {ThreadgateSetting} from '#/state/queries/threadgate'
 
+import {LinkMeta} from '../link-meta/link-meta'
+
 export interface ExternalEmbedDraft {
   uri: string
   isLoading: boolean
diff --git a/src/lib/app-info.ts b/src/lib/app-info.ts
index 3f026d3fe..f6b4932c3 100644
--- a/src/lib/app-info.ts
+++ b/src/lib/app-info.ts
@@ -1,5 +1,5 @@
-import VersionNumber from 'react-native-version-number'
 import * as Updates from 'expo-updates'
+import VersionNumber from 'react-native-version-number'
 export const updateChannel = Updates.channel
 
 export const appVersion = `${VersionNumber.appVersion} (${VersionNumber.buildVersion})`
diff --git a/src/lib/embeds.ts b/src/lib/embeds.ts
index a758987b2..2904f1cc3 100644
--- a/src/lib/embeds.ts
+++ b/src/lib/embeds.ts
@@ -1,7 +1,7 @@
 import {
-  AppBskyFeedDefs,
   AppBskyEmbedRecord,
   AppBskyEmbedRecordWithMedia,
+  AppBskyFeedDefs,
 } from '@atproto/api'
 
 export function isEmbedByEmbedder(
diff --git a/src/lib/hooks/useAccountSwitcher.ts b/src/lib/hooks/useAccountSwitcher.ts
index 74b5674d5..478ce538a 100644
--- a/src/lib/hooks/useAccountSwitcher.ts
+++ b/src/lib/hooks/useAccountSwitcher.ts
@@ -1,11 +1,11 @@
 import {useCallback} from 'react'
 
-import {isWeb} from '#/platform/detection'
 import {useAnalytics} from '#/lib/analytics/analytics'
-import {useSessionApi, SessionAccount} from '#/state/session'
-import * as Toast from '#/view/com/util/Toast'
-import {useCloseAllActiveElements} from '#/state/util'
+import {isWeb} from '#/platform/detection'
+import {SessionAccount, useSessionApi} from '#/state/session'
 import {useLoggedOutViewControls} from '#/state/shell/logged-out'
+import {useCloseAllActiveElements} from '#/state/util'
+import * as Toast from '#/view/com/util/Toast'
 
 export function useAccountSwitcher() {
   const {track} = useAnalytics()
diff --git a/src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts b/src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts
index 98e05a8ce..7f8a99506 100644
--- a/src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts
+++ b/src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts
@@ -1,4 +1,4 @@
-import {useRef, useEffect} from 'react'
+import {useEffect, useRef} from 'react'
 import {useAnimatedScrollHandler as useAnimatedScrollHandler_BUGGY} from 'react-native-reanimated'
 
 export const useAnimatedScrollHandler: typeof useAnimatedScrollHandler_BUGGY = (
diff --git a/src/lib/hooks/useCustomPalette.ts b/src/lib/hooks/useCustomPalette.ts
index 4f8f5c836..a069c7ce8 100644
--- a/src/lib/hooks/useCustomPalette.ts
+++ b/src/lib/hooks/useCustomPalette.ts
@@ -1,6 +1,6 @@
-import React from 'react'
-import {useTheme} from 'lib/ThemeContext'
 import {choose} from 'lib/functions'
+import {useTheme} from 'lib/ThemeContext'
+import React from 'react'
 
 export function useCustomPalette<T>({light, dark}: {light: T; dark: T}) {
   const theme = useTheme()
diff --git a/src/lib/hooks/useDraggableScrollView.ts b/src/lib/hooks/useDraggableScrollView.ts
index b0f7465d7..ea48ac1dc 100644
--- a/src/lib/hooks/useDraggableScrollView.ts
+++ b/src/lib/hooks/useDraggableScrollView.ts
@@ -1,7 +1,7 @@
-import {useEffect, useRef, useMemo, ForwardedRef} from 'react'
-import {Platform, findNodeHandle} from 'react-native'
-import type {ScrollView} from 'react-native'
 import {mergeRefs} from 'lib/merge-refs'
+import {ForwardedRef, useEffect, useMemo, useRef} from 'react'
+import type {ScrollView} from 'react-native'
+import {findNodeHandle, Platform} from 'react-native'
 
 type Props<Scrollable extends ScrollView = ScrollView> = {
   cursor?: string
diff --git a/src/lib/hooks/useIntentHandler.ts b/src/lib/hooks/useIntentHandler.ts
index 8741530b5..34f645d7f 100644
--- a/src/lib/hooks/useIntentHandler.ts
+++ b/src/lib/hooks/useIntentHandler.ts
@@ -1,8 +1,8 @@
-import React from 'react'
 import * as Linking from 'expo-linking'
 import {isNative} from 'platform/detection'
-import {useComposerControls} from 'state/shell'
+import React from 'react'
 import {useSession} from 'state/session'
+import {useComposerControls} from 'state/shell'
 import {useCloseAllActiveElements} from 'state/util'
 
 type IntentType = 'compose'
diff --git a/src/lib/hooks/useIsKeyboardVisible.ts b/src/lib/hooks/useIsKeyboardVisible.ts
index 38fc80bde..391090f2d 100644
--- a/src/lib/hooks/useIsKeyboardVisible.ts
+++ b/src/lib/hooks/useIsKeyboardVisible.ts
@@ -1,6 +1,6 @@
-import {useState, useEffect} from 'react'
-import {Keyboard} from 'react-native'
 import {isIOS} from 'platform/detection'
+import {useEffect, useState} from 'react'
+import {Keyboard} from 'react-native'
 
 export function useIsKeyboardVisible({
   iosUseWillEvents,
diff --git a/src/lib/hooks/useMinimalShellMode.tsx b/src/lib/hooks/useMinimalShellMode.tsx
index e81fc434f..071d87683 100644
--- a/src/lib/hooks/useMinimalShellMode.tsx
+++ b/src/lib/hooks/useMinimalShellMode.tsx
@@ -1,4 +1,5 @@
 import {interpolate, useAnimatedStyle} from 'react-native-reanimated'
+
 import {useMinimalShellMode as useMinimalShellModeState} from '#/state/shell/minimal-mode'
 import {useShellLayout} from '#/state/shell/shell-layout'
 
diff --git a/src/lib/hooks/useNavigationDeduped.ts b/src/lib/hooks/useNavigationDeduped.ts
index d913f7f3d..99efad610 100644
--- a/src/lib/hooks/useNavigationDeduped.ts
+++ b/src/lib/hooks/useNavigationDeduped.ts
@@ -1,9 +1,9 @@
-import React from 'react'
 import {useNavigation} from '@react-navigation/core'
-import {AllNavigatorParams, NavigationProp} from 'lib/routes/types'
-import type {NavigationAction} from '@react-navigation/routers'
 import {NavigationState} from '@react-navigation/native'
+import type {NavigationAction} from '@react-navigation/routers'
 import {useDedupe} from 'lib/hooks/useDedupe'
+import {AllNavigatorParams, NavigationProp} from 'lib/routes/types'
+import React from 'react'
 
 export type DebouncedNavigationProp = Pick<
   NavigationProp,
diff --git a/src/lib/hooks/useOTAUpdate.ts b/src/lib/hooks/useOTAUpdate.ts
index 53eab300e..9bfc998a6 100644
--- a/src/lib/hooks/useOTAUpdate.ts
+++ b/src/lib/hooks/useOTAUpdate.ts
@@ -1,9 +1,10 @@
+import {t} from '@lingui/macro'
 import * as Updates from 'expo-updates'
 import {useCallback, useEffect} from 'react'
 import {AppState} from 'react-native'
+
 import {logger} from '#/logger'
 import {useModalControls} from '#/state/modals'
-import {t} from '@lingui/macro'
 
 export function useOTAUpdate() {
   const {openModal} = useModalControls()
diff --git a/src/lib/hooks/usePalette.ts b/src/lib/hooks/usePalette.ts
index eeb43d0b1..2530642f6 100644
--- a/src/lib/hooks/usePalette.ts
+++ b/src/lib/hooks/usePalette.ts
@@ -1,6 +1,7 @@
 import {useMemo} from 'react'
 import {TextStyle, ViewStyle} from 'react-native'
-import {useTheme, PaletteColorName, PaletteColor} from '../ThemeContext'
+
+import {PaletteColor, PaletteColorName, useTheme} from '../ThemeContext'
 
 export interface UsePaletteValue {
   colors: PaletteColor
diff --git a/src/lib/hooks/usePermissions.ts b/src/lib/hooks/usePermissions.ts
index 138f3eaca..28693ea71 100644
--- a/src/lib/hooks/usePermissions.ts
+++ b/src/lib/hooks/usePermissions.ts
@@ -1,7 +1,7 @@
 import {Camera} from 'expo-camera'
 import * as MediaLibrary from 'expo-media-library'
-import {Linking} from 'react-native'
 import {isWeb} from 'platform/detection'
+import {Linking} from 'react-native'
 import {Alert} from 'view/com/util/Alert'
 
 const openPermissionAlert = (perm: string) => {
diff --git a/src/lib/hooks/useSetTitle.ts b/src/lib/hooks/useSetTitle.ts
index 129023f71..d88830a89 100644
--- a/src/lib/hooks/useSetTitle.ts
+++ b/src/lib/hooks/useSetTitle.ts
@@ -1,8 +1,8 @@
-import {useEffect} from 'react'
 import {useNavigation} from '@react-navigation/native'
-
 import {NavigationProp} from 'lib/routes/types'
 import {bskyTitle} from 'lib/strings/headings'
+import {useEffect} from 'react'
+
 import {useUnreadNotifications} from '#/state/queries/notifications/unread'
 
 export function useSetTitle(title?: string) {
diff --git a/src/lib/hooks/useTabFocusEffect.ts b/src/lib/hooks/useTabFocusEffect.ts
index e446084c5..5f5335045 100644
--- a/src/lib/hooks/useTabFocusEffect.ts
+++ b/src/lib/hooks/useTabFocusEffect.ts
@@ -1,6 +1,6 @@
-import {useEffect, useState} from 'react'
 import {useNavigation} from '@react-navigation/native'
 import {getTabState, TabState} from 'lib/routes/helpers'
+import {useEffect, useState} from 'react'
 
 export function useTabFocusEffect(
   tabName: string,
diff --git a/src/lib/hooks/useToggleMutationQueue.ts b/src/lib/hooks/useToggleMutationQueue.ts
index 28ae86142..c4b86d325 100644
--- a/src/lib/hooks/useToggleMutationQueue.ts
+++ b/src/lib/hooks/useToggleMutationQueue.ts
@@ -1,4 +1,4 @@
-import {useState, useRef, useEffect, useCallback} from 'react'
+import {useCallback, useEffect, useRef, useState} from 'react'
 
 type Task<TServerState> = {
   isOn: boolean
diff --git a/src/lib/hooks/useWebBodyScrollLock.ts b/src/lib/hooks/useWebBodyScrollLock.ts
index 585f193f1..790ddce63 100644
--- a/src/lib/hooks/useWebBodyScrollLock.ts
+++ b/src/lib/hooks/useWebBodyScrollLock.ts
@@ -1,4 +1,5 @@
 import {useEffect} from 'react'
+
 import {isWeb} from '#/platform/detection'
 
 let refCount = 0
diff --git a/src/lib/hooks/useWebMediaQueries.tsx b/src/lib/hooks/useWebMediaQueries.tsx
index 71a96a89b..45b7b6c58 100644
--- a/src/lib/hooks/useWebMediaQueries.tsx
+++ b/src/lib/hooks/useWebMediaQueries.tsx
@@ -1,5 +1,5 @@
-import {useMediaQuery} from 'react-responsive'
 import {isNative} from 'platform/detection'
+import {useMediaQuery} from 'react-responsive'
 
 export function useWebMediaQueries() {
   const isDesktop = useMediaQuery({minWidth: 1300})
diff --git a/src/lib/hooks/useWebScrollRestoration.ts b/src/lib/hooks/useWebScrollRestoration.ts
index f68fbf0f2..5a4402494 100644
--- a/src/lib/hooks/useWebScrollRestoration.ts
+++ b/src/lib/hooks/useWebScrollRestoration.ts
@@ -1,5 +1,5 @@
-import {useMemo, useState, useEffect} from 'react'
 import {EventArg, useNavigation} from '@react-navigation/core'
+import {useEffect, useMemo, useState} from 'react'
 
 if ('scrollRestoration' in history) {
   // Tell the brower not to mess with the scroll.
diff --git a/src/lib/icons.tsx b/src/lib/icons.tsx
index 7ae88806f..eb8214019 100644
--- a/src/lib/icons.tsx
+++ b/src/lib/icons.tsx
@@ -1,6 +1,6 @@
 import React from 'react'
 import {StyleProp, TextStyle, ViewStyle} from 'react-native'
-import Svg, {Path, Rect, Line, Ellipse} from 'react-native-svg'
+import Svg, {Ellipse, Line, Path, Rect} from 'react-native-svg'
 
 export function GridIcon({
   style,
diff --git a/src/lib/link-meta/bsky.ts b/src/lib/link-meta/bsky.ts
index c1fbb34b3..1c8b28d9b 100644
--- a/src/lib/link-meta/bsky.ts
+++ b/src/lib/link-meta/bsky.ts
@@ -1,11 +1,13 @@
 import {AppBskyFeedPost, BskyAgent} from '@atproto/api'
 import * as apilib from 'lib/api/index'
-import {LikelyType, LinkMeta} from './link-meta'
-// import {match as matchRoute} from 'view/routes'
-import {convertBskyAppUrlIfNeeded, makeRecordUri} from '../strings/url-helpers'
 import {ComposerOptsQuote} from 'state/shell/composer'
-import {useGetPost} from '#/state/queries/post'
+
 import {useFetchDid} from '#/state/queries/handle'
+import {useGetPost} from '#/state/queries/post'
+
+// import {match as matchRoute} from 'view/routes'
+import {convertBskyAppUrlIfNeeded, makeRecordUri} from '../strings/url-helpers'
+import {LikelyType, LinkMeta} from './link-meta'
 
 // TODO
 // import {Home} from 'view/screens/Home'
diff --git a/src/lib/link-meta/link-meta.ts b/src/lib/link-meta/link-meta.ts
index fa951432e..0f5230479 100644
--- a/src/lib/link-meta/link-meta.ts
+++ b/src/lib/link-meta/link-meta.ts
@@ -1,9 +1,10 @@
 import {BskyAgent} from '@atproto/api'
-import {isBskyAppUrl} from '../strings/url-helpers'
-import {extractBskyMeta} from './bsky'
 import {LINK_META_PROXY} from 'lib/constants'
 import {getGiphyMetaUri} from 'lib/strings/embed-player'
 
+import {isBskyAppUrl} from '../strings/url-helpers'
+import {extractBskyMeta} from './bsky'
+
 export enum LikelyType {
   HTML,
   Text,
diff --git a/src/lib/media/image-sizes.ts b/src/lib/media/image-sizes.ts
index 4ea95ea23..cab032313 100644
--- a/src/lib/media/image-sizes.ts
+++ b/src/lib/media/image-sizes.ts
@@ -1,5 +1,5 @@
-import {Image} from 'react-native'
 import type {Dimensions} from 'lib/media/types'
+import {Image} from 'react-native'
 
 const sizes: Map<string, Dimensions> = new Map()
 const activeRequests: Map<string, Promise<Dimensions>> = new Map()
diff --git a/src/lib/media/manip.ts b/src/lib/media/manip.ts
index a681627e6..20cca745b 100644
--- a/src/lib/media/manip.ts
+++ b/src/lib/media/manip.ts
@@ -1,13 +1,14 @@
-import RNFetchBlob from 'rn-fetch-blob'
 import ImageResizer from '@bam.tech/react-native-image-resizer'
+import * as MediaLibrary from 'expo-media-library'
+import * as Sharing from 'expo-sharing'
+import {isAndroid, isIOS} from 'platform/detection'
 import {Image as RNImage, Share as RNShare} from 'react-native'
-import {Image} from 'react-native-image-crop-picker'
 import * as RNFS from 'react-native-fs'
+import {Image} from 'react-native-image-crop-picker'
 import uuid from 'react-native-uuid'
-import * as Sharing from 'expo-sharing'
-import * as MediaLibrary from 'expo-media-library'
+import RNFetchBlob from 'rn-fetch-blob'
+
 import {Dimensions} from './types'
-import {isAndroid, isIOS} from 'platform/detection'
 
 export async function compressIfNeeded(
   img: Image,
diff --git a/src/lib/media/manip.web.ts b/src/lib/media/manip.web.ts
index 522aa2e51..8b63f9e5f 100644
--- a/src/lib/media/manip.web.ts
+++ b/src/lib/media/manip.web.ts
@@ -1,6 +1,7 @@
-import {Dimensions} from './types'
 import {Image as RNImage} from 'react-native-image-crop-picker'
-import {getDataUriSize, blobToDataUri} from './util'
+
+import {Dimensions} from './types'
+import {blobToDataUri, getDataUriSize} from './util'
 
 export async function compressIfNeeded(
   img: RNImage,
diff --git a/src/lib/media/picker.e2e.tsx b/src/lib/media/picker.e2e.tsx
index d7b608041..08ee91b74 100644
--- a/src/lib/media/picker.e2e.tsx
+++ b/src/lib/media/picker.e2e.tsx
@@ -1,7 +1,8 @@
-import {Image as RNImage} from 'react-native-image-crop-picker'
 import RNFS from 'react-native-fs'
-import {CropperOptions} from './types'
+import {Image as RNImage} from 'react-native-image-crop-picker'
+
 import {compressIfNeeded} from './manip'
+import {CropperOptions} from './types'
 
 let _imageCounter = 0
 async function getFile() {
diff --git a/src/lib/media/picker.shared.ts b/src/lib/media/picker.shared.ts
index 8bade34e2..d00c2b8a6 100644
--- a/src/lib/media/picker.shared.ts
+++ b/src/lib/media/picker.shared.ts
@@ -3,9 +3,10 @@ import {
   launchImageLibraryAsync,
   MediaTypeOptions,
 } from 'expo-image-picker'
-import {getDataUriSize} from './util'
 import * as Toast from 'view/com/util/Toast'
 
+import {getDataUriSize} from './util'
+
 export async function openPicker(opts?: ImagePickerOptions) {
   const response = await launchImageLibraryAsync({
     exif: false,
diff --git a/src/lib/media/picker.tsx b/src/lib/media/picker.tsx
index bf531c981..37e01e67f 100644
--- a/src/lib/media/picker.tsx
+++ b/src/lib/media/picker.tsx
@@ -1,8 +1,9 @@
 import {
+  Image as RNImage,
   openCamera as openCameraFn,
   openCropper as openCropperFn,
-  Image as RNImage,
 } from 'react-native-image-crop-picker'
+
 import {CameraOpts, CropperOptions} from './types'
 export {openPicker} from './picker.shared'
 
diff --git a/src/lib/media/picker.web.tsx b/src/lib/media/picker.web.tsx
index 995a0c95f..7e2562e29 100644
--- a/src/lib/media/picker.web.tsx
+++ b/src/lib/media/picker.web.tsx
@@ -1,7 +1,8 @@
 /// <reference lib="dom" />
 
-import {CameraOpts, CropperOptions} from './types'
 import {Image as RNImage} from 'react-native-image-crop-picker'
+
+import {CameraOpts, CropperOptions} from './types'
 export {openPicker} from './picker.shared'
 import {unstable__openModal} from '#/state/modals'
 
diff --git a/src/lib/moderatePost_wrapped.ts b/src/lib/moderatePost_wrapped.ts
index 9f6fa9c07..566e46a05 100644
--- a/src/lib/moderatePost_wrapped.ts
+++ b/src/lib/moderatePost_wrapped.ts
@@ -1,12 +1,12 @@
 import {
+  AppBskyActorDefs,
+  AppBskyEmbedExternal,
+  AppBskyEmbedImages,
   AppBskyEmbedRecord,
   AppBskyEmbedRecordWithMedia,
-  moderatePost,
-  AppBskyActorDefs,
   AppBskyFeedPost,
   AppBskyRichtextFacet,
-  AppBskyEmbedImages,
-  AppBskyEmbedExternal,
+  moderatePost,
 } from '@atproto/api'
 
 type ModeratePost = typeof moderatePost
diff --git a/src/lib/moderation.ts b/src/lib/moderation.ts
index b6ebb47a0..3f8a03219 100644
--- a/src/lib/moderation.ts
+++ b/src/lib/moderation.ts
@@ -1,4 +1,4 @@
-import {ModerationCause, ProfileModeration, PostModeration} from '@atproto/api'
+import {ModerationCause, PostModeration, ProfileModeration} from '@atproto/api'
 
 export interface ModerationCauseDescription {
   name: string
diff --git a/src/lib/notifications/notifications.ts b/src/lib/notifications/notifications.ts
index 62d0bfc4b..146bd9853 100644
--- a/src/lib/notifications/notifications.ts
+++ b/src/lib/notifications/notifications.ts
@@ -1,12 +1,14 @@
-import * as Notifications from 'expo-notifications'
 import {QueryClient} from '@tanstack/react-query'
-import {resetToTab} from '../../Navigation'
-import {devicePlatform, isIOS} from 'platform/detection'
+import * as Notifications from 'expo-notifications'
 import {track} from 'lib/analytics/analytics'
+import {devicePlatform, isIOS} from 'platform/detection'
+
 import {logger} from '#/logger'
 import {RQKEY as RQKEY_NOTIFS} from '#/state/queries/notifications/feed'
 import {truncateAndInvalidate} from '#/state/queries/util'
-import {SessionAccount, getAgent} from '#/state/session'
+import {getAgent, SessionAccount} from '#/state/session'
+
+import {resetToTab} from '../../Navigation'
 
 const SERVICE_DID = (serviceUrl?: string) =>
   serviceUrl?.includes('staging')
diff --git a/src/lib/react-query.ts b/src/lib/react-query.ts
index 7fe3fe7a4..94a09c941 100644
--- a/src/lib/react-query.ts
+++ b/src/lib/react-query.ts
@@ -1,5 +1,6 @@
+import {focusManager, QueryClient} from '@tanstack/react-query'
 import {AppState, AppStateStatus} from 'react-native'
-import {QueryClient, focusManager} from '@tanstack/react-query'
+
 import {isNative} from '#/platform/detection'
 
 focusManager.setEventListener(onFocus => {
diff --git a/src/lib/routes/helpers.ts b/src/lib/routes/helpers.ts
index 0da885043..03302da1a 100644
--- a/src/lib/routes/helpers.ts
+++ b/src/lib/routes/helpers.ts
@@ -1,5 +1,6 @@
 import {NavigationProp} from '@react-navigation/native'
-import {State, RouteParams} from './types'
+
+import {RouteParams, State} from './types'
 
 export function getRootNavigation<T extends {}>(
   nav: NavigationProp<T>,
diff --git a/src/lib/routes/router.ts b/src/lib/routes/router.ts
index 8c8be3739..45f9c85fd 100644
--- a/src/lib/routes/router.ts
+++ b/src/lib/routes/router.ts
@@ -1,4 +1,4 @@
-import {RouteParams, Route} from './types'
+import {Route, RouteParams} from './types'
 
 export class Router {
   routes: [string, Route][] = []
diff --git a/src/lib/sentry.ts b/src/lib/sentry.ts
index d0a5fe0fd..1120c389f 100644
--- a/src/lib/sentry.ts
+++ b/src/lib/sentry.ts
@@ -3,9 +3,9 @@
  * avoid future conflicts and/or circular deps
  */
 
+import * as info from 'expo-updates'
 import {Platform} from 'react-native'
 import app from 'react-native-version-number'
-import * as info from 'expo-updates'
 import {init} from 'sentry-expo'
 
 /**
diff --git a/src/lib/sharing.ts b/src/lib/sharing.ts
index 9f402f873..6c45e46cf 100644
--- a/src/lib/sharing.ts
+++ b/src/lib/sharing.ts
@@ -1,9 +1,10 @@
-import {isIOS, isAndroid} from 'platform/detection'
 // import * as Sharing from 'expo-sharing'
 import Clipboard from '@react-native-clipboard/clipboard'
-import * as Toast from '../view/com/util/Toast'
+import {isAndroid, isIOS} from 'platform/detection'
 import {Share} from 'react-native'
 
+import * as Toast from '../view/com/util/Toast'
+
 /**
  * This function shares a URL using the native Share API if available, or copies it to the clipboard
  * and displays a toast message if not (mostly on web)
diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx
index 6d9ebeb09..c9e497af0 100644
--- a/src/lib/statsig/statsig.tsx
+++ b/src/lib/statsig/statsig.tsx
@@ -1,11 +1,12 @@
+import {sha256} from 'js-sha256'
 import React from 'react'
 import {
   Statsig,
   StatsigProvider,
   useGate as useStatsigGate,
 } from 'statsig-react-native-expo'
+
 import {useSession} from '../../state/session'
-import {sha256} from 'js-sha256'
 
 const statsigOptions = {
   environment: {
diff --git a/src/lib/statsig/statsig.web.tsx b/src/lib/statsig/statsig.web.tsx
index d1c912019..c9cc56b6d 100644
--- a/src/lib/statsig/statsig.web.tsx
+++ b/src/lib/statsig/statsig.web.tsx
@@ -1,11 +1,12 @@
+import {sha256} from 'js-sha256'
 import React from 'react'
 import {
   Statsig,
   StatsigProvider,
   useGate as useStatsigGate,
 } from 'statsig-react'
+
 import {useSession} from '../../state/session'
-import {sha256} from 'js-sha256'
 
 const statsigOptions = {
   environment: {
diff --git a/src/lib/strings/display-names.ts b/src/lib/strings/display-names.ts
index 75383dd4f..e5eb4cfe5 100644
--- a/src/lib/strings/display-names.ts
+++ b/src/lib/strings/display-names.ts
@@ -1,4 +1,5 @@
 import {ModerationUI} from '@atproto/api'
+
 import {describeModerationCause} from '../moderation'
 
 // \u2705 = ✅
diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts
index 1cf3b1293..2ef6efdf1 100644
--- a/src/lib/strings/embed-player.ts
+++ b/src/lib/strings/embed-player.ts
@@ -1,5 +1,5 @@
-import {Dimensions} from 'react-native'
 import {isWeb} from 'platform/detection'
+import {Dimensions} from 'react-native'
 const {height: SCREEN_HEIGHT} = Dimensions.get('window')
 
 export const embedPlayerSources = [
diff --git a/src/lib/strings/rich-text-helpers.ts b/src/lib/strings/rich-text-helpers.ts
index 662004599..54f0733d0 100644
--- a/src/lib/strings/rich-text-helpers.ts
+++ b/src/lib/strings/rich-text-helpers.ts
@@ -1,4 +1,5 @@
 import {AppBskyRichtextFacet, RichText} from '@atproto/api'
+
 import {linkRequiresWarning} from './url-helpers'
 
 export function richTextToString(rt: RichText, loose: boolean): string {
diff --git a/src/lib/strings/rich-text-manip.ts b/src/lib/strings/rich-text-manip.ts
index d9cd8c071..508e0772e 100644
--- a/src/lib/strings/rich-text-manip.ts
+++ b/src/lib/strings/rich-text-manip.ts
@@ -1,4 +1,5 @@
 import {RichText, UnicodeString} from '@atproto/api'
+
 import {toShortUrl} from './url-helpers'
 
 export function shortenLinks(rt: RichText): RichText {
diff --git a/src/lib/strings/url-helpers.ts b/src/lib/strings/url-helpers.ts
index 820311e4e..60d5f3cbb 100644
--- a/src/lib/strings/url-helpers.ts
+++ b/src/lib/strings/url-helpers.ts
@@ -1,7 +1,7 @@
 import {AtUri} from '@atproto/api'
 import {BSKY_SERVICE} from 'lib/constants'
-import TLDs from 'tlds'
 import psl from 'psl'
+import TLDs from 'tlds'
 
 export const BSKY_APP_HOST = 'https://bsky.app'
 
diff --git a/src/lib/styles.ts b/src/lib/styles.ts
index 263127440..50755f53d 100644
--- a/src/lib/styles.ts
+++ b/src/lib/styles.ts
@@ -1,6 +1,7 @@
+import {isWeb} from 'platform/detection'
 import {Dimensions, StyleProp, StyleSheet, TextStyle} from 'react-native'
+
 import {Theme, TypographyVariant} from './ThemeContext'
-import {isWeb} from 'platform/detection'
 
 // 1 is lightest, 2 is light, 3 is mid, 4 is dark, 5 is darkest
 export const colors = {
diff --git a/src/lib/themes.ts b/src/lib/themes.ts
index bd75aabea..4fb118400 100644
--- a/src/lib/themes.ts
+++ b/src/lib/themes.ts
@@ -1,8 +1,9 @@
 import {Platform} from 'react-native'
-import type {Theme} from './ThemeContext'
-import {colors} from './styles'
 
-import {darkPalette, lightPalette, dimPalette} from '#/alf/themes'
+import {darkPalette, dimPalette, lightPalette} from '#/alf/themes'
+
+import {colors} from './styles'
+import type {Theme} from './ThemeContext'
 
 export const defaultTheme: Theme = {
   colorScheme: 'light',