From 8da13e751157434666f9d8e0b6606c6f1b26d7a6 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Tue, 4 Aug 2026 05:05:53 +0300 Subject: [PATCH] drop the casts the dual-world layer needed With every producer on the generated lexicons, the branded-string assertions at these 30 sites are no-ops, and oxlint flags them. Also sorts the imports the type flip disturbed and prunes the suppressions that no longer occur. Co-Authored-By: Claude Fable 5 --- oxlint-suppressions.json | 2 +- src/ageAssurance/data.tsx | 6 ++---- src/ageAssurance/debug.ts | 2 +- src/ageAssurance/state.ts | 2 +- src/ageAssurance/util.ts | 6 +++--- src/components/AccountList.tsx | 2 +- src/components/AvatarBubbles.tsx | 2 +- src/components/AvatarStack.tsx | 2 +- src/components/BotBadge.tsx | 2 +- src/components/FeedCard.tsx | 4 ++-- src/components/FeedInterstitials.tsx | 2 +- src/components/KnownFollowers.tsx | 2 +- src/components/LikedByList.tsx | 2 +- src/components/ListCard.tsx | 4 ++-- src/components/MediaPreview.tsx | 2 +- src/components/NewskieDialog.tsx | 2 +- src/components/Post/Embed/ChatInviteEmbed.tsx | 2 +- .../Post/Embed/ExternalEmbed/ExternalGif.tsx | 2 +- .../Post/Embed/ExternalEmbed/ExternalPlayer.tsx | 2 +- src/components/Post/Embed/ExternalEmbed/index.tsx | 2 +- src/components/Post/Embed/FeedEmbed.tsx | 2 +- src/components/Post/Embed/ImageEmbed.tsx | 4 ++-- src/components/Post/Embed/ListEmbed.tsx | 2 +- .../Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx | 2 +- .../StandardSiteEmbed/StandardSiteThemeProvider.tsx | 2 +- .../Post/Embed/StandardSiteEmbed/index.tsx | 2 +- .../Post/Embed/StandardSiteEmbed/publishers.ts | 2 +- .../Post/Embed/StandardSiteEmbed/types.ts | 2 +- .../Post/Embed/StandardSiteEmbed/utils.test.ts | 2 +- .../Post/Embed/StandardSiteEmbed/utils.ts | 1 + .../VideoEmbedInner/VideoEmbedInnerNative.tsx | 2 +- .../VideoEmbedInner/VideoEmbedInnerWeb.shared.ts | 2 +- src/components/Post/Embed/VideoEmbed/index.tsx | 2 +- src/components/Post/Embed/VideoEmbed/index.web.tsx | 2 +- src/components/Post/Embed/index.tsx | 8 ++++---- src/components/Post/Embed/types.ts | 1 + src/components/Post/Translated/index.tsx | 2 +- src/components/PostControls/BookmarkButton.tsx | 2 +- .../PostControls/PostMenu/PostMenuItems.tsx | 4 ++-- src/components/PostControls/PostMenu/index.tsx | 2 +- .../PostControls/ShareMenu/RecentChats.tsx | 2 +- .../PostControls/ShareMenu/ShareMenuItems.tsx | 2 +- .../PostControls/ShareMenu/ShareMenuItems.types.tsx | 2 +- .../PostControls/ShareMenu/ShareMenuItems.web.tsx | 2 +- src/components/PostControls/ShareMenu/index.tsx | 4 ++-- src/components/PostControls/index.tsx | 2 +- src/components/ProfileHoverCard/index.web.tsx | 2 +- src/components/StarterPack/Main/FeedsList.tsx | 2 +- src/components/StarterPack/Main/ProfilesList.tsx | 4 ++-- src/components/StarterPack/ProfileStarterPacks.tsx | 2 +- src/components/StarterPack/QrCode.tsx | 2 +- src/components/StarterPack/QrCodeDialog.tsx | 2 +- src/components/StarterPack/ShareDialog.tsx | 2 +- src/components/StarterPack/StarterPackCard.tsx | 4 ++-- .../StarterPack/Wizard/WizardEditListDialog.tsx | 2 +- .../StarterPack/Wizard/WizardListCard.tsx | 2 +- src/components/TrendingTopics.tsx | 4 ++-- src/components/VideoPostCard.tsx | 2 +- src/components/WhoCanReply.tsx | 4 ++-- .../SubscribeProfileDialog.tsx | 6 ++---- src/components/contacts/contacts.ts | 2 +- src/components/dialogs/Embed.tsx | 4 ++-- .../dialogs/PostInteractionSettingsDialog.tsx | 2 +- src/components/dialogs/StarterPackDialog.tsx | 2 +- .../dialogs/lists/CreateOrEditListDialog.tsx | 2 +- .../dialogs/lists/ListAddRemoveUsersDialog.tsx | 2 +- src/components/dialogs/nuxs/index.tsx | 2 +- src/components/dialogs/nuxs/utils.ts | 2 +- src/components/dms/ActionsWrapper.tsx | 2 +- src/components/dms/ActionsWrapper.web.tsx | 2 +- .../dms/AfterReportConversationDialog.tsx | 2 +- src/components/dms/AfterReportDialog.tsx | 2 +- src/components/dms/ChatInvite/Card.tsx | 4 ++-- src/components/dms/ChatInvite/Root.tsx | 4 ++-- src/components/dms/EmojiReactionPicker.tsx | 2 +- src/components/dms/EmojiReactionPicker.web.tsx | 2 +- src/components/dms/MessageContextMenu.tsx | 2 +- src/components/dms/MessageItem.tsx | 6 +++--- src/components/dms/MessageItemEmbed.tsx | 4 ++-- src/components/dms/MessageItemInviteEmbed.tsx | 4 ++-- src/components/dms/MessageOverlays.tsx | 2 +- src/components/dms/MessageProfileButton.tsx | 2 +- src/components/dms/MessageReplies.tsx | 3 ++- src/components/dms/ReactionsDialog.tsx | 2 +- src/components/dms/SystemMessageGroup.tsx | 2 +- src/components/dms/SystemMessageItem.tsx | 2 +- src/components/dms/getMessageInfo.ts | 2 +- src/components/dms/getReactionInfo.ts | 2 +- src/components/dms/getSystemMessageInfo.ts | 4 ++-- src/components/dms/replyPreview.ts | 4 ++-- src/components/dms/util.ts | 4 ++-- src/components/feeds/PostFeedVideoGridRow.tsx | 4 ++-- src/components/images/AutoSizedImage.tsx | 2 +- src/components/images/Gallery/index.tsx | 2 +- .../images/Gallery/maybeApplyGalleryOffsetStyles.ts | 2 +- src/components/images/ImageLayoutGrid.tsx | 2 +- src/components/images/ImageLayoutGridItem.tsx | 2 +- src/components/intents/GroupChatJoinDialog.tsx | 2 +- src/components/interstitials/FeedTrendingTopics.tsx | 2 +- src/components/interstitials/TrendingVideos.tsx | 6 +++--- src/components/moderation/AppealForm.tsx | 2 +- src/components/moderation/LabelsOnMe.tsx | 2 +- src/components/moderation/LabelsOnMeDialog.tsx | 2 +- src/components/moderation/PostAlerts.tsx | 2 +- src/components/moderation/PostHider.tsx | 2 +- src/components/moderation/ReportDialog/types.ts | 3 ++- .../ReportDialog/utils/useReportOptions.ts | 1 + .../verification/VerificationRemovePrompt.tsx | 2 +- src/components/verification/VerificationsDialog.tsx | 2 +- src/env/common.ts | 1 + src/features/liveNow/components/EditLiveDialog.tsx | 2 +- .../liveNow/components/GoLiveDisabledDialog.tsx | 5 ++--- .../liveNow/components/LiveStatusDialog.tsx | 2 +- src/features/liveNow/utils.ts | 3 ++- src/lib/api/feed/author.ts | 2 +- src/lib/api/feed/demo.ts | 2 +- src/lib/api/feed/home.ts | 2 +- src/lib/api/feed/types.ts | 2 +- src/lib/api/feed/utils.ts | 1 + src/lib/api/index.ts | 8 +++----- src/lib/constants.ts | 2 +- src/lib/hooks/useNotificationHandler.ts | 2 +- src/lib/hooks/usePostViewTracking.ts | 2 +- src/lib/link-meta/link-meta.ts | 2 +- src/lib/moderation.ts | 2 +- src/lib/moderation/useLabelInfo.ts | 2 +- src/lib/routes/links.ts | 3 ++- src/lib/strings/starter-pack.ts | 1 + src/lib/strings/url-helpers.ts | 2 +- src/locale/helpers.ts | 4 ++-- src/screens/Bookmarks.tsx | 6 +++--- .../CustomFeed/components/CustomFeedHeader.tsx | 2 +- src/screens/CustomFeed/index.tsx | 2 +- src/screens/Hashtag.tsx | 2 +- src/screens/List/ListHiddenScreen.tsx | 2 +- src/screens/Login/LoginForm.tsx | 2 +- src/screens/Messages/ChatList.tsx | 2 +- src/screens/Messages/Conversation.tsx | 4 ++-- src/screens/Messages/Inbox.tsx | 4 ++-- src/screens/Messages/JoinRequest.tsx | 4 ++-- src/screens/Messages/components/ChatListItem.tsx | 2 +- .../Messages/components/IncomingRequestListItem.tsx | 2 +- .../Messages/components/InviteLinkDialog.tsx | 2 +- src/screens/Messages/components/MessageComposer.tsx | 4 ++-- .../Messages/components/MessageInputEmbed.tsx | 4 ++-- .../Messages/components/MessageInputReply.tsx | 2 +- src/screens/Messages/components/MessagesList.tsx | 6 +++--- src/screens/Messages/components/RequestButtons.tsx | 2 +- .../StepSuggestedStarterpacks/StarterPackCard.tsx | 5 ++--- src/screens/PostThread/components/LikesStat.tsx | 4 ++-- .../PostThread/components/ThreadItemAnchor.tsx | 4 ++-- .../components/ThreadItemAnchorFollowButton.tsx | 2 +- .../PostThread/components/ThreadItemPost.tsx | 4 ++-- .../PostThread/components/ThreadItemTreePost.tsx | 4 ++-- src/screens/Profile/Header/DisplayName.tsx | 2 +- src/screens/Profile/Header/EditProfileDialog.tsx | 2 +- src/screens/Profile/Header/Handle.tsx | 2 +- src/screens/Profile/Header/Metrics.tsx | 2 +- src/screens/Profile/Header/ProfileHeaderLabeler.tsx | 2 +- .../Profile/Header/ProfileHeaderStandard.tsx | 2 +- src/screens/Profile/Header/Shell.tsx | 2 +- src/screens/Profile/Header/index.tsx | 2 +- src/screens/Profile/KnownFollowers.tsx | 2 +- src/screens/ProfileList/AboutSection.tsx | 2 +- src/screens/ProfileList/components/Header.tsx | 2 +- .../ProfileList/components/MoreOptionsMenu.tsx | 4 ++-- .../ProfileList/components/SubscribeMenu.tsx | 2 +- src/screens/ProfileList/index.tsx | 4 ++-- src/screens/SavedFeeds.tsx | 2 +- src/screens/Search/Explore.tsx | 2 +- src/screens/Search/SearchResults.tsx | 2 +- src/screens/Search/components/ModuleHeader.tsx | 4 ++-- src/screens/Search/components/StarterPackCard.tsx | 2 +- .../Search/modules/ExploreSuggestedAccounts.tsx | 2 +- .../Search/modules/ExploreTrendingTopics.tsx | 4 ++-- .../Search/modules/ExploreTrendingVideos.tsx | 6 +++--- src/screens/Settings/ActivityPrivacySettings.tsx | 2 +- src/screens/Settings/AutomationLabelSettings.tsx | 4 ++-- src/screens/Settings/PrivacyAndSecuritySettings.tsx | 2 +- src/screens/Settings/Settings.tsx | 2 +- .../Settings/components/ChangeHandleDialog.tsx | 2 +- src/screens/Settings/components/PwiOptOut.tsx | 4 ++-- .../Signup/StepHandle/HandleSuggestions/index.tsx | 2 +- .../Signup/StepHandle/HandleSuggestions/shared.ts | 1 + src/screens/Signup/StepInfo/Policies.tsx | 2 +- src/screens/Signup/index.tsx | 2 +- .../StarterPack/StarterPackLandingScreen.tsx | 4 ++-- src/screens/StarterPack/StarterPackScreen.tsx | 6 +++--- src/screens/StarterPack/Wizard/State.tsx | 2 +- src/screens/StarterPack/Wizard/StepFeeds.tsx | 2 +- src/screens/StarterPack/Wizard/index.tsx | 4 ++-- src/screens/Topic.tsx | 2 +- src/screens/VideoFeed/index.tsx | 4 ++-- src/state/cache/post-shadow.ts | 6 +++--- src/state/cache/profile-shadow.ts | 2 +- src/state/messages/convo/agent.ts | 4 ++-- src/state/messages/convo/index.tsx | 4 ++-- src/state/messages/convo/types.ts | 2 +- src/state/queries/bookmarks/useBookmarkMutation.ts | 2 +- src/state/queries/bookmarks/useBookmarksQuery.ts | 4 ++-- src/state/queries/explore-feed-previews.tsx | 8 ++++---- src/state/queries/feed.ts | 4 ++-- src/state/queries/join-links.ts | 4 ++-- src/state/queries/messages/actor-declaration.ts | 2 +- src/state/queries/messages/create-join-link.ts | 2 +- src/state/queries/messages/disable-join-link.ts | 2 +- src/state/queries/messages/edit-group-chat-name.ts | 2 +- src/state/queries/messages/edit-join-link.ts | 2 +- src/state/queries/messages/enable-join-link.ts | 2 +- .../queries/messages/list-conversation-requests.tsx | 2 +- src/state/queries/messages/list-join-requests.ts | 2 +- src/state/queries/messages/lock-conversation.ts | 2 +- .../queries/messages/mark-join-request-read.ts | 2 +- src/state/queries/messages/remove-from-group.ts | 2 +- src/state/queries/messages/utils/convo-cache.ts | 2 +- .../queries/notifications/__tests__/util.test.ts | 3 +-- src/state/queries/notifications/feed.ts | 6 +++--- src/state/queries/notifications/types.ts | 2 +- src/state/queries/nuxs/index.ts | 6 +----- src/state/queries/nuxs/types.ts | 2 +- src/state/queries/post-feed.ts | 6 +++--- src/state/queries/post-quotes.ts | 4 ++-- src/state/queries/post.ts | 4 ++-- src/state/queries/postgate/util.ts | 6 +++--- .../queries/preferences/useThreadPreferences.ts | 2 +- src/state/queries/profile-feedgens.ts | 2 +- src/state/queries/profile-lists.ts | 2 +- src/state/queries/profile.ts | 4 ++-- src/state/queries/resolve-uri.ts | 2 +- src/state/queries/search-posts-params.ts | 3 +-- src/state/queries/search-posts-v2.ts | 4 ++-- src/state/queries/starter-packs.ts | 6 +++--- src/state/queries/usePostThread/const.ts | 1 - src/state/queries/usePostThread/queryCache.ts | 8 ++++---- src/state/queries/usePostThread/traversal.ts | 4 ++-- src/state/queries/usePostThread/types.ts | 1 + src/state/queries/usePostThread/utils.ts | 3 ++- src/state/queries/usePostThread/views.ts | 6 +++--- src/state/queries/util.ts | 2 +- .../useUpdateProfileVerificationCache.ts | 3 +-- .../verification/useVerificationCreateMutation.tsx | 13 ++++--------- .../verification/useVerificationsRemoveMutation.tsx | 4 ++-- src/state/shell/composer/index.tsx | 2 +- src/state/threadgate-hidden-replies.tsx | 1 + src/state/unstable-post-source.tsx | 4 ++-- src/view/com/composer/Composer.tsx | 6 +++--- src/view/com/composer/ComposerReplyTo.tsx | 4 ++-- src/view/com/composer/ExternalEmbed.tsx | 2 +- src/view/com/composer/drafts/state/api.ts | 6 +++--- src/view/com/composer/drafts/state/queries.ts | 4 ++-- src/view/com/composer/drafts/state/schema.ts | 2 +- src/view/com/composer/state/composer.ts | 13 +++++-------- .../com/composer/text-input/mobile/Autocomplete.tsx | 2 +- .../com/composer/text-input/web/Autocomplete.tsx | 2 +- src/view/com/feeds/FeedPage.tsx | 2 +- src/view/com/feeds/FeedSourceCard.tsx | 8 ++++---- src/view/com/feeds/MissingFeed.tsx | 2 +- src/view/com/lists/ListMembers.tsx | 2 +- src/view/com/lists/MyLists.tsx | 2 +- src/view/com/notifications/NotificationFeedItem.tsx | 2 +- src/view/com/post-thread/PostLikedBy.tsx | 2 +- src/view/com/post-thread/PostQuotes.tsx | 2 +- src/view/com/post-thread/PostRepostedBy.tsx | 2 +- src/view/com/post/Post.tsx | 4 ++-- src/view/com/posts/PostFeed.tsx | 4 ++-- src/view/com/posts/PostFeedErrorMessage.tsx | 6 +++--- src/view/com/posts/PostFeedItem.tsx | 4 ++-- src/view/com/posts/PostFeedReason.tsx | 4 ++-- src/view/com/posts/ViewFullThread.tsx | 2 +- src/view/com/profile/ProfileFollowers.tsx | 2 +- src/view/com/profile/ProfileFollows.tsx | 2 +- src/view/com/profile/ProfileMenu.tsx | 2 +- src/view/com/profile/ProfileSubpageHeader.tsx | 2 +- src/view/com/util/PostMeta.tsx | 2 +- src/view/com/util/UserInfoText.tsx | 2 +- src/view/screens/Feeds.tsx | 2 +- src/view/screens/Lists.tsx | 2 +- src/view/screens/ModerationBlockedAccounts.tsx | 2 +- src/view/screens/ModerationModlists.tsx | 2 +- src/view/screens/ModerationMutedAccounts.tsx | 2 +- src/view/screens/Profile.tsx | 2 +- src/view/shell/desktop/LeftNav.tsx | 2 +- 282 files changed, 398 insertions(+), 408 deletions(-) diff --git a/oxlint-suppressions.json b/oxlint-suppressions.json index 1d22db2747..1cb148b151 100644 --- a/oxlint-suppressions.json +++ b/oxlint-suppressions.json @@ -1645,7 +1645,7 @@ "count": 8 }, "typescript/no-unsafe-member-access": { - "count": 9 + "count": 8 } }, "src/view/com/util/EmptyState.tsx": { diff --git a/src/ageAssurance/data.tsx b/src/ageAssurance/data.tsx index 8da9863cbc..0eed2bc43f 100644 --- a/src/ageAssurance/data.tsx +++ b/src/ageAssurance/data.tsx @@ -32,7 +32,7 @@ import { } from '#/ageAssurance/util' import {IS_DEV} from '#/env' import {useGeolocation} from '#/geolocation' -import {app, chat} from '#/lexicons' +import {app, type chat} from '#/lexicons' import {device} from '#/storage' /** @@ -96,9 +96,7 @@ export async function getConfig() { * before there is any session (and while logged out), so it goes through the * process-wide public client rather than a bundle one. */ - return (await getPublicAppviewClient().call( - app.bsky.ageassurance.getConfig, - )) as app.bsky.ageassurance.getConfig.$OutputBody + return await getPublicAppviewClient().call(app.bsky.ageassurance.getConfig) } export function getConfigFromCache(): | app.bsky.ageassurance.getConfig.$OutputBody diff --git a/src/ageAssurance/debug.ts b/src/ageAssurance/debug.ts index 3360747d4e..c91311c06f 100644 --- a/src/ageAssurance/debug.ts +++ b/src/ageAssurance/debug.ts @@ -1,10 +1,10 @@ import type * as AgeRange from 'expo-age-range' import {toDatetimeString} from '@atproto/syntax' -import {app} from '#/lexicons' import {type OtherRequiredData} from '#/ageAssurance/data' import {IS_DEV, IS_E2E} from '#/env' import {type Geolocation} from '#/geolocation' +import {app} from '#/lexicons' export const enabled = (IS_DEV && false) || IS_E2E diff --git a/src/ageAssurance/state.ts b/src/ageAssurance/state.ts index 65c7f4781c..8ede9d13fa 100644 --- a/src/ageAssurance/state.ts +++ b/src/ageAssurance/state.ts @@ -2,7 +2,6 @@ import {useEffect, useMemo, useState} from 'react' import type * as AgeRange from 'expo-age-range' import {computeAgeAssuranceRegionAccess} from '@bsky.app/sdk/utils' -import {type app} from '#/lexicons' import {getAge} from '#/lib/strings/time' import {useSession} from '#/state/session' import { @@ -28,6 +27,7 @@ import { getAgeAssuranceRegionConfigWithFallback, } from '#/ageAssurance/util' import {type Geolocation, useGeolocation} from '#/geolocation' +import {type app} from '#/lexicons' import {device} from '#/storage' /** diff --git a/src/ageAssurance/util.ts b/src/ageAssurance/util.ts index 41dc84cccd..6493a9aa5e 100644 --- a/src/ageAssurance/util.ts +++ b/src/ageAssurance/util.ts @@ -1,13 +1,11 @@ import {useMemo} from 'react' import type * as AgeRange from 'expo-age-range' +import {type ModerationPrefs} from '@bsky.app/sdk/moderation' import { computeAgeAssuranceRegionAccess, getAgeAssuranceRegionConfig, } from '@bsky.app/sdk/utils' -import {type ModerationPrefs} from '@bsky.app/sdk/moderation' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {getAge} from '#/lib/strings/time' import {regionName} from '#/locale/helpers' import {DEFAULT_LOGGED_OUT_LABEL_PREFERENCES} from '#/state/queries/preferences/const' @@ -26,6 +24,8 @@ import { } from '#/ageAssurance/types' import {type Geolocation, useGeolocation} from '#/geolocation' import {USRegionNameToRegionCode} from '#/geolocation/util' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' /** * Resolves a geolocation to its matched age assurance region config, or diff --git a/src/components/AccountList.tsx b/src/components/AccountList.tsx index d639166bb2..601c02f40e 100644 --- a/src/components/AccountList.tsx +++ b/src/components/AccountList.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {isJwtExpired} from '#/lib/jwt' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' @@ -19,6 +18,7 @@ import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/ import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' export function AccountList({ onSelectAccount, diff --git a/src/components/AvatarBubbles.tsx b/src/components/AvatarBubbles.tsx index 0f68952c59..6189141934 100644 --- a/src/components/AvatarBubbles.tsx +++ b/src/components/AvatarBubbles.tsx @@ -8,8 +8,8 @@ import Animated, { withDelay, withTiming, } from 'react-native-reanimated' - import {moderateProfile} from '@bsky.app/sdk/moderation' + import {useMaybeProfileShadow} from '#/state/cache/profile-shadow' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useSession} from '#/state/session' diff --git a/src/components/AvatarStack.tsx b/src/components/AvatarStack.tsx index 136d40acb4..dc7a8395c3 100644 --- a/src/components/AvatarStack.tsx +++ b/src/components/AvatarStack.tsx @@ -1,6 +1,6 @@ import {View} from 'react-native' - import {moderateProfile} from '@bsky.app/sdk/moderation' + import {logger} from '#/logger' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useProfilesQuery} from '#/state/queries/profile' diff --git a/src/components/BotBadge.tsx b/src/components/BotBadge.tsx index af0fb3654f..92496de653 100644 --- a/src/components/BotBadge.tsx +++ b/src/components/BotBadge.tsx @@ -1,13 +1,13 @@ import {type Insets, View} from 'react-native' import {useLingui} from '@lingui/react/macro' -import {com} from '#/lexicons' import {atoms as a, useTheme} from '#/alf' import {BotAccountAlert} from '#/components/BotAccountAlert' import {Button} from '#/components/Button' import {useDialogControl} from '#/components/Dialog' import {Bot_Filled as RobotIcon} from '#/components/icons/Bot' import {useAnalytics} from '#/analytics' +import {com} from '#/lexicons' import type * as bsky from '#/types/bsky' export function isBotAccount(profile: { diff --git a/src/components/FeedCard.tsx b/src/components/FeedCard.tsx index 5782325ae5..8f98547b18 100644 --- a/src/components/FeedCard.tsx +++ b/src/components/FeedCard.tsx @@ -1,11 +1,10 @@ import {useCallback, useEffect, useMemo} from 'react' import {type GestureResponderEvent, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {RichText as RichTextApi} from '@bsky.app/sdk/richtext' import {Plural, Trans, useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import {logger} from '#/logger' import {precacheFeedFromGeneratorView} from '#/state/queries/feed' @@ -32,6 +31,7 @@ import {RichText, type RichTextProps} from '#/components/RichText' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useActiveLiveEventFeedUris} from '#/features/liveEvents/context' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from './icons/Trash' diff --git a/src/components/FeedInterstitials.tsx b/src/components/FeedInterstitials.tsx index 67e227cd14..5754c78232 100644 --- a/src/components/FeedInterstitials.tsx +++ b/src/components/FeedInterstitials.tsx @@ -10,7 +10,6 @@ import Animated, { import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useGetPopularFeedsQuery} from '#/state/queries/feed' @@ -40,6 +39,7 @@ import {ProgressGuideList} from '#/components/ProgressGuide/List' import {Text} from '#/components/Typography' import {type Metrics, useAnalytics} from '#/analytics' import {IS_IOS} from '#/env' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' import {FollowDialogWithoutGuide} from './ProgressGuide/FollowDialog' diff --git a/src/components/KnownFollowers.tsx b/src/components/KnownFollowers.tsx index f309369993..80609f4ead 100644 --- a/src/components/KnownFollowers.tsx +++ b/src/components/KnownFollowers.tsx @@ -3,13 +3,13 @@ import {View} from 'react-native' import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useTheme} from '#/alf' import {Link, type LinkProps} from '#/components/Link' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' const AVI_SIZE = 30 diff --git a/src/components/LikedByList.tsx b/src/components/LikedByList.tsx index a851a17cf9..22e3f67518 100644 --- a/src/components/LikedByList.tsx +++ b/src/components/LikedByList.tsx @@ -2,7 +2,6 @@ import {useCallback, useMemo, useState} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -11,6 +10,7 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' import {List} from '#/view/com/util/List' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' function renderItem({ item, diff --git a/src/components/ListCard.tsx b/src/components/ListCard.tsx index aa89f31acb..405d32f5eb 100644 --- a/src/components/ListCard.tsx +++ b/src/components/ListCard.tsx @@ -1,13 +1,12 @@ import {useEffect, useMemo} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {moderateUserList, type ModerationUI} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {precacheList} from '#/state/queries/feed' @@ -23,6 +22,7 @@ import { import {Link as InternalLink, type LinkProps} from '#/components/Link' import * as Hider from '#/components/moderation/Hider' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' /* diff --git a/src/components/MediaPreview.tsx b/src/components/MediaPreview.tsx index 2178dad193..0763f8ee14 100644 --- a/src/components/MediaPreview.tsx +++ b/src/components/MediaPreview.tsx @@ -2,7 +2,6 @@ import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native' import {Image} from 'expo-image' import {Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {shareImageModal} from '#/lib/media/manip' import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' import {isGifEmbed} from '#/lib/strings/embed-player' @@ -13,6 +12,7 @@ import {MediaInsetBorder} from '#/components/MediaInsetBorder' import * as PeekMenu from '#/components/PeekMenu' import {Text} from '#/components/Typography' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' /** diff --git a/src/components/NewskieDialog.tsx b/src/components/NewskieDialog.tsx index 84a69fe694..82eb02012b 100644 --- a/src/components/NewskieDialog.tsx +++ b/src/components/NewskieDialog.tsx @@ -6,7 +6,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {differenceInSeconds} from 'date-fns' -import {app} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' import {sanitizeDisplayName} from '#/lib/strings/display-names' @@ -20,6 +19,7 @@ import {Newskie} from '#/components/icons/Newskie' import * as StarterPackCard from '#/components/StarterPack/StarterPackCard' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' export function NewskieDialog({ profile, diff --git a/src/components/Post/Embed/ChatInviteEmbed.tsx b/src/components/Post/Embed/ChatInviteEmbed.tsx index 05dec19a92..323f7266d6 100644 --- a/src/components/Post/Embed/ChatInviteEmbed.tsx +++ b/src/components/Post/Embed/ChatInviteEmbed.tsx @@ -1,10 +1,10 @@ import {type StyleProp, type ViewStyle} from 'react-native' -import {app} from '#/lexicons' import {atoms as a} from '#/alf' import * as ChatInvite from '#/components/dms/ChatInvite' import {ExternalEmbed} from '#/components/Post/Embed/ExternalEmbed' import {JoinRequestEmbedBody} from '#/components/Post/Embed/JoinRequestEmbed' +import {app} from '#/lexicons' /** * Renders a chat invite link found in an `app.bsky.embed.external` embed (e.g. diff --git a/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx b/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx index c1580566d0..5d714b35af 100644 --- a/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx +++ b/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx @@ -8,7 +8,6 @@ import {Image} from 'expo-image' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {type EmbedPlayerParams} from '#/lib/strings/embed-player' import {useExternalEmbedsPrefs} from '#/state/preferences' import {atoms as a, useTheme} from '#/alf' @@ -17,6 +16,7 @@ import {EmbedConsentDialog} from '#/components/dialogs/EmbedConsent' import {Fill} from '#/components/Fill' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {IS_IOS, IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' export function ExternalGif({ link, diff --git a/src/components/Post/Embed/ExternalEmbed/ExternalPlayer.tsx b/src/components/Post/Embed/ExternalEmbed/ExternalPlayer.tsx index 317b1cd92b..7bd83c3c0c 100644 --- a/src/components/Post/Embed/ExternalEmbed/ExternalPlayer.tsx +++ b/src/components/Post/Embed/ExternalEmbed/ExternalPlayer.tsx @@ -19,7 +19,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import { type EmbedPlayerParams, @@ -34,6 +33,7 @@ import {Fill} from '#/components/Fill' import {KeepAwake} from '#/components/KeepAwake' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' interface ShouldStartLoadRequest { url: string diff --git a/src/components/Post/Embed/ExternalEmbed/index.tsx b/src/components/Post/Embed/ExternalEmbed/index.tsx index f58001f4fb..e14a0bb4c8 100644 --- a/src/components/Post/Embed/ExternalEmbed/index.tsx +++ b/src/components/Post/Embed/ExternalEmbed/index.tsx @@ -4,7 +4,6 @@ import {Image} from 'expo-image' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {parseAltFromGIFDescription} from '#/lib/gif-alt-text' import {useHaptics} from '#/lib/haptics' import {shareUrl} from '#/lib/sharing' @@ -20,6 +19,7 @@ import {Earth_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe' import {Link} from '#/components/Link' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' import {ExternalGif} from './ExternalGif' import {ExternalPlayer} from './ExternalPlayer' import {GifEmbed} from './Gif' diff --git a/src/components/Post/Embed/FeedEmbed.tsx b/src/components/Post/Embed/FeedEmbed.tsx index 70d59c3adb..9e1e3e022d 100644 --- a/src/components/Post/Embed/FeedEmbed.tsx +++ b/src/components/Post/Embed/FeedEmbed.tsx @@ -1,6 +1,6 @@ import {useMemo} from 'react' - import {moderateFeedGenerator} from '@bsky.app/sdk/moderation' + import {useModerationOpts} from '#/state/preferences/moderation-opts' import {atoms as a, useTheme} from '#/alf' import * as FeedCard from '#/components/FeedCard' diff --git a/src/components/Post/Embed/ImageEmbed.tsx b/src/components/Post/Embed/ImageEmbed.tsx index 0188f2fedf..cc3ce6c443 100644 --- a/src/components/Post/Embed/ImageEmbed.tsx +++ b/src/components/Post/Embed/ImageEmbed.tsx @@ -3,8 +3,6 @@ import {InteractionManager, View} from 'react-native' import {type AnimatedRef} from 'react-native-reanimated' import {Image} from 'expo-image' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {atoms as a, tokens} from '#/alf' import {AutoSizedImage} from '#/components/images/AutoSizedImage' import {Gallery} from '#/components/images/Gallery' @@ -17,6 +15,8 @@ import {type Dimensions} from '#/components/Lightbox/types' import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu' import {PostEmbedViewContext} from '#/components/Post/Embed/types' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {type EmbedType} from '#/types/bsky/post' import {type CommonProps} from './types' diff --git a/src/components/Post/Embed/ListEmbed.tsx b/src/components/Post/Embed/ListEmbed.tsx index f7f354dd53..11ed196597 100644 --- a/src/components/Post/Embed/ListEmbed.tsx +++ b/src/components/Post/Embed/ListEmbed.tsx @@ -1,6 +1,6 @@ import {useMemo} from 'react' - import {moderateUserList} from '@bsky.app/sdk/moderation' + import {useModerationOpts} from '#/state/preferences/moderation-opts' import {atoms as a, useTheme} from '#/alf' import * as ListCard from '#/components/ListCard' diff --git a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx index a5b8030214..d2ee4cf545 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx +++ b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx @@ -1,8 +1,8 @@ import {Fragment, type ReactNode} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' import {toNiceDomain} from '#/lib/strings/url-helpers' import {atoms as a, useTheme} from '#/alf' import { diff --git a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider.tsx b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider.tsx index bd8dcd3362..d48ae7429f 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider.tsx +++ b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider.tsx @@ -1,5 +1,5 @@ -import {app} from '#/lexicons' import {Context, useAlf, utils} from '#/alf' +import {app} from '#/lexicons' /** * Overrides only the values needed for `secondary_inverted` buttons atm. diff --git a/src/components/Post/Embed/StandardSiteEmbed/index.tsx b/src/components/Post/Embed/StandardSiteEmbed/index.tsx index 3bb1e0cd68..0c50723a15 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/index.tsx +++ b/src/components/Post/Embed/StandardSiteEmbed/index.tsx @@ -1,9 +1,9 @@ import {type StyleProp, View, type ViewStyle} from 'react-native' import {Image} from 'expo-image' +import {AtUri} from '@atproto/syntax' import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' import {useHaptics} from '#/lib/haptics' import {shareUrl} from '#/lib/sharing' import {niceDate} from '#/lib/strings/time' diff --git a/src/components/Post/Embed/StandardSiteEmbed/publishers.ts b/src/components/Post/Embed/StandardSiteEmbed/publishers.ts index 56a44c22aa..0ca5299b7b 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/publishers.ts +++ b/src/components/Post/Embed/StandardSiteEmbed/publishers.ts @@ -1,7 +1,7 @@ -import {app} from '#/lexicons' import {Leaflet} from '#/components/icons/community/Leaflet' import {Offprint} from '#/components/icons/community/Offprint' import {Pckt} from '#/components/icons/community/Pckt' +import {app} from '#/lexicons' export type StandardSitePublisher = { host: string diff --git a/src/components/Post/Embed/StandardSiteEmbed/types.ts b/src/components/Post/Embed/StandardSiteEmbed/types.ts index 708fe55309..129559b994 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/types.ts +++ b/src/components/Post/Embed/StandardSiteEmbed/types.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' export type CommonProps = { view: app.bsky.embed.external.ViewExternal diff --git a/src/components/Post/Embed/StandardSiteEmbed/utils.test.ts b/src/components/Post/Embed/StandardSiteEmbed/utils.test.ts index f18f366767..c6ec3bed03 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/utils.test.ts +++ b/src/components/Post/Embed/StandardSiteEmbed/utils.test.ts @@ -1,5 +1,5 @@ -import {isStandardSiteEmbed, isStandardSitePublicationEmbed} from './utils' import {app} from '#/lexicons' +import {isStandardSiteEmbed, isStandardSitePublicationEmbed} from './utils' function makeView( partial: Record, diff --git a/src/components/Post/Embed/StandardSiteEmbed/utils.ts b/src/components/Post/Embed/StandardSiteEmbed/utils.ts index bc041d2855..7d502f17ae 100644 --- a/src/components/Post/Embed/StandardSiteEmbed/utils.ts +++ b/src/components/Post/Embed/StandardSiteEmbed/utils.ts @@ -1,4 +1,5 @@ import {AtUri} from '@atproto/syntax' + import {app, com} from '#/lexicons' export function isStandardSiteDocumentUri( diff --git a/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx b/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx index 2879f43b34..cf46ed9dd4 100644 --- a/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx +++ b/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx @@ -3,7 +3,6 @@ import {Pressable, type StyleProp, View, type ViewStyle} from 'react-native' import {BlueskyVideoView} from '@bsky.app/video' import {useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {HITSLOP_30} from '#/lib/constants' import {useAutoplayDisabled} from '#/state/preferences' import {atoms as a, useTheme} from '#/alf' @@ -17,6 +16,7 @@ import {KeepAwake} from '#/components/KeepAwake' import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {useReportDialogMetadataContext} from '#/components/moderation/ReportDialog/ReportDialogMetadataContext' import {useVideoMuteState} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext' +import {app} from '#/lexicons' import {GifPresentationControls} from '../GifPresentationControls' import {TimeIndicator} from './TimeIndicator' diff --git a/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.shared.ts b/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.shared.ts index 3855603408..8c4ef57d20 100644 --- a/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.shared.ts +++ b/src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb.shared.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' export type VideoEmbedInnerWebProps = { embed: app.bsky.embed.video.View diff --git a/src/components/Post/Embed/VideoEmbed/index.tsx b/src/components/Post/Embed/VideoEmbed/index.tsx index 4f789e1e4a..11a2723922 100644 --- a/src/components/Post/Embed/VideoEmbed/index.tsx +++ b/src/components/Post/Embed/VideoEmbed/index.tsx @@ -9,7 +9,6 @@ import { createPlaybackTelemetry, type PlaybackTelemetry, } from '#/lib/media/video/playbackTelemetry' -import {app} from '#/lexicons' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {atoms as a, platform} from '#/alf' import {Button} from '#/components/Button' @@ -17,6 +16,7 @@ import {useThrottledValue} from '#/components/hooks/useThrottledValue' import {ConstrainedImage} from '#/components/images/AutoSizedImage' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {GifPresentationControls} from './GifPresentationControls' import {VideoEmbedInnerNative} from './VideoEmbedInner/VideoEmbedInnerNative' import * as VideoFallback from './VideoEmbedInner/VideoFallback' diff --git a/src/components/Post/Embed/VideoEmbed/index.web.tsx b/src/components/Post/Embed/VideoEmbed/index.web.tsx index 7118f65bc8..98bee0c884 100644 --- a/src/components/Post/Embed/VideoEmbed/index.web.tsx +++ b/src/components/Post/Embed/VideoEmbed/index.web.tsx @@ -10,7 +10,6 @@ import {View} from 'react-native' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {atoms as a, useTheme} from '#/alf' import {useIsWithinMessage} from '#/components/dms/MessageContext' @@ -25,6 +24,7 @@ import { } from '#/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb' import {useAnalytics} from '#/analytics' import {IS_WEB_FIREFOX} from '#/env' +import {app} from '#/lexicons' import {useActiveVideoWeb} from './ActiveVideoWebContext' import * as VideoFallback from './VideoEmbedInner/VideoFallback' diff --git a/src/components/Post/Embed/index.tsx b/src/components/Post/Embed/index.tsx index 6a196ce881..d6fde617c9 100644 --- a/src/components/Post/Embed/index.tsx +++ b/src/components/Post/Embed/index.tsx @@ -1,13 +1,12 @@ import {useCallback, useMemo} from 'react' import {View} from 'react-native' -import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' +import {type $Typed} from '@atproto/lex' +import {AtUri} from '@atproto/syntax' import {moderatePost} from '@bsky.app/sdk/moderation' +import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {type $Typed} from '@atproto/lex' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {getChatInviteCodeFromUrl} from '#/lib/strings/url-helpers' import {useModerationOpts} from '#/state/preferences/moderation-opts' @@ -26,6 +25,7 @@ import {isStandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed/uti import {RichText} from '#/components/RichText' import {Embed as StarterPackCard} from '#/components/StarterPack/StarterPackCard' import {SubtleHover} from '#/components/SubtleHover' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' import { type Embed as TEmbed, diff --git a/src/components/Post/Embed/types.ts b/src/components/Post/Embed/types.ts index 2e2a13da08..9bd5633650 100644 --- a/src/components/Post/Embed/types.ts +++ b/src/components/Post/Embed/types.ts @@ -1,5 +1,6 @@ import {type StyleProp, type ViewStyle} from 'react-native' import {type ModerationDecision} from '@bsky.app/sdk/moderation' + import {app} from '#/lexicons' export enum PostEmbedViewContext { diff --git a/src/components/Post/Translated/index.tsx b/src/components/Post/Translated/index.tsx index 5ba1f9c41f..849222df03 100644 --- a/src/components/Post/Translated/index.tsx +++ b/src/components/Post/Translated/index.tsx @@ -2,7 +2,6 @@ import {useCallback, useMemo} from 'react' import {Platform, type StyleProp, type TextStyle, View} from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {HITSLOP_30} from '#/lib/constants' import {useTranslate} from '#/lib/translation' import { @@ -28,6 +27,7 @@ import * as Select from '#/components/Select' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' const X_ICON_OFFSET = 16 diff --git a/src/components/PostControls/BookmarkButton.tsx b/src/components/PostControls/BookmarkButton.tsx index 1866df07c7..caeb9b6532 100644 --- a/src/components/PostControls/BookmarkButton.tsx +++ b/src/components/PostControls/BookmarkButton.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useCleanError} from '#/lib/hooks/useCleanError' import {type Shadow} from '#/state/cache/post-shadow' import {useFeedFeedbackContext} from '#/state/feed-feedback' @@ -15,6 +14,7 @@ import {Bookmark, BookmarkFilled} from '#/components/icons/Bookmark' import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Trash' import * as toast from '#/components/Toast' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {PostControlButton, PostControlButtonIcon} from './PostControlButton' export const BookmarkButton = memo(function BookmarkButton({ diff --git a/src/components/PostControls/PostMenu/PostMenuItems.tsx b/src/components/PostControls/PostMenu/PostMenuItems.tsx index abfc888213..2acc7fa208 100644 --- a/src/components/PostControls/PostMenu/PostMenuItems.tsx +++ b/src/components/PostControls/PostMenu/PostMenuItems.tsx @@ -6,13 +6,12 @@ import { type ViewStyle, } from 'react-native' import * as Clipboard from 'expo-clipboard' +import {AtUri} from '@atproto/syntax' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {DISCOVER_DEBUG_DIDS} from '#/lib/constants' import {useOpenLink} from '#/lib/hooks/useOpenLink' import {getCurrentRoute} from '#/lib/routes/helpers' @@ -93,6 +92,7 @@ import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' import {IS_INTERNAL} from '#/env' +import {app} from '#/lexicons' let PostMenuItems = ({ post, diff --git a/src/components/PostControls/PostMenu/index.tsx b/src/components/PostControls/PostMenu/index.tsx index 8d9da5f03d..aedacfcbfb 100644 --- a/src/components/PostControls/PostMenu/index.tsx +++ b/src/components/PostControls/PostMenu/index.tsx @@ -3,12 +3,12 @@ import {type Insets} from 'react-native' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {type Shadow} from '#/state/cache/post-shadow' import {EventStopper} from '#/view/com/util/EventStopper' import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontal} from '#/components/icons/DotGrid' import * as Menu from '#/components/Menu' import {useMenuControl} from '#/components/Menu' +import {app} from '#/lexicons' import {PostControlButton, PostControlButtonIcon} from '../PostControlButton' import {PostMenuItems} from './PostMenuItems' diff --git a/src/components/PostControls/ShareMenu/RecentChats.tsx b/src/components/PostControls/ShareMenu/RecentChats.tsx index ce6dc144c9..c2c59d7479 100644 --- a/src/components/PostControls/ShareMenu/RecentChats.tsx +++ b/src/components/PostControls/ShareMenu/RecentChats.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {chat} from '#/lexicons' import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {type NavigationProp} from '#/lib/routes/types' @@ -22,6 +21,7 @@ import {type ConvoWithDetails, parseConvoView} from '#/components/dms/util' import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {chat} from '#/lexicons' export function RecentChats({ postUri, diff --git a/src/components/PostControls/ShareMenu/ShareMenuItems.tsx b/src/components/PostControls/ShareMenu/ShareMenuItems.tsx index 000c7f2595..716e1ec851 100644 --- a/src/components/PostControls/ShareMenu/ShareMenuItems.tsx +++ b/src/components/PostControls/ShareMenu/ShareMenuItems.tsx @@ -1,10 +1,10 @@ import {memo, useMemo} from 'react' import * as ExpoClipboard from 'expo-clipboard' +import {AtUri} from '@atproto/syntax' import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {shareText, shareUrl} from '#/lib/sharing' diff --git a/src/components/PostControls/ShareMenu/ShareMenuItems.types.tsx b/src/components/PostControls/ShareMenu/ShareMenuItems.types.tsx index 3b3da16e60..10cb503389 100644 --- a/src/components/PostControls/ShareMenu/ShareMenuItems.types.tsx +++ b/src/components/PostControls/ShareMenu/ShareMenuItems.types.tsx @@ -1,8 +1,8 @@ import {type PressableProps, type StyleProp, type ViewStyle} from 'react-native' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' -import {app} from '#/lexicons' import {type Shadow} from '#/state/cache/post-shadow' +import {app} from '#/lexicons' export interface ShareMenuItemsProps { testID: string diff --git a/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx b/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx index 298654d9eb..fb2fd20988 100644 --- a/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx +++ b/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx @@ -1,8 +1,8 @@ import {memo, useMemo} from 'react' +import {AtUri} from '@atproto/syntax' import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {shareText, shareUrl} from '#/lib/sharing' diff --git a/src/components/PostControls/ShareMenu/index.tsx b/src/components/PostControls/ShareMenu/index.tsx index bd5c397400..ef40dfe1a6 100644 --- a/src/components/PostControls/ShareMenu/index.tsx +++ b/src/components/PostControls/ShareMenu/index.tsx @@ -1,11 +1,10 @@ import {memo, useMemo, useState} from 'react' import {type Insets} from 'react-native' +import {AtUri} from '@atproto/syntax' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' @@ -17,6 +16,7 @@ import {ArrowShareRight_Stroke2_Corner2_Rounded as ArrowShareRightIcon} from '#/ import * as Menu from '#/components/Menu' import {useMenuControl} from '#/components/Menu' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {PostControlButton, PostControlButtonIcon} from '../PostControlButton' import {ShareMenuItems} from './ShareMenuItems' diff --git a/src/components/PostControls/index.tsx b/src/components/PostControls/index.tsx index 697ffd8b77..24f23c312e 100644 --- a/src/components/PostControls/index.tsx +++ b/src/components/PostControls/index.tsx @@ -4,7 +4,6 @@ import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {CountWheel} from '#/lib/custom-animations/CountWheel' import {AnimatedLikeIcon} from '#/lib/custom-animations/LikeIcon' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' @@ -25,6 +24,7 @@ import {useFormatPostStatCount} from '#/components/PostControls/util' import * as Skele from '#/components/Skeleton' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {BookmarkButton} from './BookmarkButton' import { PostControlButton, diff --git a/src/components/ProfileHoverCard/index.web.tsx b/src/components/ProfileHoverCard/index.web.tsx index d1580d891d..8fc4fae5ca 100644 --- a/src/components/ProfileHoverCard/index.web.tsx +++ b/src/components/ProfileHoverCard/index.web.tsx @@ -6,7 +6,6 @@ import {msg, plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {getModerationCauseKey} from '#/lib/moderation' import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' @@ -39,6 +38,7 @@ import {Text} from '#/components/Typography' import {IS_WEB_TOUCH_DEVICE} from '#/env' import {useActorStatus} from '#/features/liveNow' import {LiveStatus} from '#/features/liveNow/components/LiveStatusDialog' +import {app} from '#/lexicons' import {type ProfileHoverCardProps} from './types' const floatingMiddlewares = [ diff --git a/src/components/StarterPack/Main/FeedsList.tsx b/src/components/StarterPack/Main/FeedsList.tsx index 87320831b0..9543fe3dd5 100644 --- a/src/components/StarterPack/Main/FeedsList.tsx +++ b/src/components/StarterPack/Main/FeedsList.tsx @@ -1,13 +1,13 @@ import {forwardRef, useCallback, useImperativeHandle, useState} from 'react' import {type ListRenderItemInfo, View} from 'react-native' -import {app} from '#/lexicons' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {List, type ListRef} from '#/view/com/util/List' import {type SectionRef} from '#/screens/Profile/Sections/types' import {atoms as a, useTheme} from '#/alf' import * as FeedCard from '#/components/FeedCard' import {IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' function keyExtractor(item: app.bsky.feed.defs.GeneratorView) { return item.uri diff --git a/src/components/StarterPack/Main/ProfilesList.tsx b/src/components/StarterPack/Main/ProfilesList.tsx index 5cc3ad4967..662a861883 100644 --- a/src/components/StarterPack/Main/ProfilesList.tsx +++ b/src/components/StarterPack/Main/ProfilesList.tsx @@ -1,13 +1,12 @@ import {forwardRef, useCallback, useImperativeHandle, useState} from 'react' import {type ListRenderItemInfo, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import { type InfiniteData, type UseInfiniteQueryResult, } from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' @@ -19,6 +18,7 @@ import {atoms as a, useTheme} from '#/alf' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {Default as ProfileCard} from '#/components/ProfileCard' import {IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' function keyExtractor(item: app.bsky.actor.defs.ProfileView, index: number) { return `${item.did}-${index}` diff --git a/src/components/StarterPack/ProfileStarterPacks.tsx b/src/components/StarterPack/ProfileStarterPacks.tsx index 32e4a210e0..101cfb1132 100644 --- a/src/components/StarterPack/ProfileStarterPacks.tsx +++ b/src/components/StarterPack/ProfileStarterPacks.tsx @@ -11,7 +11,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {useGenerateStarterPackMutation} from '#/lib/generate-starterpack' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' @@ -37,6 +36,7 @@ import * as Prompt from '#/components/Prompt' import {Default as StarterPackCard} from '#/components/StarterPack/StarterPackCard' import {Text} from '#/components/Typography' import {IS_IOS} from '#/env' +import {app} from '#/lexicons' interface SectionRef { scrollToTop: () => void diff --git a/src/components/StarterPack/QrCode.tsx b/src/components/StarterPack/QrCode.tsx index bd8476bd38..8a05a767b1 100644 --- a/src/components/StarterPack/QrCode.tsx +++ b/src/components/StarterPack/QrCode.tsx @@ -5,13 +5,13 @@ import QRCode from 'react-native-qrcode-styled' import type ViewShot from 'react-native-view-shot' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {Logo} from '#/view/icons/Logo' import {Logotype} from '#/view/icons/Logotype' import {atoms as a, useTheme} from '#/alf' import {LinearGradientBackground} from '#/components/LinearGradientBackground' import {Text} from '#/components/Typography' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' const LazyViewShot = lazy( diff --git a/src/components/StarterPack/QrCodeDialog.tsx b/src/components/StarterPack/QrCodeDialog.tsx index 35dea682ca..483224f9bc 100644 --- a/src/components/StarterPack/QrCodeDialog.tsx +++ b/src/components/StarterPack/QrCodeDialog.tsx @@ -7,7 +7,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {logger} from '#/logger' import {atoms as a, useBreakpoints} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' @@ -21,6 +20,7 @@ import {QrCode} from '#/components/StarterPack/QrCode' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' import {IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function QrCodeDialog({ diff --git a/src/components/StarterPack/ShareDialog.tsx b/src/components/StarterPack/ShareDialog.tsx index db0e6cd7c5..cf63ffb123 100644 --- a/src/components/StarterPack/ShareDialog.tsx +++ b/src/components/StarterPack/ShareDialog.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' import {shareUrl} from '#/lib/sharing' import {getStarterPackOgCard} from '#/lib/strings/starter-pack' @@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' interface Props { starterPack: app.bsky.graph.defs.StarterPackView diff --git a/src/components/StarterPack/StarterPackCard.tsx b/src/components/StarterPack/StarterPackCard.tsx index 247ce56434..2f99ab0651 100644 --- a/src/components/StarterPack/StarterPackCard.tsx +++ b/src/components/StarterPack/StarterPackCard.tsx @@ -1,13 +1,12 @@ import {useMemo} from 'react' import {View} from 'react-native' import {Image} from 'expo-image' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Plural, Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import {getStarterPackOgCard} from '#/lib/strings/starter-pack' import {precacheResolvedUri} from '#/state/queries/resolve-uri' @@ -20,6 +19,7 @@ import { type LinkProps as BaseLinkProps, } from '#/components/Link' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function Default({ diff --git a/src/components/StarterPack/Wizard/WizardEditListDialog.tsx b/src/components/StarterPack/Wizard/WizardEditListDialog.tsx index 933046612c..8b68bf991d 100644 --- a/src/components/StarterPack/Wizard/WizardEditListDialog.tsx +++ b/src/components/StarterPack/Wizard/WizardEditListDialog.tsx @@ -6,7 +6,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {type ListMethods} from '#/view/com/util/List' import { @@ -22,6 +21,7 @@ import { } from '#/components/StarterPack/Wizard/WizardListCard' import {Text} from '#/components/Typography' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' function keyExtractor( item: app.bsky.actor.defs.ProfileViewBasic | app.bsky.feed.defs.GeneratorView, diff --git a/src/components/StarterPack/Wizard/WizardListCard.tsx b/src/components/StarterPack/Wizard/WizardListCard.tsx index 2bd9deba50..189b1e562b 100644 --- a/src/components/StarterPack/Wizard/WizardListCard.tsx +++ b/src/components/StarterPack/Wizard/WizardListCard.tsx @@ -9,7 +9,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {DISCOVER_FEED_URI, STARTER_PACK_MAX_SIZE} from '#/lib/constants' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' @@ -25,6 +24,7 @@ import * as Toggle from '#/components/forms/Toggle' import {Checkbox} from '#/components/forms/Toggle' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' function WizardListCard({ diff --git a/src/components/TrendingTopics.tsx b/src/components/TrendingTopics.tsx index 3a01a46649..0fdb4dcd0f 100644 --- a/src/components/TrendingTopics.tsx +++ b/src/components/TrendingTopics.tsx @@ -1,8 +1,7 @@ import {useEffect, useMemo} from 'react' +import {type AtUri} from '@atproto/syntax' import {useLingui} from '@lingui/react/macro' -import {type AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {PressableScale} from '#/lib/custom-animations/PressableScale' import {useCallOnce} from '#/lib/once' // import {makeProfileLink} from '#/lib/routes/links' @@ -10,6 +9,7 @@ import {useCallOnce} from '#/lib/once' import {native} from '#/alf' import {Link as InternalLink, type LinkProps} from '#/components/Link' import {type Metrics, useAnalytics} from '#/analytics' +import {app} from '#/lexicons' export function TrendingTopicLink({ topic: raw, diff --git a/src/components/VideoPostCard.tsx b/src/components/VideoPostCard.tsx index f675a20aa0..ee487e0520 100644 --- a/src/components/VideoPostCard.tsx +++ b/src/components/VideoPostCard.tsx @@ -5,7 +5,6 @@ import {LinearGradient} from 'expo-linear-gradient' import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import {formatCount} from '#/view/com/util/numeric/format' import {UserAvatar} from '#/view/com/util/UserAvatar' @@ -21,6 +20,7 @@ import {Link} from '#/components/Link' import {MediaInsetBorder} from '#/components/MediaInsetBorder' import * as Hider from '#/components/moderation/Hider' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' function getBlackColor(t: ReturnType) { diff --git a/src/components/WhoCanReply.tsx b/src/components/WhoCanReply.tsx index 1e2aca2a84..2202ed8e33 100644 --- a/src/components/WhoCanReply.tsx +++ b/src/components/WhoCanReply.tsx @@ -6,12 +6,11 @@ import { View, type ViewStyle, } from 'react-native' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {makeListLink, makeProfileLink} from '#/lib/routes/links' import { @@ -34,6 +33,7 @@ import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' interface WhoCanReplyProps { diff --git a/src/components/activity-notifications/SubscribeProfileDialog.tsx b/src/components/activity-notifications/SubscribeProfileDialog.tsx index bdcf658e43..bbb635c390 100644 --- a/src/components/activity-notifications/SubscribeProfileDialog.tsx +++ b/src/components/activity-notifications/SubscribeProfileDialog.tsx @@ -1,6 +1,6 @@ import {useMemo, useState} from 'react' import {View} from 'react-native' -import {type DidString} from '@atproto/syntax' +import {type Un$Typed} from '@atproto/lex' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -11,7 +11,6 @@ import { useQueryClient, } from '@tanstack/react-query' -import {type Un$Typed} from '@atproto/lex' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {cleanError} from '#/lib/strings/errors' import {sanitizeHandle} from '#/lib/strings/handles' @@ -121,8 +120,7 @@ function DialogInner({ activitySubscription: Un$Typed, ) => { await client.call(app.bsky.notification.putActivitySubscription, { - // the profile view carries an already-resolved did - subject: profile.did as DidString, + subject: profile.did, activitySubscription, }) }, diff --git a/src/components/contacts/contacts.ts b/src/components/contacts/contacts.ts index 4f4df359e0..36e617d658 100644 --- a/src/components/contacts/contacts.ts +++ b/src/components/contacts/contacts.ts @@ -1,5 +1,5 @@ -import {app} from '#/lexicons' import {type CountryCode} from '#/lib/international-telephone-codes' +import {app} from '#/lexicons' import {normalizePhoneNumber} from './phone-number' import {type Contact, type Match} from './state' diff --git a/src/components/dialogs/Embed.tsx b/src/components/dialogs/Embed.tsx index b958b0f0ae..fa7a8156c8 100644 --- a/src/components/dialogs/Embed.tsx +++ b/src/components/dialogs/Embed.tsx @@ -1,11 +1,10 @@ import {memo, useEffect, useMemo, useState} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {EMBED_SCRIPT} from '#/lib/constants' import {niceDate} from '#/lib/strings/time' import {toShareUrl} from '#/lib/strings/url-helpers' @@ -21,6 +20,7 @@ import { } from '#/components/icons/Chevron' import {CodeBrackets_Stroke2_Corner0_Rounded as CodeBracketsIcon} from '#/components/icons/CodeBrackets' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' export type ColorModeValues = 'system' | 'light' | 'dark' diff --git a/src/components/dialogs/PostInteractionSettingsDialog.tsx b/src/components/dialogs/PostInteractionSettingsDialog.tsx index 70715ca122..4b04c9fefa 100644 --- a/src/components/dialogs/PostInteractionSettingsDialog.tsx +++ b/src/components/dialogs/PostInteractionSettingsDialog.tsx @@ -49,7 +49,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_IOS} from '#/env' -import {app} from '#/lexicons' +import {type app} from '#/lexicons' export type PostInteractionSettingsFormProps = { canSave?: boolean diff --git a/src/components/dialogs/StarterPackDialog.tsx b/src/components/dialogs/StarterPackDialog.tsx index e893e95cc4..6f9888da8c 100644 --- a/src/components/dialogs/StarterPackDialog.tsx +++ b/src/components/dialogs/StarterPackDialog.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Plural, Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {type NavigationProp} from '#/lib/routes/types' import {isNetworkError} from '#/lib/strings/errors' @@ -30,6 +29,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' type StarterPackWithMembership = diff --git a/src/components/dialogs/lists/CreateOrEditListDialog.tsx b/src/components/dialogs/lists/CreateOrEditListDialog.tsx index 17d34f0ac2..361b3e4dd7 100644 --- a/src/components/dialogs/lists/CreateOrEditListDialog.tsx +++ b/src/components/dialogs/lists/CreateOrEditListDialog.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Plural, Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {cleanError} from '#/lib/strings/errors' import {isOverMaxGraphemeCount} from '#/lib/strings/helpers' import {richTextToString} from '#/lib/strings/rich-text-helpers' @@ -28,6 +27,7 @@ import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' const DISPLAY_NAME_MAX_GRAPHEMES = 64 const DESCRIPTION_MAX_GRAPHEMES = 300 diff --git a/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx b/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx index 76c692e582..d494115f18 100644 --- a/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx +++ b/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {cleanError} from '#/lib/strings/errors' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useAllListMembersQuery} from '#/state/queries/list-members' @@ -23,6 +22,7 @@ import { import {Loader} from '#/components/Loader' import * as ProfileCard from '#/components/ProfileCard' import * as Toast from '#/components/Toast' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' export function ListAddRemoveUsersDialog({ diff --git a/src/components/dialogs/nuxs/index.tsx b/src/components/dialogs/nuxs/index.tsx index 6c1533ac8b..4931bf8f41 100644 --- a/src/components/dialogs/nuxs/index.tsx +++ b/src/components/dialogs/nuxs/index.tsx @@ -7,7 +7,6 @@ import { useState, } from 'react' -import {app} from '#/lexicons' import {logger} from '#/logger' import {STALE} from '#/state/queries' import {Nux, useNuxs, useResetNuxs, useSaveNux} from '#/state/queries/nuxs' @@ -30,6 +29,7 @@ import {isSnoozed, snooze, unsnooze} from '#/components/dialogs/nuxs/snoozing' import {type EnabledCheckProps} from '#/components/dialogs/nuxs/utils' import {useAnalytics} from '#/analytics' import {useGeolocation} from '#/geolocation' +import {app} from '#/lexicons' type Context = { activeNux: Nux | undefined diff --git a/src/components/dialogs/nuxs/utils.ts b/src/components/dialogs/nuxs/utils.ts index d8876dbb7b..c975d7fcda 100644 --- a/src/components/dialogs/nuxs/utils.ts +++ b/src/components/dialogs/nuxs/utils.ts @@ -1,8 +1,8 @@ -import {app} from '#/lexicons' import {type UsePreferencesQueryResponse} from '#/state/queries/preferences' import {type SessionAccount} from '#/state/session' import {type AnalyticsContextType} from '#/analytics' import {type Geolocation} from '#/geolocation' +import {app} from '#/lexicons' export type EnabledCheckProps = { features: AnalyticsContextType['features'] diff --git a/src/components/dms/ActionsWrapper.tsx b/src/components/dms/ActionsWrapper.tsx index 3a7b2a9fa8..33a04db0d6 100644 --- a/src/components/dms/ActionsWrapper.tsx +++ b/src/components/dms/ActionsWrapper.tsx @@ -2,10 +2,10 @@ import {View} from 'react-native' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {MessageContextMenu} from '#/components/dms/MessageContextMenu' import {useMessageReplies} from '#/components/dms/MessageReplies' import {SwipeToReply} from '#/components/dms/SwipeToReply' +import {chat} from '#/lexicons' import type * as bsky from '#/types/bsky' export function ActionsWrapper({ diff --git a/src/components/dms/ActionsWrapper.web.tsx b/src/components/dms/ActionsWrapper.web.tsx index 0771c490ed..86c8e0301e 100644 --- a/src/components/dms/ActionsWrapper.web.tsx +++ b/src/components/dms/ActionsWrapper.web.tsx @@ -4,7 +4,6 @@ import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {useMaybeProfileShadow} from '#/state/cache/profile-shadow' import {useConvoActive} from '#/state/messages/convo' @@ -14,6 +13,7 @@ import {MessageContextMenu} from '#/components/dms/MessageContextMenu' import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontalIcon} from '#/components/icons/DotGrid' import {EmojiSmile_Stroke2_Corner0_Rounded as EmojiSmileIcon} from '#/components/icons/Emoji' import * as Toast from '#/components/Toast' +import {chat} from '#/lexicons' import type * as bsky from '#/types/bsky' import {EmojiReactionPicker} from './EmojiReactionPicker' import { diff --git a/src/components/dms/AfterReportConversationDialog.tsx b/src/components/dms/AfterReportConversationDialog.tsx index 541c13066e..705572429c 100644 --- a/src/components/dms/AfterReportConversationDialog.tsx +++ b/src/components/dms/AfterReportConversationDialog.tsx @@ -3,7 +3,6 @@ import {View} from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' import {StackActions, useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' @@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' type ReportDialogParams = { convoId: string diff --git a/src/components/dms/AfterReportDialog.tsx b/src/components/dms/AfterReportDialog.tsx index 0986599fc3..85b92a212b 100644 --- a/src/components/dms/AfterReportDialog.tsx +++ b/src/components/dms/AfterReportDialog.tsx @@ -3,7 +3,6 @@ import {View} from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' import {StackActions, useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' @@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' type ReportDialogParams = { convoId: string diff --git a/src/components/dms/ChatInvite/Card.tsx b/src/components/dms/ChatInvite/Card.tsx index 8d05972614..177eb5d5ae 100644 --- a/src/components/dms/ChatInvite/Card.tsx +++ b/src/components/dms/ChatInvite/Card.tsx @@ -1,8 +1,6 @@ import {View} from 'react-native' import {Plural, Trans} from '@lingui/react/macro' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {makeProfileLink} from '#/lib/routes/links' import {sanitizeHandle} from '#/lib/strings/handles' @@ -11,6 +9,8 @@ import {AvatarBubbles} from '#/components/AvatarBubbles' import {InlineLinkText} from '#/components/Link' import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {useChatInvite} from './Context' /** diff --git a/src/components/dms/ChatInvite/Root.tsx b/src/components/dms/ChatInvite/Root.tsx index e1c491afd3..83796e1e61 100644 --- a/src/components/dms/ChatInvite/Root.tsx +++ b/src/components/dms/ChatInvite/Root.tsx @@ -2,8 +2,6 @@ import {setStringAsync} from 'expo-clipboard' import {useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import { type ChatInvitePreview, @@ -19,6 +17,8 @@ import {type Props as SVGIconProps} from '#/components/icons/common' import {RaisingHand4Finger_Stroke2_Corner2_Rounded as HandIcon} from '#/components/icons/RaisingHand' import {useIntentDialogs} from '#/components/intents/IntentDialogs' import * as Toast from '#/components/Toast' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { type ChatInviteAction, ChatInviteProvider, diff --git a/src/components/dms/EmojiReactionPicker.tsx b/src/components/dms/EmojiReactionPicker.tsx index fa478602e5..e63e0f3ed2 100644 --- a/src/components/dms/EmojiReactionPicker.tsx +++ b/src/components/dms/EmojiReactionPicker.tsx @@ -3,7 +3,6 @@ import {useWindowDimensions, View} from 'react-native' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {chat} from '#/lexicons' import {useSession} from '#/state/session' import {atoms as a, tokens, useTheme} from '#/alf' import * as ContextMenu from '#/components/ContextMenu' @@ -14,6 +13,7 @@ import { import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' import {type TriggerProps} from '#/components/Menu/types' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' import {EmojiPopup} from './EmojiPopup' import {hasAlreadyReacted, hasReachedReactionLimit} from './util' diff --git a/src/components/dms/EmojiReactionPicker.web.tsx b/src/components/dms/EmojiReactionPicker.web.tsx index c53b786ab1..507c04b039 100644 --- a/src/components/dms/EmojiReactionPicker.web.tsx +++ b/src/components/dms/EmojiReactionPicker.web.tsx @@ -3,13 +3,13 @@ import {Pressable, View} from 'react-native' import {useLingui} from '@lingui/react/macro' import {DropdownMenu} from 'radix-ui' -import {chat} from '#/lexicons' import {useSession} from '#/state/session' import {atoms as a, flatten, useTheme} from '#/alf' import * as EmojiPicker from '#/components/EmojiPicker' import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' import * as Menu from '#/components/Menu' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' import {hasAlreadyReacted, hasReachedReactionLimit} from './util' export function EmojiReactionPicker({ diff --git a/src/components/dms/MessageContextMenu.tsx b/src/components/dms/MessageContextMenu.tsx index d513be0564..833cd94bd7 100644 --- a/src/components/dms/MessageContextMenu.tsx +++ b/src/components/dms/MessageContextMenu.tsx @@ -7,7 +7,6 @@ import {RichText} from '@bsky.app/sdk/richtext' import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate' import {richTextToString} from '#/lib/strings/rich-text-helpers' @@ -28,6 +27,7 @@ import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Tra import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' import {IS_NATIVE} from '#/env' +import {chat} from '#/lexicons' import type * as bsky from '#/types/bsky' import {EmojiReactionPicker} from './EmojiReactionPicker' import {canReact, hasReachedReactionLimit} from './util' diff --git a/src/components/dms/MessageItem.tsx b/src/components/dms/MessageItem.tsx index 5add07e564..2a3d895544 100644 --- a/src/components/dms/MessageItem.tsx +++ b/src/components/dms/MessageItem.tsx @@ -22,14 +22,12 @@ import Animated, { ZoomIn, ZoomOut, } from 'react-native-reanimated' -import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {moderateProfile} from '@bsky.app/sdk/moderation' +import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {plural} from '@lingui/core/macro' import {Trans, useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {app, chat} from '#/lexicons' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {sanitizeHandle} from '#/lib/strings/handles' @@ -54,6 +52,8 @@ import * as ProfileCard from '#/components/ProfileCard' import * as Prompt from '#/components/Prompt' import {RichText} from '#/components/RichText' import {Text} from '#/components/Typography' +import {app, chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {DateDivider} from './DateDivider' import {MessageItemEmbed} from './MessageItemEmbed' import {MessageItemInviteEmbed} from './MessageItemInviteEmbed' diff --git a/src/components/dms/MessageItemEmbed.tsx b/src/components/dms/MessageItemEmbed.tsx index 3e44e5d200..7a8dab6219 100644 --- a/src/components/dms/MessageItemEmbed.tsx +++ b/src/components/dms/MessageItemEmbed.tsx @@ -5,11 +5,11 @@ import Animated, { type SharedValue, useAnimatedStyle, } from 'react-native-reanimated' - import {type $Typed} from '@atproto/lex' -import {app} from '#/lexicons' + import {atoms as a, native, useTheme, web} from '#/alf' import {Embed, PostEmbedViewContext} from '#/components/Post/Embed' +import {app} from '#/lexicons' import {MessageContextProvider} from './MessageContext' const BORDER_RADIUS = 20 diff --git a/src/components/dms/MessageItemInviteEmbed.tsx b/src/components/dms/MessageItemInviteEmbed.tsx index 23e0379d43..babf86fe6f 100644 --- a/src/components/dms/MessageItemInviteEmbed.tsx +++ b/src/components/dms/MessageItemInviteEmbed.tsx @@ -5,13 +5,13 @@ import Animated, { type SharedValue, useAnimatedStyle, } from 'react-native-reanimated' - import {type $Typed} from '@atproto/lex' -import {chat} from '#/lexicons' + import {useConvoActive} from '#/state/messages/convo' import {isKnownJoinLinkPreview} from '#/state/queries/join-links' import {atoms as a, native, useTheme, web} from '#/alf' import * as ChatInvite from '#/components/dms/ChatInvite' +import {chat} from '#/lexicons' import {MessageContextProvider} from './MessageContext' const BORDER_RADIUS = 20 diff --git a/src/components/dms/MessageOverlays.tsx b/src/components/dms/MessageOverlays.tsx index 3c0ad83a21..88ac566511 100644 --- a/src/components/dms/MessageOverlays.tsx +++ b/src/components/dms/MessageOverlays.tsx @@ -10,7 +10,6 @@ import {LayoutAnimation} from 'react-native' import {useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {chat} from '#/lexicons' import {useConvoActive} from '#/state/messages/convo' import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache' import {useDialogControl} from '#/components/Dialog' @@ -20,6 +19,7 @@ import {ReportDialog} from '#/components/moderation/ReportDialog' import * as Prompt from '#/components/Prompt' import {usePromptControl} from '#/components/Prompt' import * as Toast from '#/components/Toast' +import {chat} from '#/lexicons' import type * as bsky from '#/types/bsky' type MessageDialogsContextType = { diff --git a/src/components/dms/MessageProfileButton.tsx b/src/components/dms/MessageProfileButton.tsx index 33087eee3d..7c206e941a 100644 --- a/src/components/dms/MessageProfileButton.tsx +++ b/src/components/dms/MessageProfileButton.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {type NavigationProp} from '#/lib/routes/types' import {useGetConvoAvailabilityQuery} from '#/state/queries/messages/get-convo-availability' @@ -16,6 +15,7 @@ import {canBeMessaged} from '#/components/dms/util' import {Message_Stroke2_Corner0_Rounded as Message} from '#/components/icons/Message' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' export function MessageProfileButton({ profile, diff --git a/src/components/dms/MessageReplies.tsx b/src/components/dms/MessageReplies.tsx index 391079fed0..f108c27625 100644 --- a/src/components/dms/MessageReplies.tsx +++ b/src/components/dms/MessageReplies.tsx @@ -1,4 +1,3 @@ -import {chat} from '#/lexicons' import { createContext, useCallback, @@ -9,6 +8,8 @@ import { useState, } from 'react' +import {chat} from '#/lexicons' + /** * How long a message stays highlighted after scrolling to it, before the flash * fades out. diff --git a/src/components/dms/ReactionsDialog.tsx b/src/components/dms/ReactionsDialog.tsx index 2c244b73b2..0e217cda2b 100644 --- a/src/components/dms/ReactionsDialog.tsx +++ b/src/components/dms/ReactionsDialog.tsx @@ -8,7 +8,6 @@ import { } from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {sanitizeHandle} from '#/lib/strings/handles' @@ -23,6 +22,7 @@ import {filterBlockedReactions} from '#/components/dms/util' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {IS_NATIVE, IS_WEB} from '#/env' +import {chat} from '#/lexicons' import type * as bsky from '#/types/bsky' type Reaction = { diff --git a/src/components/dms/SystemMessageGroup.tsx b/src/components/dms/SystemMessageGroup.tsx index a4a5b5f9fa..3d4ab6dc11 100644 --- a/src/components/dms/SystemMessageGroup.tsx +++ b/src/components/dms/SystemMessageGroup.tsx @@ -10,13 +10,13 @@ import Animated, { import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {type SystemMessageGroupItem} from '#/screens/Messages/components/groupSystemMessages' import {atoms as a, useTheme} from '#/alf' import {SystemMessageItem} from '#/components/dms/SystemMessageItem' import {ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown} from '#/components/icons/Chevron' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' const ANIMATION_DURATION_MS = 200 diff --git a/src/components/dms/SystemMessageItem.tsx b/src/components/dms/SystemMessageItem.tsx index 3aad1517fb..07bb408add 100644 --- a/src/components/dms/SystemMessageItem.tsx +++ b/src/components/dms/SystemMessageItem.tsx @@ -1,7 +1,6 @@ import {View} from 'react-native' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {type ConvoItem} from '#/state/messages/convo/types' import {useInviteLinkDialog} from '#/screens/Messages/components/InviteLinkDialogProvider' @@ -10,6 +9,7 @@ import {Button} from '#/components/Button' import {getSystemMessageInfo} from '#/components/dms/getSystemMessageInfo' import {Link} from '#/components/Link' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' export function SystemMessageItem({ item, diff --git a/src/components/dms/getMessageInfo.ts b/src/components/dms/getMessageInfo.ts index c41d1eebe8..afe41c625e 100644 --- a/src/components/dms/getMessageInfo.ts +++ b/src/components/dms/getMessageInfo.ts @@ -1,7 +1,6 @@ import {type I18n} from '@lingui/core' import {msg} from '@lingui/core/macro' -import {app, chat} from '#/lexicons' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import { @@ -9,6 +8,7 @@ import { toBskyAppUrl, toShortUrl, } from '#/lib/strings/url-helpers' +import {app, chat} from '#/lexicons' import * as bsky from '#/types/bsky' export type UserMessageInfo = { diff --git a/src/components/dms/getReactionInfo.ts b/src/components/dms/getReactionInfo.ts index 2c8ddc6f71..477c44fbc3 100644 --- a/src/components/dms/getReactionInfo.ts +++ b/src/components/dms/getReactionInfo.ts @@ -1,9 +1,9 @@ import {type I18n} from '@lingui/core' import {msg} from '@lingui/core/macro' -import {chat} from '#/lexicons' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {isDidBlockedInConvo} from '#/components/dms/getMessageInfo' +import {chat} from '#/lexicons' import * as bsky from '#/types/bsky' export type UserReactionInfo = { diff --git a/src/components/dms/getSystemMessageInfo.ts b/src/components/dms/getSystemMessageInfo.ts index 8163cdf3b5..2262a3eb22 100644 --- a/src/components/dms/getSystemMessageInfo.ts +++ b/src/components/dms/getSystemMessageInfo.ts @@ -1,8 +1,6 @@ import {type MessageDescriptor} from '@lingui/core' import {msg} from '@lingui/core/macro' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {ArrowBoxLeft_Stroke2_Corner0_Rounded as LeaveIcon} from '#/components/icons/ArrowBoxLeft' import {ArrowBoxRight_Stroke2_Corner3_Rounded as JoinIcon} from '#/components/icons/ArrowBoxRight' @@ -16,6 +14,8 @@ import { Unlock_Stroke2_Corner2_Rounded as UnlockIcon, } from '#/components/icons/Lock' import {PencilLine_Stroke2_Corner0_Rounded as PencilIcon} from '#/components/icons/Pencil' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' export type SystemMessageAction = | { diff --git a/src/components/dms/replyPreview.ts b/src/components/dms/replyPreview.ts index 753b611020..e33dd75bae 100644 --- a/src/components/dms/replyPreview.ts +++ b/src/components/dms/replyPreview.ts @@ -1,8 +1,8 @@ import {useLingui} from '@lingui/react/macro' -import * as bsky from '#/types/bsky' -import {app, chat} from '#/lexicons' import {BSKY_APP_HOST, toShortUrl} from '#/lib/strings/url-helpers' +import {app, chat} from '#/lexicons' +import * as bsky from '#/types/bsky' /** * Describes the embed of a quoted message that has no text of its own, so the diff --git a/src/components/dms/util.ts b/src/components/dms/util.ts index 23d4fb3178..135fb0dfaf 100644 --- a/src/components/dms/util.ts +++ b/src/components/dms/util.ts @@ -1,7 +1,6 @@ +import {type $Typed} from '@atproto/lex' import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation' -import {type $Typed} from '@atproto/lex' -import {chat} from '#/lexicons' import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {logger} from '#/logger' @@ -9,6 +8,7 @@ import {type Shadow} from '#/state/cache/profile-shadow' import {type ConvoState, ConvoStatus} from '#/state/messages/convo/types' import {platform} from '#/alf' import {type ReportSubject} from '#/components/moderation/ReportDialog/types' +import {chat} from '#/lexicons' import * as bsky from '#/types/bsky' export const MESSAGE_GAP_THRESHOLD_MS = 60 * 60 * 1000 diff --git a/src/components/feeds/PostFeedVideoGridRow.tsx b/src/components/feeds/PostFeedVideoGridRow.tsx index 252c4ce7e6..54c79c0afe 100644 --- a/src/components/feeds/PostFeedVideoGridRow.tsx +++ b/src/components/feeds/PostFeedVideoGridRow.tsx @@ -1,7 +1,5 @@ import {View} from 'react-native' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {type FeedPostSliceItem} from '#/state/queries/post-feed' import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types' import {atoms as a, useGutters} from '#/alf' @@ -11,6 +9,8 @@ import { VideoPostCardPlaceholder, } from '#/components/VideoPostCard' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' export function PostFeedVideoGridRow({ items: slices, diff --git a/src/components/images/AutoSizedImage.tsx b/src/components/images/AutoSizedImage.tsx index d2484f1009..245489ea63 100644 --- a/src/components/images/AutoSizedImage.tsx +++ b/src/components/images/AutoSizedImage.tsx @@ -10,7 +10,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {type Dimensions} from '#/lib/media/types' import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge' import {atoms as a, useTheme, web} from '#/alf' @@ -18,6 +17,7 @@ import {ArrowsDiagonalOut_Stroke2_Corner0_Rounded as Fullscreen} from '#/compone import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' export function ConstrainedImage({ aspectRatio, diff --git a/src/components/images/Gallery/index.tsx b/src/components/images/Gallery/index.tsx index a0239441b0..442744f4cf 100644 --- a/src/components/images/Gallery/index.tsx +++ b/src/components/images/Gallery/index.tsx @@ -18,7 +18,6 @@ import {utils} from '@bsky.app/alf' import {Trans, useLingui} from '@lingui/react/macro' import debounce from 'lodash.debounce' -import {app} from '#/lexicons' import {type Dimensions} from '#/lib/media/types' import {mergeRefs} from '#/lib/merge-refs' import {useA11y} from '#/state/a11y' @@ -41,6 +40,7 @@ import {PostEmbedViewContext} from '#/components/Post/Embed/types' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_ANDROID, IS_WEB} from '#/env' +import {app} from '#/lexicons' export * from './const' export * from './maybeApplyGalleryOffsetStyles' diff --git a/src/components/images/Gallery/maybeApplyGalleryOffsetStyles.ts b/src/components/images/Gallery/maybeApplyGalleryOffsetStyles.ts index cb314eb71d..75f5421257 100644 --- a/src/components/images/Gallery/maybeApplyGalleryOffsetStyles.ts +++ b/src/components/images/Gallery/maybeApplyGalleryOffsetStyles.ts @@ -1,9 +1,9 @@ import {type ModerationCause, type ModerationUI} from '@bsky.app/sdk/moderation' -import {app} from '#/lexicons' import {unique} from '#/lib/moderation' import {type AppModerationCause} from '#/components/Pills' import {Features, features} from '#/analytics/features' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export const POST_META_NO_CONTENT_OFFSET = {paddingTop: 10} diff --git a/src/components/images/ImageLayoutGrid.tsx b/src/components/images/ImageLayoutGrid.tsx index d7e4db3b6c..cfc423d421 100644 --- a/src/components/images/ImageLayoutGrid.tsx +++ b/src/components/images/ImageLayoutGrid.tsx @@ -2,10 +2,10 @@ import {useRef} from 'react' import {type StyleProp, View, type ViewStyle} from 'react-native' import {type AnimatedRef, useAnimatedRef} from 'react-native-reanimated' -import {app} from '#/lexicons' import {atoms as a, useBreakpoints} from '#/alf' import {type Dimensions} from '#/components/Lightbox/types' import {type PostEmbedViewContext} from '#/components/Post/Embed/types' +import {app} from '#/lexicons' import {GalleryItem} from './ImageLayoutGridItem' interface ImageLayoutGridProps { diff --git a/src/components/images/ImageLayoutGridItem.tsx b/src/components/images/ImageLayoutGridItem.tsx index caca2b060f..65a5578919 100644 --- a/src/components/images/ImageLayoutGridItem.tsx +++ b/src/components/images/ImageLayoutGridItem.tsx @@ -6,7 +6,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {type Dimensions} from '#/lib/media/types' import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge' import {atoms as a, tokens, useTheme} from '#/alf' @@ -14,6 +13,7 @@ import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu' import {type PostEmbedViewContext} from '#/components/Post/Embed/types' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' type EventFunction = (index: number) => void diff --git a/src/components/intents/GroupChatJoinDialog.tsx b/src/components/intents/GroupChatJoinDialog.tsx index 5a7f4edaff..c698219a43 100644 --- a/src/components/intents/GroupChatJoinDialog.tsx +++ b/src/components/intents/GroupChatJoinDialog.tsx @@ -5,7 +5,6 @@ import {Plural, Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {useCallOnce} from '#/lib/once' import {makeProfileLink} from '#/lib/routes/links' @@ -47,6 +46,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {ProfileBadges} from '../ProfileBadges' export function GroupChatJoinDialog() { diff --git a/src/components/interstitials/FeedTrendingTopics.tsx b/src/components/interstitials/FeedTrendingTopics.tsx index e75045f025..7a98538c1e 100644 --- a/src/components/interstitials/FeedTrendingTopics.tsx +++ b/src/components/interstitials/FeedTrendingTopics.tsx @@ -3,7 +3,6 @@ import {Pressable, View} from 'react-native' import {moderateProfile} from '@bsky.app/sdk/moderation' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useModerationOpts} from '#/state/preferences/moderation-opts' import { useTrendingSettings, @@ -30,6 +29,7 @@ import {SubtleHover} from '#/components/SubtleHover' import {useTrendingTopicSeen} from '#/components/TrendingTopics' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' const TOPIC_COUNT = 3 diff --git a/src/components/interstitials/TrendingVideos.tsx b/src/components/interstitials/TrendingVideos.tsx index 5089042333..c719f6c66c 100644 --- a/src/components/interstitials/TrendingVideos.tsx +++ b/src/components/interstitials/TrendingVideos.tsx @@ -1,11 +1,9 @@ import {useCallback, useEffect, useMemo} from 'react' import {ScrollView, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {Trans, useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {VIDEO_FEED_URI} from '#/lib/constants' import {makeCustomFeedLink} from '#/lib/routes/links' import {useTrendingSettingsApi} from '#/state/preferences/trending' @@ -23,6 +21,8 @@ import { CompactVideoPostCardPlaceholder, } from '#/components/VideoPostCard' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' const CARD_WIDTH = 108 diff --git a/src/components/moderation/AppealForm.tsx b/src/components/moderation/AppealForm.tsx index 271a19fc59..f40740f179 100644 --- a/src/components/moderation/AppealForm.tsx +++ b/src/components/moderation/AppealForm.tsx @@ -69,7 +69,7 @@ export function AppealForm({ reason: details, }, // the appeal goes to the labeler that applied the label - {service: `${label.src as DidString}#atproto_labeler`}, + {service: `${label.src}#atproto_labeler`}, ) }, onError: err => { diff --git a/src/components/moderation/LabelsOnMe.tsx b/src/components/moderation/LabelsOnMe.tsx index 91793f4386..2905ae28ce 100644 --- a/src/components/moderation/LabelsOnMe.tsx +++ b/src/components/moderation/LabelsOnMe.tsx @@ -3,7 +3,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Plural} from '@lingui/react/macro' -import {com} from '#/lexicons' import {filterUserFacingLabels} from '#/lib/moderation' import {useSession} from '#/state/session' import {atoms as a} from '#/alf' @@ -18,6 +17,7 @@ import { LabelsOnMeDialog, useLabelsOnMeDialogControl, } from '#/components/moderation/LabelsOnMeDialog' +import {com} from '#/lexicons' export function LabelsOnMe({ labels, diff --git a/src/components/moderation/LabelsOnMeDialog.tsx b/src/components/moderation/LabelsOnMeDialog.tsx index e9ac1afb85..de3f812c08 100644 --- a/src/components/moderation/LabelsOnMeDialog.tsx +++ b/src/components/moderation/LabelsOnMeDialog.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {com} from '#/lexicons' import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' import {useLabelInfo} from '#/lib/moderation/useLabelInfo' import {makeProfileLink} from '#/lib/routes/links' @@ -17,6 +16,7 @@ import * as Dialog from '#/components/Dialog' import {InlineLinkText} from '#/components/Link' import {AppealForm} from '#/components/moderation/AppealForm' import {Text} from '#/components/Typography' +import {com} from '#/lexicons' import {Divider} from '../Divider' export {useDialogControl as useLabelsOnMeDialogControl} from '#/components/Dialog' diff --git a/src/components/moderation/PostAlerts.tsx b/src/components/moderation/PostAlerts.tsx index 5a187f4011..3543cabc14 100644 --- a/src/components/moderation/PostAlerts.tsx +++ b/src/components/moderation/PostAlerts.tsx @@ -8,7 +8,6 @@ import { getModerationCauseKey, unique, } from '#/lib/moderation' -import {app, com} from '#/lexicons' import {useSession} from '#/state/session' import {atoms as a} from '#/alf' import { @@ -16,6 +15,7 @@ import { useLabelsOnMeDialogControl, } from '#/components/moderation/LabelsOnMeDialog' import * as Pills from '#/components/Pills' +import {app, com} from '#/lexicons' export function PostAlerts({ post, diff --git a/src/components/moderation/PostHider.tsx b/src/components/moderation/PostHider.tsx index 6941c085b1..c405dfa676 100644 --- a/src/components/moderation/PostHider.tsx +++ b/src/components/moderation/PostHider.tsx @@ -13,7 +13,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {addStyle} from '#/lib/styles' import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache' @@ -25,6 +24,7 @@ import { useModerationDetailsDialogControl, } from '#/components/moderation/ModerationDetailsDialog' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' interface Props extends React.ComponentProps { disabled: boolean diff --git a/src/components/moderation/ReportDialog/types.ts b/src/components/moderation/ReportDialog/types.ts index bd9c0d247f..7d0ae1c7b6 100644 --- a/src/components/moderation/ReportDialog/types.ts +++ b/src/components/moderation/ReportDialog/types.ts @@ -1,6 +1,7 @@ import {type $Typed} from '@atproto/lex' -import {app, chat} from '#/lexicons' + import type * as Dialog from '#/components/Dialog' +import {app, chat} from '#/lexicons' export type ReportSubjectConvoMessage = { view: 'convo' | 'message' diff --git a/src/components/moderation/ReportDialog/utils/useReportOptions.ts b/src/components/moderation/ReportDialog/utils/useReportOptions.ts index 075a0ec582..b4a2033780 100644 --- a/src/components/moderation/ReportDialog/utils/useReportOptions.ts +++ b/src/components/moderation/ReportDialog/utils/useReportOptions.ts @@ -1,6 +1,7 @@ import {useMemo} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' + import {tools} from '#/lexicons' export type ReportCategory = diff --git a/src/components/verification/VerificationRemovePrompt.tsx b/src/components/verification/VerificationRemovePrompt.tsx index 62307ccd82..ab8eb2be09 100644 --- a/src/components/verification/VerificationRemovePrompt.tsx +++ b/src/components/verification/VerificationRemovePrompt.tsx @@ -2,12 +2,12 @@ import {useCallback} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {logger} from '#/logger' import {useVerificationsRemoveMutation} from '#/state/queries/verification/useVerificationsRemoveMutation' import {type DialogControlProps} from '#/components/Dialog' import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' export {useDialogControl as usePromptControl} from '#/components/Dialog' diff --git a/src/components/verification/VerificationsDialog.tsx b/src/components/verification/VerificationsDialog.tsx index bcb46bd919..7ca28b7224 100644 --- a/src/components/verification/VerificationsDialog.tsx +++ b/src/components/verification/VerificationsDialog.tsx @@ -3,7 +3,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {urls} from '#/lib/constants' import {getUserDisplayName} from '#/lib/getUserDisplayName' import {useModerationOpts} from '#/state/preferences/moderation-opts' @@ -21,6 +20,7 @@ import {Text} from '#/components/Typography' import {type FullVerificationState} from '#/components/verification' import {VerificationRemovePrompt} from '#/components/verification/VerificationRemovePrompt' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' export {useDialogControl} from '#/components/Dialog' diff --git a/src/env/common.ts b/src/env/common.ts index 897c1fd3a9..bcda2e4982 100644 --- a/src/env/common.ts +++ b/src/env/common.ts @@ -1,4 +1,5 @@ import {type DidString} from '@atproto/syntax' + import packageJson from '#/../package.json' /** diff --git a/src/features/liveNow/components/EditLiveDialog.tsx b/src/features/liveNow/components/EditLiveDialog.tsx index 0da9d06210..c2537b2619 100644 --- a/src/features/liveNow/components/EditLiveDialog.tsx +++ b/src/features/liveNow/components/EditLiveDialog.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {differenceInMinutes} from 'date-fns' -import {app} from '#/lexicons' import {useDebouncedValue} from '#/lib/hooks/useDebouncedValue' import {cleanError} from '#/lib/strings/errors' import {definitelyUrl} from '#/lib/strings/url-helpers' @@ -26,6 +25,7 @@ import { useUpsertLiveStatusMutation, } from '#/features/liveNow' import {LinkPreview} from '#/features/liveNow/components/LinkPreview' +import {app} from '#/lexicons' export function EditLiveDialog({ control, diff --git a/src/features/liveNow/components/GoLiveDisabledDialog.tsx b/src/features/liveNow/components/GoLiveDisabledDialog.tsx index 63eddbf55f..3de918d0bd 100644 --- a/src/features/liveNow/components/GoLiveDisabledDialog.tsx +++ b/src/features/liveNow/components/GoLiveDisabledDialog.tsx @@ -1,6 +1,5 @@ import {useCallback, useState} from 'react' import {View} from 'react-native' -import {type AtUriString} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' @@ -15,7 +14,7 @@ import * as Dialog from '#/components/Dialog' import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' -import {app, com, tools} from '#/lexicons' +import {type app, com, tools} from '#/lexicons' export function GoLiveDisabledDialog({ control, @@ -64,7 +63,7 @@ export function DialogInner({ subject: { $type: 'com.atproto.repo.strongRef', // a status view's uri is an at-uri produced by the appview - uri: status.uri as AtUriString, + uri: status.uri, cid: status.cid, }, reason: details, diff --git a/src/features/liveNow/components/LiveStatusDialog.tsx b/src/features/liveNow/components/LiveStatusDialog.tsx index bc03d9da21..a7b455d9e1 100644 --- a/src/features/liveNow/components/LiveStatusDialog.tsx +++ b/src/features/liveNow/components/LiveStatusDialog.tsx @@ -6,7 +6,6 @@ import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {useOpenLink} from '#/lib/hooks/useOpenLink' import {type NavigationProp} from '#/lib/routes/types' import {sanitizeHandle} from '#/lib/strings/handles' @@ -27,6 +26,7 @@ import * as ProfileCard from '#/components/ProfileCard' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {LiveIndicator} from '#/features/liveNow/components/LiveIndicator' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' export function LiveStatusDialog({ diff --git a/src/features/liveNow/utils.ts b/src/features/liveNow/utils.ts index 774b2c6760..a4fb0bbf62 100644 --- a/src/features/liveNow/utils.ts +++ b/src/features/liveNow/utils.ts @@ -1,8 +1,9 @@ import {type I18n} from '@lingui/core' import {plural} from '@lingui/core/macro' import psl from 'psl' -import * as bsky from '#/types/bsky' + import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' /** * Validates a raw status record and returns the typed record, or null if the diff --git a/src/lib/api/feed/author.ts b/src/lib/api/feed/author.ts index e89c26cee0..76e6433f69 100644 --- a/src/lib/api/feed/author.ts +++ b/src/lib/api/feed/author.ts @@ -1,7 +1,7 @@ import {type Client, type XrpcRequestParams} from '@atproto/lex' -import * as bsky from '#/types/bsky' import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {type FeedAPI, type FeedAPIResponse} from './types' type GetAuthorFeedParams = XrpcRequestParams< diff --git a/src/lib/api/feed/demo.ts b/src/lib/api/feed/demo.ts index a2aca5073d..4e4f388408 100644 --- a/src/lib/api/feed/demo.ts +++ b/src/lib/api/feed/demo.ts @@ -1,7 +1,7 @@ import {type Client} from '@atproto/lex' -import {app} from '#/lexicons' import {DEMO_FEED} from '#/lib/demo' +import {app} from '#/lexicons' import {type FeedAPI, type FeedAPIResponse} from './types' export class DemoFeedAPI implements FeedAPI { diff --git a/src/lib/api/feed/home.ts b/src/lib/api/feed/home.ts index db66810dbe..21e72188b4 100644 --- a/src/lib/api/feed/home.ts +++ b/src/lib/api/feed/home.ts @@ -1,8 +1,8 @@ import {type Client} from '@atproto/lex' import {type AtUriString} from '@atproto/syntax' -import {app} from '#/lexicons' import {PROD_DEFAULT_FEED} from '#/lib/constants' +import {app} from '#/lexicons' import {CustomFeedAPI} from './custom' import {FollowingFeedAPI} from './following' import {type FeedAPI, type FeedAPIResponse} from './types' diff --git a/src/lib/api/feed/types.ts b/src/lib/api/feed/types.ts index aaed5e5045..59803a992a 100644 --- a/src/lib/api/feed/types.ts +++ b/src/lib/api/feed/types.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' export interface FeedAPIResponse { cursor?: string diff --git a/src/lib/api/feed/utils.ts b/src/lib/api/feed/utils.ts index f1be1139ab..b6ef738fcc 100644 --- a/src/lib/api/feed/utils.ts +++ b/src/lib/api/feed/utils.ts @@ -1,4 +1,5 @@ import {AtUri} from '@atproto/syntax' + import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants' import {type UsePreferencesQueryResponse} from '#/state/queries/preferences' import {IS_WEB} from '#/env' diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts index 9119914062..af2d54e65a 100644 --- a/src/lib/api/index.ts +++ b/src/lib/api/index.ts @@ -312,7 +312,7 @@ async function resolveEmbed( * unbranded strings. Assert at the boundary until it moves to the * clients. */ - record: resolvedLink.record as com.atproto.repo.strongRef.Main, + record: resolvedLink.record, } } } @@ -474,9 +474,7 @@ async function resolveMedia( title: resolvedLink.title, description: resolvedLink.description, thumb: blob, - associatedRefs: resolvedLink.associatedRefs as - | com.atproto.repo.strongRef.Main[] - | undefined, + associatedRefs: resolvedLink.associatedRefs, }, } } @@ -511,5 +509,5 @@ async function resolveRecord( if (resolvedLink.type !== 'record') { throw Error(t`Expected uri to resolve to a record`) } - return resolvedLink.record as com.atproto.repo.strongRef.Main + return resolvedLink.record } diff --git a/src/lib/constants.ts b/src/lib/constants.ts index c9983e393f..9727be5b69 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -2,8 +2,8 @@ import {type Insets, Platform} from 'react-native' import {type Service} from '@atproto/lex' import {api} from '@bsky.app/sdk' -import {app} from '#/lexicons' import {BLUESKY_PROXY_DID, CHAT_PROXY_DID, IS_DEV} from '#/env' +import {app} from '#/lexicons' export const LOCAL_DEV_SERVICE = Platform.OS === 'android' ? 'http://10.0.2.2:2583' : 'http://localhost:2583' diff --git a/src/lib/hooks/useNotificationHandler.ts b/src/lib/hooks/useNotificationHandler.ts index 888d720fa5..3689d608e0 100644 --- a/src/lib/hooks/useNotificationHandler.ts +++ b/src/lib/hooks/useNotificationHandler.ts @@ -1,10 +1,10 @@ import {useEffect} from 'react' import * as Notifications from 'expo-notifications' +import {AtUri} from '@atproto/syntax' import {useLingui} from '@lingui/react/macro' import {CommonActions, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher' import {logger as notyLogger} from '#/lib/notifications/util' import {type NavigationProp} from '#/lib/routes/types' diff --git a/src/lib/hooks/usePostViewTracking.ts b/src/lib/hooks/usePostViewTracking.ts index 939a2f1c60..e7a9f9bb69 100644 --- a/src/lib/hooks/usePostViewTracking.ts +++ b/src/lib/hooks/usePostViewTracking.ts @@ -1,7 +1,7 @@ import {useCallback, useRef} from 'react' -import {app} from '#/lexicons' import {type Metrics, useAnalytics} from '#/analytics' +import {app} from '#/lexicons' /** * Hook that returns a callback to track post:view events. diff --git a/src/lib/link-meta/link-meta.ts b/src/lib/link-meta/link-meta.ts index 65b1379046..cd4cab66c2 100644 --- a/src/lib/link-meta/link-meta.ts +++ b/src/lib/link-meta/link-meta.ts @@ -1,7 +1,7 @@ -import {app} from '#/lexicons' import {LINK_META_PROXY} from '#/lib/constants' import {getGiphyMetaUri} from '#/lib/strings/embed-player' import {parseStarterPackUri} from '#/lib/strings/starter-pack' +import {app} from '#/lexicons' import {isBskyAppUrl} from '../strings/url-helpers' export enum LikelyType { diff --git a/src/lib/moderation.ts b/src/lib/moderation.ts index 73daea9ee5..9bfbf5423b 100644 --- a/src/lib/moderation.ts +++ b/src/lib/moderation.ts @@ -12,7 +12,7 @@ import { import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {type AppModerationCause} from '#/components/Pills' -import {type app, com} from '#/lexicons' +import {type app, type com} from '#/lexicons' export const ADULT_CONTENT_LABELS = ['sexual', 'nudity', 'porn'] as const export const OTHER_SELF_LABELS = ['graphic-media'] as const diff --git a/src/lib/moderation/useLabelInfo.ts b/src/lib/moderation/useLabelInfo.ts index 4e4326f84c..27ecf0ff83 100644 --- a/src/lib/moderation/useLabelInfo.ts +++ b/src/lib/moderation/useLabelInfo.ts @@ -11,7 +11,7 @@ import { useGlobalLabelStrings, } from '#/lib/moderation/useGlobalLabelStrings' import {useLabelDefinitions} from '#/state/preferences' -import {type app, com} from '#/lexicons' +import {type app, type com} from '#/lexicons' export interface LabelInfo { label: com.atproto.label.defs.Label diff --git a/src/lib/routes/links.ts b/src/lib/routes/links.ts index 814a9bfe5e..405796220f 100644 --- a/src/lib/routes/links.ts +++ b/src/lib/routes/links.ts @@ -1,6 +1,7 @@ import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' + import {isInvalidHandle} from '#/lib/strings/handles' +import {app} from '#/lexicons' export function makeProfileLink( info: { diff --git a/src/lib/strings/starter-pack.ts b/src/lib/strings/starter-pack.ts index 6918c9f661..0dc6218114 100644 --- a/src/lib/strings/starter-pack.ts +++ b/src/lib/strings/starter-pack.ts @@ -1,4 +1,5 @@ import {AtUri} from '@atproto/syntax' + import type * as bsky from '#/types/bsky' export function createStarterPackLinkFromAndroidReferrer( diff --git a/src/lib/strings/url-helpers.ts b/src/lib/strings/url-helpers.ts index e6d8cdffc4..c90f1a6fb9 100644 --- a/src/lib/strings/url-helpers.ts +++ b/src/lib/strings/url-helpers.ts @@ -1,7 +1,7 @@ +import {AtUri} from '@atproto/syntax' import {parse} from 'psl' import TLDs from 'tlds' -import {AtUri} from '@atproto/syntax' import {BSKY_SERVICE} from '#/lib/constants' import {isInvalidHandle} from '#/lib/strings/handles' import {startUriToStarterPackUri} from '#/lib/strings/starter-pack' diff --git a/src/locale/helpers.ts b/src/locale/helpers.ts index 9db8e2fef6..e91c540e83 100644 --- a/src/locale/helpers.ts +++ b/src/locale/helpers.ts @@ -1,9 +1,9 @@ import * as bcp47Match from 'bcp-47-match' import lande from 'lande' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {hasProp} from '#/lib/type-guards' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import { AppLanguage, type Language, diff --git a/src/screens/Bookmarks.tsx b/src/screens/Bookmarks.tsx index 09e7a0498e..c36cb0c0a5 100644 --- a/src/screens/Bookmarks.tsx +++ b/src/screens/Bookmarks.tsx @@ -1,5 +1,6 @@ import {useCallback, useMemo, useState} from 'react' import {View} from 'react-native' +import {type $Typed} from '@atproto/lex' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' @@ -9,9 +10,6 @@ import { useNavigation, } from '@react-navigation/native' -import {type $Typed} from '@atproto/lex' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' import { @@ -36,6 +34,8 @@ import * as toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_IOS} from '#/env' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' type Props = NativeStackScreenProps diff --git a/src/screens/CustomFeed/components/CustomFeedHeader.tsx b/src/screens/CustomFeed/components/CustomFeedHeader.tsx index 231cb5a7a8..a2d4dc56dd 100644 --- a/src/screens/CustomFeed/components/CustomFeedHeader.tsx +++ b/src/screens/CustomFeed/components/CustomFeedHeader.tsx @@ -1,8 +1,8 @@ import {useCallback, useMemo, useState} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' import {TRENDING_HANDLE} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import {makeCustomFeedLink, makeProfileLink} from '#/lib/routes/links' diff --git a/src/screens/CustomFeed/index.tsx b/src/screens/CustomFeed/index.tsx index 72269bde03..6b14df600f 100644 --- a/src/screens/CustomFeed/index.tsx +++ b/src/screens/CustomFeed/index.tsx @@ -5,7 +5,6 @@ import {useIsFocused} from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {TRENDING_DID, TRENDING_HANDLE, VIDEO_FEED_URIS} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {useSetTitle} from '#/lib/hooks/useSetTitle' @@ -43,6 +42,7 @@ import { CustomFeedHeader, CustomFeedHeaderSkeleton, } from './components/CustomFeedHeader' +import {app} from '#/lexicons' type Props = NativeStackScreenProps export function CustomFeedScreen(props: Props) { diff --git a/src/screens/Hashtag.tsx b/src/screens/Hashtag.tsx index 58aca7b26d..1b41f2af83 100644 --- a/src/screens/Hashtag.tsx +++ b/src/screens/Hashtag.tsx @@ -3,7 +3,6 @@ import {type ListRenderItemInfo, View} from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' @@ -28,6 +27,7 @@ import {InlineLinkText} from '#/components/Link' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {SearchError} from '#/components/SearchError' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' const renderItem = ({ item, diff --git a/src/screens/List/ListHiddenScreen.tsx b/src/screens/List/ListHiddenScreen.tsx index fcc0acc71c..f562ad1d96 100644 --- a/src/screens/List/ListHiddenScreen.tsx +++ b/src/screens/List/ListHiddenScreen.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {useGoBack} from '#/lib/hooks/useGoBack' import {sanitizeHandle} from '#/lib/strings/handles' import {logger} from '#/logger' @@ -27,6 +26,7 @@ import {Loader} from '#/components/Loader' import {useHider} from '#/components/moderation/Hider' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' export function ListHiddenScreen({ list, diff --git a/src/screens/Login/LoginForm.tsx b/src/screens/Login/LoginForm.tsx index 21dad934d9..91d92fda3b 100644 --- a/src/screens/Login/LoginForm.tsx +++ b/src/screens/Login/LoginForm.tsx @@ -3,7 +3,6 @@ import {Keyboard, type TextInput, View} from 'react-native' import {LexAuthFactorError} from '@atproto/lex-password-session' import {Trans, useLingui} from '@lingui/react/macro' -import {com} from '#/lexicons' import {DEFAULT_SERVICE, HITSLOP_10, HITSLOP_20} from '#/lib/constants' import {useRequestNotificationsPermission} from '#/lib/notifications/notifications' import {cleanError, isNetworkError} from '#/lib/strings/errors' @@ -33,6 +32,7 @@ import {createStaticClick, InlineLinkText} from '#/components/Link' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' import {IS_IOS, IS_NATIVE} from '#/env' +import {com} from '#/lexicons' import {ConfirmHostingProviderDialog} from './components/ConfirmHostingProviderDialog' import {HostingProviderDialog} from './components/HostingProviderDialog' import {FormContainer} from './FormContainer' diff --git a/src/screens/Messages/ChatList.tsx b/src/screens/Messages/ChatList.tsx index aa616bfa95..88073e204d 100644 --- a/src/screens/Messages/ChatList.tsx +++ b/src/screens/Messages/ChatList.tsx @@ -8,7 +8,6 @@ import { } from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {chat} from '#/lexicons' import {useAppState} from '#/lib/appState' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' @@ -57,6 +56,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAgeAssurance} from '#/ageAssurance' import {IS_NATIVE, IS_WEB} from '#/env' +import {chat} from '#/lexicons' import {ChatDisabled} from './components/ChatDisabled' import {ChatListItem} from './components/ChatListItem' import {InboxRequests} from './components/InboxRequests' diff --git a/src/screens/Messages/Conversation.tsx b/src/screens/Messages/Conversation.tsx index 11db727688..a846817f50 100644 --- a/src/screens/Messages/Conversation.tsx +++ b/src/screens/Messages/Conversation.tsx @@ -16,8 +16,6 @@ import { } from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useViewportZoomLock} from '#/lib/hooks/useViewportZoomLock' import { @@ -47,6 +45,8 @@ import {type ConvoWithDetails, parseConvoView} from '#/components/dms/util' import {Error} from '#/components/Error' import * as Layout from '#/components/Layout' import {IS_LIQUID_GLASS} from '#/env' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {ChatDisabled} from './components/ChatDisabled' import {ChatEnded} from './components/ChatEnded' import {ChatLocked} from './components/ChatLocked' diff --git a/src/screens/Messages/Inbox.tsx b/src/screens/Messages/Inbox.tsx index 781090508d..30e06e3ab2 100644 --- a/src/screens/Messages/Inbox.tsx +++ b/src/screens/Messages/Inbox.tsx @@ -7,8 +7,6 @@ import { type UseInfiniteQueryResult, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {useAppState} from '#/lib/appState' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import { @@ -41,6 +39,8 @@ import {ListFooter} from '#/components/Lists' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {IS_NATIVE} from '#/env' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {IncomingRequestListItem} from './components/IncomingRequestListItem' import {OutgoingRequestListItem} from './components/OutgoingRequestListItem' import {useIsWithinSplitView} from './components/splitView/context' diff --git a/src/screens/Messages/JoinRequest.tsx b/src/screens/Messages/JoinRequest.tsx index d5caea9419..f2cb6b67dc 100644 --- a/src/screens/Messages/JoinRequest.tsx +++ b/src/screens/Messages/JoinRequest.tsx @@ -5,8 +5,6 @@ import {type ThemeName} from '@bsky.app/alf' import {moderateProfile} from '@bsky.app/sdk/moderation' import {Trans, useLingui} from '@lingui/react/macro' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {sanitizeHandle} from '#/lib/strings/handles' import {useModerationOpts} from '#/state/preferences/moderation-opts' @@ -22,6 +20,8 @@ import {PersonGroup_Stroke2_Corner2_Rounded as PersonGroupIcon} from '#/componen import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' const desktopDarkBg = require('../../../assets/images/chat-desktop-bg-dark.webp') const desktopDimBg = require('../../../assets/images/chat-desktop-bg-dim.webp') diff --git a/src/screens/Messages/components/ChatListItem.tsx b/src/screens/Messages/components/ChatListItem.tsx index 05c383e596..657fa8bae3 100644 --- a/src/screens/Messages/components/ChatListItem.tsx +++ b/src/screens/Messages/components/ChatListItem.tsx @@ -9,7 +9,6 @@ import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {chat} from '#/lexicons' import {GestureActionView} from '#/lib/custom-animations/GestureActionView' import {useHaptics} from '#/lib/haptics' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' @@ -53,6 +52,7 @@ import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_NATIVE} from '#/env' +import {chat} from '#/lexicons' import * as bsky from '#/types/bsky' import {useIsWithinSplitView} from './splitView/context' diff --git a/src/screens/Messages/components/IncomingRequestListItem.tsx b/src/screens/Messages/components/IncomingRequestListItem.tsx index 3de9aaef41..2f097a17a1 100644 --- a/src/screens/Messages/components/IncomingRequestListItem.tsx +++ b/src/screens/Messages/components/IncomingRequestListItem.tsx @@ -1,13 +1,13 @@ import {View} from 'react-native' import {Trans} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useSession} from '#/state/session' import {atoms as a, tokens} from '#/alf' import {parseConvoView} from '#/components/dms/util' import {KnownFollowers} from '#/components/KnownFollowers' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' import {ChatListItem, ChatListItemPortal} from './ChatListItem' import {AcceptChatButton, DeleteChatButton, RejectMenu} from './RequestButtons' diff --git a/src/screens/Messages/components/InviteLinkDialog.tsx b/src/screens/Messages/components/InviteLinkDialog.tsx index 959dc4434c..1b247be493 100644 --- a/src/screens/Messages/components/InviteLinkDialog.tsx +++ b/src/screens/Messages/components/InviteLinkDialog.tsx @@ -4,7 +4,6 @@ import {Image} from 'expo-image' import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {shareUrl} from '#/lib/sharing' @@ -34,6 +33,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {chat} from '#/lexicons' import {CopyTextButton} from './CopyTextButton' import {EditTextButton} from './EditTextButton' diff --git a/src/screens/Messages/components/MessageComposer.tsx b/src/screens/Messages/components/MessageComposer.tsx index 2f04b05f0b..51c3221c39 100644 --- a/src/screens/Messages/components/MessageComposer.tsx +++ b/src/screens/Messages/components/MessageComposer.tsx @@ -13,12 +13,11 @@ import {useSafeAreaInsets} from 'react-native-safe-area-context' import {scheduleOnRN} from 'react-native-worklets' import {GlassContainer} from 'expo-glass-effect' import {LinearGradient} from 'expo-linear-gradient' +import {type $Typed} from '@atproto/lex' import {ScrollEdgeEffect} from '@bsky.app/expo-scroll-edge-effect' import {useLingui} from '@lingui/react/macro' import {countGraphemes} from 'unicode-segmenter/grapheme' -import {type $Typed} from '@atproto/lex' -import {chat} from '#/lexicons' import {HITSLOP_10, MAX_DM_GRAPHEME_LENGTH} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' @@ -38,6 +37,7 @@ import {PaperPlaneVertical_Filled_Stroke2_Corner1_Rounded as PaperPlaneIcon} fro import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {IS_ANDROID, IS_IOS, IS_LIQUID_GLASS, IS_NATIVE, IS_WEB} from '#/env' +import {chat} from '#/lexicons' import {type MessageEmbedState} from './MessageInputEmbed' const MIN_HEIGHT = 40 diff --git a/src/screens/Messages/components/MessageInputEmbed.tsx b/src/screens/Messages/components/MessageInputEmbed.tsx index b711e15289..e47373af48 100644 --- a/src/screens/Messages/components/MessageInputEmbed.tsx +++ b/src/screens/Messages/components/MessageInputEmbed.tsx @@ -1,11 +1,11 @@ import {useCallback, useEffect, useMemo, useState} from 'react' import {LayoutAnimation, View} from 'react-native' -import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' +import {AtUri} from '@atproto/syntax' import {moderatePost} from '@bsky.app/sdk/moderation' +import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Trans, useLingui} from '@lingui/react/macro' import {type RouteProp, useNavigation, useRoute} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' import {HITSLOP_20} from '#/lib/constants' import {makeProfileLink} from '#/lib/routes/links' import { diff --git a/src/screens/Messages/components/MessageInputReply.tsx b/src/screens/Messages/components/MessageInputReply.tsx index 2a8b8f7a2d..71008c9f59 100644 --- a/src/screens/Messages/components/MessageInputReply.tsx +++ b/src/screens/Messages/components/MessageInputReply.tsx @@ -1,7 +1,6 @@ import {LayoutAnimation, View} from 'react-native' import {useLingui} from '@lingui/react/macro' -import {chat} from '#/lexicons' import {HITSLOP_20} from '#/lib/constants' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {useConvoActive} from '#/state/messages/convo' @@ -11,6 +10,7 @@ import {useMessageReplies} from '#/components/dms/MessageReplies' import {useReplyPreviewText} from '#/components/dms/replyPreview' import {TimesLarge_Stroke2_Corner0_Rounded as XIcon} from '#/components/icons/Times' import {Text} from '#/components/Typography' +import {chat} from '#/lexicons' /** * The reply staged in the message composer. Renders a preview of the message diff --git a/src/screens/Messages/components/MessagesList.tsx b/src/screens/Messages/components/MessagesList.tsx index 042eaee0ab..1ef81f006d 100644 --- a/src/screens/Messages/components/MessagesList.tsx +++ b/src/screens/Messages/components/MessagesList.tsx @@ -22,10 +22,10 @@ import Animated, { } from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {scheduleOnRN} from 'react-native-worklets' +import {type $Typed} from '@atproto/lex' import {useScrollEdgeEffectRef} from '@bsky.app/expo-scroll-edge-effect' import {RichText} from '@bsky.app/sdk/richtext' -import {type $Typed} from '@atproto/lex' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {mergeRefs} from '#/lib/merge-refs' import {ScrollProvider} from '#/lib/ScrollContext' @@ -64,7 +64,7 @@ import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_ANDROID, IS_NATIVE, IS_WEB} from '#/env' -import {app, chat, type com} from '#/lexicons' +import {app, chat} from '#/lexicons' import * as bsky from '#/types/bsky' import {ChatStatusInfo} from './ChatStatusInfo' import {groupSystemMessages, type RenderItem} from './groupSystemMessages' @@ -574,7 +574,7 @@ export function MessagesList({ record: { uri: post.uri, cid: post.cid, - } as com.atproto.repo.strongRef.Main, + }, } embedView = { diff --git a/src/screens/Messages/components/RequestButtons.tsx b/src/screens/Messages/components/RequestButtons.tsx index 98ac7984ed..f3e7662f0f 100644 --- a/src/screens/Messages/components/RequestButtons.tsx +++ b/src/screens/Messages/components/RequestButtons.tsx @@ -3,7 +3,6 @@ import {Trans, useLingui} from '@lingui/react/macro' import {StackActions, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {chat} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useEmail} from '#/state/email-verification' @@ -41,6 +40,7 @@ import {Loader} from '#/components/Loader' import * as Menu from '#/components/Menu' import {ReportDialog} from '#/components/moderation/ReportDialog' import * as Toast from '#/components/Toast' +import {chat} from '#/lexicons' export function RejectMenu({ convo, diff --git a/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx b/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx index 0099c4c3c3..450bf6da15 100644 --- a/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx +++ b/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx @@ -1,12 +1,10 @@ import {useState} from 'react' import {View} from 'react-native' -import {type AtUriString} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {batchedUpdates} from '#/lib/batchedUpdates' import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted' import {logger} from '#/logger' @@ -22,6 +20,7 @@ import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' const IGNORED_ACCOUNT = 'did:plc:pifkcjimdcfwaxkanzhwxufp' @@ -77,7 +76,7 @@ export function StarterPackCard({ try { followUris = await bulkWriteFollows(pdsClient, appviewClient, dids, { // the starter pack view is still legacy-typed - uri: view.uri as AtUriString, + uri: view.uri, cid: view.cid, }) } catch (e) { diff --git a/src/screens/PostThread/components/LikesStat.tsx b/src/screens/PostThread/components/LikesStat.tsx index f32d91c91c..da402a9651 100644 --- a/src/screens/PostThread/components/LikesStat.tsx +++ b/src/screens/PostThread/components/LikesStat.tsx @@ -1,9 +1,8 @@ import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {moderateProfile} from '@bsky.app/sdk/moderation' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {useModerationOpts} from '#/state/preferences/moderation-opts' @@ -16,6 +15,7 @@ import {useFormatPostStatCount} from '#/components/PostControls/util' import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' const AVI_SIZE = 20 diff --git a/src/screens/PostThread/components/ThreadItemAnchor.tsx b/src/screens/PostThread/components/ThreadItemAnchor.tsx index f4604f52ea..40894999ca 100644 --- a/src/screens/PostThread/components/ThreadItemAnchor.tsx +++ b/src/screens/PostThread/components/ThreadItemAnchor.tsx @@ -1,10 +1,9 @@ import {memo, useMemo} from 'react' import {Text as RNText, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {makeProfileLink} from '#/lib/routes/links' @@ -60,6 +59,7 @@ import {Text} from '#/components/Typography' import {WhoCanReply} from '#/components/WhoCanReply' import {useAnalytics} from '#/analytics' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function ThreadItemAnchor({ diff --git a/src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx b/src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx index 871f30b139..0e986e1f0b 100644 --- a/src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx +++ b/src/screens/PostThread/components/ThreadItemAnchorFollowButton.tsx @@ -4,7 +4,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {logger} from '#/logger' import {useProfileShadow} from '#/state/cache/profile-shadow' import { @@ -18,6 +17,7 @@ import {Check_Stroke2_Corner0_Rounded as CheckIcon} from '#/components/icons/Che import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' import * as Toast from '#/components/Toast' import {IS_IOS} from '#/env' +import {app} from '#/lexicons' import {GrowthHack} from './GrowthHack' export function ThreadItemAnchorFollowButton({ diff --git a/src/screens/PostThread/components/ThreadItemPost.tsx b/src/screens/PostThread/components/ThreadItemPost.tsx index e599d33bcb..2be6097fa3 100644 --- a/src/screens/PostThread/components/ThreadItemPost.tsx +++ b/src/screens/PostThread/components/ThreadItemPost.tsx @@ -1,10 +1,9 @@ import {memo, type ReactNode, useCallback, useMemo, useState} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {MAX_POST_LINES} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {makeProfileLink} from '#/lib/routes/links' @@ -51,6 +50,7 @@ import * as Skele from '#/components/Skeleton' import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' export type ThreadItemPostProps = { item: Extract diff --git a/src/screens/PostThread/components/ThreadItemTreePost.tsx b/src/screens/PostThread/components/ThreadItemTreePost.tsx index 1b23cc18fc..52a951da8f 100644 --- a/src/screens/PostThread/components/ThreadItemTreePost.tsx +++ b/src/screens/PostThread/components/ThreadItemTreePost.tsx @@ -1,10 +1,9 @@ import {memo, useCallback, useMemo, useState} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {MAX_POST_LINES} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {makeProfileLink} from '#/lib/routes/links' @@ -47,6 +46,7 @@ import {RichText} from '#/components/RichText' import * as Skele from '#/components/Skeleton' import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' /** * Mimic the space in PostMeta diff --git a/src/screens/Profile/Header/DisplayName.tsx b/src/screens/Profile/Header/DisplayName.tsx index f642d0a22d..1e663c1bce 100644 --- a/src/screens/Profile/Header/DisplayName.tsx +++ b/src/screens/Profile/Header/DisplayName.tsx @@ -1,13 +1,13 @@ import {View} from 'react-native' import {type ModerationDecision} from '@bsky.app/sdk/moderation' -import {app} from '#/lexicons' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {type Shadow} from '#/state/cache/types' import {atoms as a, platform, useBreakpoints, useTheme} from '#/alf' import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' export function ProfileHeaderDisplayName({ profile, diff --git a/src/screens/Profile/Header/EditProfileDialog.tsx b/src/screens/Profile/Header/EditProfileDialog.tsx index 91701e633a..a3b0a916de 100644 --- a/src/screens/Profile/Header/EditProfileDialog.tsx +++ b/src/screens/Profile/Header/EditProfileDialog.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Plural, Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {MAX_DESCRIPTION, MAX_DISPLAY_NAME, urls} from '#/lib/constants' import {cleanError} from '#/lib/strings/errors' import {isOverMaxGraphemeCount} from '#/lib/strings/helpers' @@ -25,6 +24,7 @@ import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useSimpleVerificationState} from '#/components/verification' +import {app} from '#/lexicons' export function EditProfileDialog({ profile, diff --git a/src/screens/Profile/Header/Handle.tsx b/src/screens/Profile/Header/Handle.tsx index 00697b1b50..9b48ab1959 100644 --- a/src/screens/Profile/Header/Handle.tsx +++ b/src/screens/Profile/Header/Handle.tsx @@ -3,13 +3,13 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {isInvalidHandle, sanitizeHandle} from '#/lib/strings/handles' import {type Shadow} from '#/state/cache/types' import {atoms as a, useTheme, web} from '#/alf' import {NewskieDialog} from '#/components/NewskieDialog' import {Text} from '#/components/Typography' import {IS_IOS, IS_NATIVE} from '#/env' +import {app} from '#/lexicons' export function ProfileHeaderHandle({ profile, diff --git a/src/screens/Profile/Header/Metrics.tsx b/src/screens/Profile/Header/Metrics.tsx index 40db83fa45..27334f6dda 100644 --- a/src/screens/Profile/Header/Metrics.tsx +++ b/src/screens/Profile/Header/Metrics.tsx @@ -2,13 +2,13 @@ import {View} from 'react-native' import {msg, plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {type Shadow} from '#/state/cache/types' import {formatCount} from '#/view/com/util/numeric/format' import {atoms as a, useTheme} from '#/alf' import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' export function ProfileHeaderMetrics({ profile, diff --git a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx index b29cf824b1..d5341e2ad7 100644 --- a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx +++ b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx @@ -32,7 +32,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_IOS} from '#/env' -import {app} from '#/lexicons' +import {type app} from '#/lexicons' import {ProfileHeaderDisplayName} from './DisplayName' import {EditProfileDialog} from './EditProfileDialog' import {ProfileHeaderHandle} from './Handle' diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/Profile/Header/ProfileHeaderStandard.tsx index 0f3eaab88f..7e16019a91 100644 --- a/src/screens/Profile/Header/ProfileHeaderStandard.tsx +++ b/src/screens/Profile/Header/ProfileHeaderStandard.tsx @@ -10,7 +10,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useHaptics} from '#/lib/haptics' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {logger} from '#/logger' @@ -40,6 +39,7 @@ import {useAnalytics} from '#/analytics' import {IS_IOS, IS_NATIVE} from '#/env' import {InviteFriendsDialog} from '#/features/inviteFriends' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import {GermButton} from '../components/GermButton' import {ProfileHeaderDisplayName} from './DisplayName' import {EditProfileDialog} from './EditProfileDialog' diff --git a/src/screens/Profile/Header/Shell.tsx b/src/screens/Profile/Header/Shell.tsx index d00b477df4..800c5d9c96 100644 --- a/src/screens/Profile/Header/Shell.tsx +++ b/src/screens/Profile/Header/Shell.tsx @@ -10,7 +10,6 @@ import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {BACK_HITSLOP} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import {type NavigationProp} from '#/lib/routes/types' @@ -32,6 +31,7 @@ import {useActorStatus} from '#/features/liveNow' import {EditLiveDialog} from '#/features/liveNow/components/EditLiveDialog' import {LiveIndicator} from '#/features/liveNow/components/LiveIndicator' import {LiveStatusDialog} from '#/features/liveNow/components/LiveStatusDialog' +import {app} from '#/lexicons' import {GrowableAvatar} from './GrowableAvatar' import {GrowableBanner} from './GrowableBanner' import {StatusBarShadow} from './StatusBarShadow' diff --git a/src/screens/Profile/Header/index.tsx b/src/screens/Profile/Header/index.tsx index 29eb1092cc..dfd84b3530 100644 --- a/src/screens/Profile/Header/index.tsx +++ b/src/screens/Profile/Header/index.tsx @@ -21,7 +21,7 @@ import {atoms as a, useTheme} from '#/alf' import {Header} from '#/components/Layout' import * as ProfileCard from '#/components/ProfileCard' import {IS_NATIVE} from '#/env' -import {app} from '#/lexicons' +import {type app} from '#/lexicons' import { HeaderLabelerButtons, ProfileHeaderLabeler, diff --git a/src/screens/Profile/KnownFollowers.tsx b/src/screens/Profile/KnownFollowers.tsx index 801db63e2c..af6db54d3f 100644 --- a/src/screens/Profile/KnownFollowers.tsx +++ b/src/screens/Profile/KnownFollowers.tsx @@ -2,7 +2,6 @@ import {useMemo, useState} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import { type CommonNavigatorParams, @@ -17,6 +16,7 @@ import {List} from '#/view/com/util/List' import {ViewHeader} from '#/view/com/util/ViewHeader' import * as Layout from '#/components/Layout' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' function renderItem({ item, diff --git a/src/screens/ProfileList/AboutSection.tsx b/src/screens/ProfileList/AboutSection.tsx index f3944de8b9..85619663a1 100644 --- a/src/screens/ProfileList/AboutSection.tsx +++ b/src/screens/ProfileList/AboutSection.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useSession} from '#/state/session' import {ListMembers} from '#/view/com/lists/ListMembers' import {EmptyState} from '#/view/com/util/EmptyState' @@ -15,6 +14,7 @@ import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {BulletList_Stroke1_Corner0_Rounded as ListIcon} from '#/components/icons/BulletList' import {PersonPlus_Stroke2_Corner0_Rounded as PersonPlusIcon} from '#/components/icons/Person' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' interface SectionRef { scrollToTop: () => void diff --git a/src/screens/ProfileList/components/Header.tsx b/src/screens/ProfileList/components/Header.tsx index 39e2119012..8335cf4851 100644 --- a/src/screens/ProfileList/components/Header.tsx +++ b/src/screens/ProfileList/components/Header.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useHaptics} from '#/lib/haptics' import {makeListLink} from '#/lib/routes/links' import {logger} from '#/logger' @@ -24,6 +23,7 @@ import {Loader} from '#/components/Loader' import {RichText} from '#/components/RichText' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {MoreOptionsMenu} from './MoreOptionsMenu' import {SubscribeMenu} from './SubscribeMenu' diff --git a/src/screens/ProfileList/components/MoreOptionsMenu.tsx b/src/screens/ProfileList/components/MoreOptionsMenu.tsx index 0394475cce..02d9cc7212 100644 --- a/src/screens/ProfileList/components/MoreOptionsMenu.tsx +++ b/src/screens/ProfileList/components/MoreOptionsMenu.tsx @@ -1,10 +1,9 @@ +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {type NavigationProp} from '#/lib/routes/types' import {shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' @@ -37,6 +36,7 @@ import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' export function MoreOptionsMenu({ list, diff --git a/src/screens/ProfileList/components/SubscribeMenu.tsx b/src/screens/ProfileList/components/SubscribeMenu.tsx index 2cb210b0e1..e32dc68f62 100644 --- a/src/screens/ProfileList/components/SubscribeMenu.tsx +++ b/src/screens/ProfileList/components/SubscribeMenu.tsx @@ -2,7 +2,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list' import {atoms as a} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' @@ -13,6 +12,7 @@ import * as Menu from '#/components/Menu' import * as Prompt from '#/components/Prompt' import * as Toast from '#/components/Toast' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' export function SubscribeMenu({list}: {list: app.bsky.graph.defs.ListView}) { const {_} = useLingui() diff --git a/src/screens/ProfileList/index.tsx b/src/screens/ProfileList/index.tsx index de361fb57d..f91e2fe896 100644 --- a/src/screens/ProfileList/index.tsx +++ b/src/screens/ProfileList/index.tsx @@ -1,6 +1,7 @@ import {useCallback, useMemo, useRef, useState} from 'react' import {View} from 'react-native' import {useAnimatedRef} from 'react-native-reanimated' +import {AtUri} from '@atproto/syntax' import {moderateUserList, type ModerationOpts} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -8,8 +9,6 @@ import {Trans} from '@lingui/react/macro' import {useIsFocused} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {useSetTitle} from '#/lib/hooks/useSetTitle' import { @@ -39,6 +38,7 @@ import * as Layout from '#/components/Layout' import {Loader} from '#/components/Loader' import * as Hider from '#/components/moderation/Hider' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import {AboutSection} from './AboutSection' import {ErrorScreen} from './components/ErrorScreen' import {Header} from './components/Header' diff --git a/src/screens/SavedFeeds.tsx b/src/screens/SavedFeeds.tsx index 9d54bb2022..a96bb69e08 100644 --- a/src/screens/SavedFeeds.tsx +++ b/src/screens/SavedFeeds.tsx @@ -9,7 +9,6 @@ import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {RECOMMENDED_SAVED_FEEDS, TIMELINE_SAVED_FEED} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import { @@ -43,6 +42,7 @@ import {InlineLinkText} from '#/components/Link' import {Loader} from '#/components/Loader' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' type Props = NativeStackScreenProps export function SavedFeeds({}: Props) { diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx index ceffcf4af2..d8ee29112f 100644 --- a/src/screens/Search/Explore.tsx +++ b/src/screens/Search/Explore.tsx @@ -4,7 +4,6 @@ import {Trans, useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' import * as bcp47Match from 'bcp-47-match' -import {app} from '#/lexicons' import {popularInterests, useInterestsDisplayNames} from '#/lib/interests' import {cleanError} from '#/lib/strings/errors' import {sanitizeHandle} from '#/lib/strings/handles' @@ -64,6 +63,7 @@ import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' import {type Metrics, useAnalytics} from '#/analytics' import {ExploreScreenLiveEventFeedsBanner} from '#/features/liveEvents/components/ExploreScreenLiveEventFeedsBanner' +import {app} from '#/lexicons' import * as ModuleHeader from './components/ModuleHeader' import { SuggestedAccountsTabBar, diff --git a/src/screens/Search/SearchResults.tsx b/src/screens/Search/SearchResults.tsx index 12d1603a7f..276d646990 100644 --- a/src/screens/Search/SearchResults.tsx +++ b/src/screens/Search/SearchResults.tsx @@ -2,7 +2,6 @@ import {memo, useCallback, useMemo, useState} from 'react' import {ActivityIndicator, View} from 'react-native' import {Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {urls} from '#/lib/constants' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' import {useCallOnce} from '#/lib/once' @@ -37,6 +36,7 @@ import {ListFooter} from '#/components/Lists' import {SearchError} from '#/components/SearchError' import {Text} from '#/components/Typography' import {type Metrics, useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' let SearchResults = ({ diff --git a/src/screens/Search/components/ModuleHeader.tsx b/src/screens/Search/components/ModuleHeader.tsx index 25e59b6102..282dd4d76a 100644 --- a/src/screens/Search/components/ModuleHeader.tsx +++ b/src/screens/Search/components/ModuleHeader.tsx @@ -1,8 +1,7 @@ import {useMemo} from 'react' import {View} from 'react-native' - import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' + import {PressableScale} from '#/lib/custom-animations/PressableScale' import {makeCustomFeedLink} from '#/lib/routes/links' import {UserAvatar} from '#/view/com/util/UserAvatar' @@ -15,6 +14,7 @@ import {MagnifyingGlass_Stroke2_Corner0_Rounded as SearchIcon} from '#/component import {Link} from '#/components/Link' import {Text, type TextProps} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' export function Container({ style, diff --git a/src/screens/Search/components/StarterPackCard.tsx b/src/screens/Search/components/StarterPackCard.tsx index 6eea0fb134..eff60a02a4 100644 --- a/src/screens/Search/components/StarterPackCard.tsx +++ b/src/screens/Search/components/StarterPackCard.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useSession} from '#/state/session' @@ -19,6 +18,7 @@ import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {useStarterPackLink} from '#/components/StarterPack/StarterPackCard' import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function StarterPackCard({ diff --git a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx index e60cbd3d92..d4527455e6 100644 --- a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx +++ b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {type InfiniteData} from '@tanstack/react-query' -import {app} from '#/lexicons' import {popularInterests, useInterestsDisplayNames} from '#/lib/interests' import {logger} from '#/logger' import {usePreferencesQuery} from '#/state/queries/preferences' @@ -14,6 +13,7 @@ import {boostInterests, InterestTabs} from '#/components/InterestTabs' import * as ProfileCard from '#/components/ProfileCard' import {SubtleHover} from '#/components/SubtleHover' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' export function useLoadEnoughProfiles({ diff --git a/src/screens/Search/modules/ExploreTrendingTopics.tsx b/src/screens/Search/modules/ExploreTrendingTopics.tsx index cca16fe685..3c9e804f75 100644 --- a/src/screens/Search/modules/ExploreTrendingTopics.tsx +++ b/src/screens/Search/modules/ExploreTrendingTopics.tsx @@ -1,11 +1,10 @@ import {useMemo} from 'react' import {Pressable, View} from 'react-native' import {Image} from 'expo-image' -import {RichText as RichTextApi} from '@bsky.app/sdk/richtext' import {moderateProfile} from '@bsky.app/sdk/moderation' +import {RichText as RichTextApi} from '@bsky.app/sdk/richtext' import {Plural, Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {useModerationOpts} from '#/state/preferences/moderation-opts' import { useTrendingSettings, @@ -28,6 +27,7 @@ import {SubtleHover} from '#/components/SubtleHover' import {useTrendingTopicSeen} from '#/components/TrendingTopics' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import * as ModuleHeader from '../components/ModuleHeader' const IMAGE_SIZE = 56 diff --git a/src/screens/Search/modules/ExploreTrendingVideos.tsx b/src/screens/Search/modules/ExploreTrendingVideos.tsx index 51accf568e..86eafbc54c 100644 --- a/src/screens/Search/modules/ExploreTrendingVideos.tsx +++ b/src/screens/Search/modules/ExploreTrendingVideos.tsx @@ -1,14 +1,12 @@ import {useMemo} from 'react' import {ScrollView, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useFocusEffect} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {VIDEO_FEED_URI} from '#/lib/constants' import {makeCustomFeedLink} from '#/lib/routes/links' import {RQKEY, usePostFeedQuery} from '#/state/queries/post-feed' @@ -23,6 +21,8 @@ import { CompactVideoPostCardPlaceholder, } from '#/components/VideoPostCard' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' const CARD_WIDTH = 100 diff --git a/src/screens/Settings/ActivityPrivacySettings.tsx b/src/screens/Settings/ActivityPrivacySettings.tsx index 73fe99d033..d566947cd1 100644 --- a/src/screens/Settings/ActivityPrivacySettings.tsx +++ b/src/screens/Settings/ActivityPrivacySettings.tsx @@ -11,13 +11,13 @@ import { useNotificationDeclarationMutation, useNotificationDeclarationQuery, } from '#/state/queries/activity-subscriptions' -import {app} from '#/lexicons' import {atoms as a, useTheme} from '#/alf' import {Admonition} from '#/components/Admonition' import * as Toggle from '#/components/forms/Toggle' import {BellRinging_Stroke2_Corner0_Rounded as BellRingingIcon} from '#/components/icons/BellRinging' import * as Layout from '#/components/Layout' import {Loader} from '#/components/Loader' +import {app} from '#/lexicons' import * as SettingsList from './components/SettingsList' import {ItemTextWithSubtitle} from './NotificationSettings/components/ItemTextWithSubtitle' diff --git a/src/screens/Settings/AutomationLabelSettings.tsx b/src/screens/Settings/AutomationLabelSettings.tsx index 65ce732a0e..480f35a972 100644 --- a/src/screens/Settings/AutomationLabelSettings.tsx +++ b/src/screens/Settings/AutomationLabelSettings.tsx @@ -1,10 +1,9 @@ import {View} from 'react-native' +import {type $Typed} from '@atproto/lex' import {Trans, useLingui} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' import {useQueryClient} from '@tanstack/react-query' -import {type $Typed} from '@atproto/lex' -import {com} from '#/lexicons' import {type CommonNavigatorParams} from '#/lib/routes/types' import {RQKEY_ROOT as POST_FEED_RQKEY_ROOT} from '#/state/queries/post-feed' import { @@ -23,6 +22,7 @@ import {Text} from '#/components/Typography' import {useSimpleVerificationState} from '#/components/verification' import {VerificationCheck} from '#/components/verification/VerificationCheck' import {useAnalytics} from '#/analytics' +import {com} from '#/lexicons' import * as bsky from '#/types/bsky' type Props = NativeStackScreenProps< diff --git a/src/screens/Settings/PrivacyAndSecuritySettings.tsx b/src/screens/Settings/PrivacyAndSecuritySettings.tsx index deb19cda2d..d11428756c 100644 --- a/src/screens/Settings/PrivacyAndSecuritySettings.tsx +++ b/src/screens/Settings/PrivacyAndSecuritySettings.tsx @@ -3,7 +3,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {type CommonNavigatorParams} from '#/lib/routes/types' import {useNotificationDeclarationQuery} from '#/state/queries/activity-subscriptions' import {useAppPasswordsQuery} from '#/state/queries/app-passwords' @@ -17,6 +16,7 @@ import {Key_Stroke2_Corner2_Rounded as KeyIcon} from '#/components/icons/Key' import {ShieldCheck_Stroke2_Corner0_Rounded as ShieldIcon} from '#/components/icons/Shield' import * as Layout from '#/components/Layout' import {InlineLinkText} from '#/components/Link' +import {app} from '#/lexicons' import {Email2FAToggle} from './components/Email2FAToggle' import {PwiOptOut} from './components/PwiOptOut' import {ItemTextWithSubtitle} from './NotificationSettings/components/ItemTextWithSubtitle' diff --git a/src/screens/Settings/Settings.tsx b/src/screens/Settings/Settings.tsx index b2b9c878c6..f2bc6e412d 100644 --- a/src/screens/Settings/Settings.tsx +++ b/src/screens/Settings/Settings.tsx @@ -7,7 +7,6 @@ import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {HELP_DESK_URL, HITSLOP_10} from '#/lib/constants' import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher' import {useApplyPullRequestOTAUpdate} from '#/lib/hooks/useOTAUpdates' @@ -69,6 +68,7 @@ import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_INTERNAL, IS_IOS, IS_NATIVE} from '#/env' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import {device, useStorage} from '#/storage' import {useActivitySubscriptionsNudged} from '#/storage/hooks/activity-subscriptions-nudged' diff --git a/src/screens/Settings/components/ChangeHandleDialog.tsx b/src/screens/Settings/components/ChangeHandleDialog.tsx index 9da80b949e..585e2dc2a0 100644 --- a/src/screens/Settings/components/ChangeHandleDialog.tsx +++ b/src/screens/Settings/components/ChangeHandleDialog.tsx @@ -15,7 +15,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useMutation, useQueryClient} from '@tanstack/react-query' -import {com} from '#/lexicons' import {HITSLOP_10, urls} from '#/lib/constants' import {cleanError} from '#/lib/strings/errors' import { @@ -46,6 +45,7 @@ import {InlineLinkText} from '#/components/Link' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' import {useSimpleVerificationState} from '#/components/verification' +import {com} from '#/lexicons' import {CopyButton} from './CopyButton' export function ChangeHandleDialog({ diff --git a/src/screens/Settings/components/PwiOptOut.tsx b/src/screens/Settings/components/PwiOptOut.tsx index 7229622ad0..826b427e31 100644 --- a/src/screens/Settings/components/PwiOptOut.tsx +++ b/src/screens/Settings/components/PwiOptOut.tsx @@ -1,5 +1,6 @@ import {useCallback} from 'react' import {View} from 'react-native' +import {type $Typed} from '@atproto/lex' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' @@ -8,12 +9,11 @@ import { useProfileQuery, useProfileUpdateMutation, } from '#/state/queries/profile' -import {type $Typed} from '@atproto/lex' -import {com} from '#/lexicons' import {useSession} from '#/state/session' import {atoms as a, useTheme} from '#/alf' import * as Toggle from '#/components/forms/Toggle' import {Text} from '#/components/Typography' +import {com} from '#/lexicons' import * as bsky from '#/types/bsky' export function PwiOptOut() { diff --git a/src/screens/Signup/StepHandle/HandleSuggestions/index.tsx b/src/screens/Signup/StepHandle/HandleSuggestions/index.tsx index afc0b0e61b..929e74093d 100644 --- a/src/screens/Signup/StepHandle/HandleSuggestions/index.tsx +++ b/src/screens/Signup/StepHandle/HandleSuggestions/index.tsx @@ -1,10 +1,10 @@ import {Sift, SiftItem} from '@bsky.app/sift' import {Trans, useLingui} from '@lingui/react/macro' -import {com} from '#/lexicons' import {atoms as a, useTheme} from '#/alf' import {Portal} from '#/components/Portal' import {Text} from '#/components/Typography' +import {com} from '#/lexicons' import {type HandleSuggestionsProps} from './shared' type Suggestion = com.atproto.temp.checkHandleAvailability.Suggestion & { diff --git a/src/screens/Signup/StepHandle/HandleSuggestions/shared.ts b/src/screens/Signup/StepHandle/HandleSuggestions/shared.ts index 4b14390f69..ea840f6e5d 100644 --- a/src/screens/Signup/StepHandle/HandleSuggestions/shared.ts +++ b/src/screens/Signup/StepHandle/HandleSuggestions/shared.ts @@ -1,4 +1,5 @@ import {type UseSiftReturn} from '@bsky.app/sift' + import {com} from '#/lexicons' export type HandleSuggestionsProps = { diff --git a/src/screens/Signup/StepInfo/Policies.tsx b/src/screens/Signup/StepInfo/Policies.tsx index a89ce23592..fa77cebf72 100644 --- a/src/screens/Signup/StepInfo/Policies.tsx +++ b/src/screens/Signup/StepInfo/Policies.tsx @@ -4,11 +4,11 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {com} from '#/lexicons' import {atoms as a, useTheme} from '#/alf' import {Admonition} from '#/components/Admonition' import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' +import {com} from '#/lexicons' export const Policies = ({ serviceDescription, diff --git a/src/screens/Signup/index.tsx b/src/screens/Signup/index.tsx index 14c78b43f3..644af956a2 100644 --- a/src/screens/Signup/index.tsx +++ b/src/screens/Signup/index.tsx @@ -6,7 +6,6 @@ import Animated, {FadeIn, LayoutAnimationConfig} from 'react-native-reanimated' import {tokens} from '@bsky.app/alf' import {Trans, useLingui} from '@lingui/react/macro' -import {app} from '#/lexicons' import {FEEDBACK_FORM_URL} from '#/lib/constants' import {logger} from '#/logger' import {useServiceQuery} from '#/state/queries/service' @@ -32,6 +31,7 @@ import {ScreenTransition} from '#/components/ScreenTransition' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {GCP_PROJECT_ID, IS_ANDROID} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function Signup({onPressBack}: {onPressBack: () => void}) { diff --git a/src/screens/StarterPack/StarterPackLandingScreen.tsx b/src/screens/StarterPack/StarterPackLandingScreen.tsx index 4675f1508c..a5a7c3c9f6 100644 --- a/src/screens/StarterPack/StarterPackLandingScreen.tsx +++ b/src/screens/StarterPack/StarterPackLandingScreen.tsx @@ -1,13 +1,12 @@ import {useEffect, useState} from 'react' import {Pressable, View} from 'react-native' import Animated, {FadeIn, FadeOut} from 'react-native-reanimated' +import {AtUri} from '@atproto/syntax' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {JOINED_THIS_WEEK} from '#/lib/constants' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {createStarterPackGooglePlayUri} from '#/lib/strings/starter-pack' @@ -35,6 +34,7 @@ import {RichText} from '#/components/RichText' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB, IS_WEB_MOBILE_ANDROID} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' const AnimatedPressable = Animated.createAnimatedComponent(Pressable) diff --git a/src/screens/StarterPack/StarterPackScreen.tsx b/src/screens/StarterPack/StarterPackScreen.tsx index 9ecb2095a4..658241c660 100644 --- a/src/screens/StarterPack/StarterPackScreen.tsx +++ b/src/screens/StarterPack/StarterPackScreen.tsx @@ -1,7 +1,7 @@ import {useCallback, useEffect, useState} from 'react' import {View} from 'react-native' import {Image} from 'expo-image' -import {type AtUriString, AtUri} from '@atproto/syntax' +import {AtUri} from '@atproto/syntax' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {msg} from '@lingui/core/macro' @@ -11,7 +11,6 @@ import {useNavigation} from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {batchedUpdates} from '#/lib/batchedUpdates' import {HITSLOP_20} from '#/lib/constants' import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted' @@ -74,6 +73,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' type StarterPackScreeProps = NativeStackScreenProps< @@ -377,7 +377,7 @@ function Header({ try { followUris = await bulkWriteFollows(pdsClient, appviewClient, dids, { // the starter pack view is still legacy-typed - uri: starterPack.uri as AtUriString, + uri: starterPack.uri, cid: starterPack.cid, }) } catch (e) { diff --git a/src/screens/StarterPack/Wizard/State.tsx b/src/screens/StarterPack/Wizard/State.tsx index c6dbb70910..b28a0bd728 100644 --- a/src/screens/StarterPack/Wizard/State.tsx +++ b/src/screens/StarterPack/Wizard/State.tsx @@ -1,9 +1,9 @@ import {createContext, useContext, useReducer} from 'react' import {msg, plural} from '@lingui/core/macro' -import {app} from '#/lexicons' import {STARTER_PACK_MAX_SIZE} from '#/lib/constants' import * as Toast from '#/components/Toast' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' const steps = ['Details', 'Profiles', 'Feeds'] as const diff --git a/src/screens/StarterPack/Wizard/StepFeeds.tsx b/src/screens/StarterPack/Wizard/StepFeeds.tsx index 4d1e201aaa..a0b702bd59 100644 --- a/src/screens/StarterPack/Wizard/StepFeeds.tsx +++ b/src/screens/StarterPack/Wizard/StepFeeds.tsx @@ -4,7 +4,6 @@ import {KeyboardAwareScrollView} from 'react-native-keyboard-controller' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {DISCOVER_FEED_URI} from '#/lib/constants' import {useA11y} from '#/state/a11y' import { @@ -21,6 +20,7 @@ import {Loader} from '#/components/Loader' import {ScreenTransition} from '#/components/ScreenTransition' import {WizardFeedCard} from '#/components/StarterPack/Wizard/WizardListCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' function keyExtractor(item: app.bsky.feed.defs.GeneratorView) { return item.uri diff --git a/src/screens/StarterPack/Wizard/index.tsx b/src/screens/StarterPack/Wizard/index.tsx index 7e70af93f9..c5596d70e4 100644 --- a/src/screens/StarterPack/Wizard/index.tsx +++ b/src/screens/StarterPack/Wizard/index.tsx @@ -3,6 +3,7 @@ import {Keyboard, View} from 'react-native' import {KeyboardAwareScrollView} from 'react-native-keyboard-controller' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {Image} from 'expo-image' +import {AtUri} from '@atproto/syntax' import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -10,8 +11,6 @@ import {Plural, Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {STARTER_PACK_MAX_SIZE} from '#/lib/constants' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import { @@ -54,6 +53,7 @@ import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' import {Provider} from './State' diff --git a/src/screens/Topic.tsx b/src/screens/Topic.tsx index fa5a69dd0f..e81d7a773e 100644 --- a/src/screens/Topic.tsx +++ b/src/screens/Topic.tsx @@ -3,7 +3,6 @@ import {type ListRenderItemInfo, View} from 'react-native' import {useLingui} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {HITSLOP_10} from '#/lib/constants' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' @@ -21,6 +20,7 @@ import {Button, ButtonIcon} from '#/components/Button' import {ArrowOutOfBoxModified_Stroke2_Corner2_Rounded as Share} from '#/components/icons/ArrowOutOfBox' import * as Layout from '#/components/Layout' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' const renderItem = ({ item, diff --git a/src/screens/VideoFeed/index.tsx b/src/screens/VideoFeed/index.tsx index 1891eb2912..0f8f8d1a39 100644 --- a/src/screens/VideoFeed/index.tsx +++ b/src/screens/VideoFeed/index.tsx @@ -25,6 +25,7 @@ import {useEvent, useEventListener} from 'expo' import {Image, type ImageStyle} from 'expo-image' import {LinearGradient} from 'expo-linear-gradient' import {createVideoPlayer, type VideoPlayer, VideoView} from 'expo-video' +import {AtUri} from '@atproto/syntax' import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {Trans, useLingui} from '@lingui/react/macro' @@ -37,8 +38,6 @@ import { } from '@react-navigation/native' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {HITSLOP_20} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' @@ -99,6 +98,7 @@ import {RichText} from '#/components/RichText' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_ANDROID} from '#/env' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' import {Scrubber, VIDEO_PLAYER_BOTTOM_INSET} from './components/Scrubber' diff --git a/src/state/cache/post-shadow.ts b/src/state/cache/post-shadow.ts index 59b60a79f4..72d9571486 100644 --- a/src/state/cache/post-shadow.ts +++ b/src/state/cache/post-shadow.ts @@ -1,10 +1,8 @@ -import {type AtUriString} from '@atproto/syntax' import {useEffect, useMemo, useState} from 'react' +import {type AtUriString} from '@atproto/syntax' import {type QueryClient} from '@tanstack/react-query' import {EventEmitter} from 'eventemitter3' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {batchedUpdates} from '#/lib/batchedUpdates' import {findAllPostsInQueryData as findAllPostsInBookmarksQueryData} from '#/state/queries/bookmarks/useBookmarksQuery' import {findAllPostsInQueryData as findAllPostsInExploreFeedPreviewsQueryData} from '#/state/queries/explore-feed-previews' @@ -13,6 +11,8 @@ import {findAllPostsInQueryData as findAllPostsInFeedQueryData} from '#/state/qu import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes' import {findAllPostsInQueryData as findAllPostsInSearchQueryData} from '#/state/queries/search-posts-v2' import {findAllPostsInQueryData as findAllPostsInThreadV2QueryData} from '#/state/queries/usePostThread/queryCache' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {castAsShadow, type Shadow} from './types' export type {Shadow} from './types' diff --git a/src/state/cache/profile-shadow.ts b/src/state/cache/profile-shadow.ts index a476cb69c9..74fc5885bb 100644 --- a/src/state/cache/profile-shadow.ts +++ b/src/state/cache/profile-shadow.ts @@ -2,7 +2,6 @@ import {useEffect, useMemo, useState} from 'react' import {type QueryClient} from '@tanstack/react-query' import {EventEmitter} from 'eventemitter3' -import {app} from '#/lexicons' import {batchedUpdates} from '#/lib/batchedUpdates' import {findAllProfilesInQueryData as findAllProfilesInActivitySubscriptionsQueryData} from '#/state/queries/activity-subscriptions' import {findAllProfilesInQueryData as findAllProfilesInActorSearchQueryData} from '#/state/queries/actor-search' @@ -33,6 +32,7 @@ import {findAllProfilesInQueryData as findAllProfilesInSuggestedUsersForDiscover import {findAllProfilesInQueryData as findAllProfilesInSuggestedUsersForExploreQueryData} from '#/state/queries/trending/useGetSuggestedUsersForExploreQuery' import {findAllProfilesInQueryData as findAllProfilesInSuggestedUsersForSeeMoreQueryData} from '#/state/queries/trending/useGetSuggestedUsersForSeeMoreQuery' import {findAllProfilesInQueryData as findAllProfilesInPostThreadV2QueryData} from '#/state/queries/usePostThread/queryCache' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' import {castAsShadow, type Shadow} from './types' diff --git a/src/state/messages/convo/agent.ts b/src/state/messages/convo/agent.ts index 85a98d32c7..73094dc7f7 100644 --- a/src/state/messages/convo/agent.ts +++ b/src/state/messages/convo/agent.ts @@ -1,9 +1,8 @@ +import {type $Typed, type Client, XrpcResponseError} from '@atproto/lex' import {type DidString, toDatetimeString} from '@atproto/syntax' -import {type Client, XrpcResponseError, type $Typed} from '@atproto/lex' import {EventEmitter} from 'eventemitter3' import {nanoid} from 'nanoid/non-secure' -import * as bsky from '#/types/bsky' import {networkRetry} from '#/lib/async/retry' import { isErrorMaybeAppPasswordPermissions, @@ -43,6 +42,7 @@ import { } from '#/components/dms/util' import {IS_NATIVE} from '#/env' import {app, chat} from '#/lexicons' +import * as bsky from '#/types/bsky' const logger = Logger.create(Logger.Context.ConversationAgent) diff --git a/src/state/messages/convo/index.tsx b/src/state/messages/convo/index.tsx index 74cbfb6d10..58a465dc13 100644 --- a/src/state/messages/convo/index.tsx +++ b/src/state/messages/convo/index.tsx @@ -9,8 +9,6 @@ import { import {useFocusEffect} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {chat} from '#/lexicons' import {useAppState} from '#/lib/appState' import {Convo} from '#/state/messages/convo/agent' import { @@ -31,6 +29,8 @@ import {RQKEY_ROOT as ListConvosQueryKeyRoot} from '#/state/queries/messages/lis import {RQKEY as createProfileQueryKey} from '#/state/queries/profile' import {useChatClient} from '#/state/session' import {type GroupConvoMember} from '#/components/dms/util' +import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' export * from '#/state/messages/convo/util' diff --git a/src/state/messages/convo/types.ts b/src/state/messages/convo/types.ts index 4b0dfe45a1..88e9e2cbb3 100644 --- a/src/state/messages/convo/types.ts +++ b/src/state/messages/convo/types.ts @@ -1,4 +1,4 @@ -import {type Client, type $Typed} from '@atproto/lex' +import {type $Typed, type Client} from '@atproto/lex' import {type MessagesEventBus} from '#/state/messages/events/agent' import {type ConvoWithDetails} from '#/components/dms/util' diff --git a/src/state/queries/bookmarks/useBookmarkMutation.ts b/src/state/queries/bookmarks/useBookmarkMutation.ts index f789f628f1..4ba0d1d7f5 100644 --- a/src/state/queries/bookmarks/useBookmarkMutation.ts +++ b/src/state/queries/bookmarks/useBookmarkMutation.ts @@ -31,7 +31,7 @@ export function useBookmarkMutation() { if (args.action === 'create') { updatePostShadow(qc, args.post.uri, {bookmarked: true}) await client.call(app.bsky.bookmark.createBookmark, { - uri: args.post.uri as AtUriString, + uri: args.post.uri, cid: args.post.cid, }) } else if (args.action === 'delete') { diff --git a/src/state/queries/bookmarks/useBookmarksQuery.ts b/src/state/queries/bookmarks/useBookmarksQuery.ts index cc0119aeba..adb12a47ce 100644 --- a/src/state/queries/bookmarks/useBookmarksQuery.ts +++ b/src/state/queries/bookmarks/useBookmarksQuery.ts @@ -1,3 +1,5 @@ +import {type $Typed} from '@atproto/lex' +import {AtUri} from '@atproto/syntax' import { type InfiniteData, type QueryClient, @@ -10,8 +12,6 @@ import { embedViewRecordToPostView, getEmbeddedPost, } from '#/state/queries/util' -import {type $Typed} from '@atproto/lex' -import {AtUri} from '@atproto/syntax' import {useAppviewClient} from '#/state/session' import {app} from '#/lexicons' import * as bsky from '#/types/bsky' diff --git a/src/state/queries/explore-feed-previews.tsx b/src/state/queries/explore-feed-previews.tsx index 4b91477491..0977fdcbdc 100644 --- a/src/state/queries/explore-feed-previews.tsx +++ b/src/state/queries/explore-feed-previews.tsx @@ -1,5 +1,5 @@ import {useMemo, useRef} from 'react' -import {type AtUriString, AtUri} from '@atproto/syntax' +import {AtUri} from '@atproto/syntax' import {moderatePost} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' @@ -9,8 +9,6 @@ import { useInfiniteQuery, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {CustomFeedAPI} from '#/lib/api/feed/custom' import {aggregateUserInterests} from '#/lib/api/feed/utils' import {FeedTuner} from '#/lib/api/feed-manip' @@ -27,6 +25,8 @@ import { getEmbeddedPost, } from '#/state/queries/util' import {useAppviewClient} from '#/state/session' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' const RQKEY_ROOT = 'feed-previews' const RQKEY = (feeds: string[]) => [RQKEY_ROOT, feeds] @@ -142,7 +142,7 @@ export function useFeedPreviews( const feed = feeds[pageParam] const api = new CustomFeedAPI({ client, - feedParams: {feed: feed.uri as AtUriString}, + feedParams: {feed: feed.uri}, userInterests, }) const data = await api.fetch({cursor: undefined, limit: LIMIT}) diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts index f6ca1b6f26..c0ace8f911 100644 --- a/src/state/queries/feed.ts +++ b/src/state/queries/feed.ts @@ -1,7 +1,7 @@ import {useCallback, useEffect, useMemo, useRef} from 'react' -import {type AtUriString, AtUri} from '@atproto/syntax' -import {RichText} from '@bsky.app/sdk/richtext' +import {AtUri, type AtUriString} from '@atproto/syntax' import {moderateFeedGenerator} from '@bsky.app/sdk/moderation' +import {RichText} from '@bsky.app/sdk/richtext' import {t} from '@lingui/core/macro' import { type InfiniteData, diff --git a/src/state/queries/join-links.ts b/src/state/queries/join-links.ts index 41bf754122..91ae82fb6c 100644 --- a/src/state/queries/join-links.ts +++ b/src/state/queries/join-links.ts @@ -1,9 +1,8 @@ -import {toDatetimeString} from '@atproto/syntax' import {useCallback} from 'react' import {type $Typed, type Client, type Unknown$TypedObject} from '@atproto/lex' +import {toDatetimeString} from '@atproto/syntax' import {type QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {CHAT_SERVICE} from '#/lib/constants' import {createLexClient} from '#/lib/lexClient' import {logger} from '#/logger' @@ -11,6 +10,7 @@ import {STALE} from '#/state/queries/index' import {createQueryKey, type StructuredQueryKey} from '#/state/queries/util' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' /** * The three preview shapes we currently support. Excludes the `{$type: string}` diff --git a/src/state/queries/messages/actor-declaration.ts b/src/state/queries/messages/actor-declaration.ts index 141dd2b1c8..7f0f363c82 100644 --- a/src/state/queries/messages/actor-declaration.ts +++ b/src/state/queries/messages/actor-declaration.ts @@ -5,7 +5,7 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' import {logger} from '#/logger' import {usePdsClient, useSession} from '#/state/session' import {resolveAllowGroupInvites} from '#/components/dms/util' -import {app, chat, com} from '#/lexicons' +import {type app, chat, com} from '#/lexicons' import {RQKEY as PROFILE_RKEY} from '../profile' export function useUpdateActorDeclaration({ diff --git a/src/state/queries/messages/create-join-link.ts b/src/state/queries/messages/create-join-link.ts index 8cda148502..5f52cadf8f 100644 --- a/src/state/queries/messages/create-join-link.ts +++ b/src/state/queries/messages/create-join-link.ts @@ -1,10 +1,10 @@ import {toDatetimeString} from '@atproto/syntax' import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/disable-join-link.ts b/src/state/queries/messages/disable-join-link.ts index 4573fd1aa0..d58edca37b 100644 --- a/src/state/queries/messages/disable-join-link.ts +++ b/src/state/queries/messages/disable-join-link.ts @@ -1,10 +1,10 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {invalidateJoinLinkPreviewsForCode} from '#/state/queries/join-links' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/edit-group-chat-name.ts b/src/state/queries/messages/edit-group-chat-name.ts index c118ce0858..88c950c7ee 100644 --- a/src/state/queries/messages/edit-group-chat-name.ts +++ b/src/state/queries/messages/edit-group-chat-name.ts @@ -1,9 +1,9 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/edit-join-link.ts b/src/state/queries/messages/edit-join-link.ts index aebe04d07d..f921b3062b 100644 --- a/src/state/queries/messages/edit-join-link.ts +++ b/src/state/queries/messages/edit-join-link.ts @@ -1,9 +1,9 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/enable-join-link.ts b/src/state/queries/messages/enable-join-link.ts index c29f6aba34..d426adf5d7 100644 --- a/src/state/queries/messages/enable-join-link.ts +++ b/src/state/queries/messages/enable-join-link.ts @@ -1,10 +1,10 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {invalidateJoinLinkPreviewsForCode} from '#/state/queries/join-links' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/list-conversation-requests.tsx b/src/state/queries/messages/list-conversation-requests.tsx index d8d6f47c35..4c8d5d5caa 100644 --- a/src/state/queries/messages/list-conversation-requests.tsx +++ b/src/state/queries/messages/list-conversation-requests.tsx @@ -4,9 +4,9 @@ import { useInfiniteQuery, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' const DEFAULT_LIMIT = 10 diff --git a/src/state/queries/messages/list-join-requests.ts b/src/state/queries/messages/list-join-requests.ts index f11388224e..b722fa06f7 100644 --- a/src/state/queries/messages/list-join-requests.ts +++ b/src/state/queries/messages/list-join-requests.ts @@ -1,11 +1,11 @@ import {useEffect} from 'react' import {useInfiniteQuery, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {useMessagesEventBus} from '#/state/messages/events' import {createQueryKey} from '#/state/queries/util' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {STALE} from '..' export const JOIN_REQUESTS_THRESHOLD = 20 diff --git a/src/state/queries/messages/lock-conversation.ts b/src/state/queries/messages/lock-conversation.ts index 181ec2e244..2057317fab 100644 --- a/src/state/queries/messages/lock-conversation.ts +++ b/src/state/queries/messages/lock-conversation.ts @@ -1,8 +1,8 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import { rollbackConvoOptimistic, updateConvoOptimistic, diff --git a/src/state/queries/messages/mark-join-request-read.ts b/src/state/queries/messages/mark-join-request-read.ts index 57b61c4da8..ecc928074b 100644 --- a/src/state/queries/messages/mark-join-request-read.ts +++ b/src/state/queries/messages/mark-join-request-read.ts @@ -1,9 +1,9 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {RQKEY as CONVO_KEY} from './conversation' import { type ConvoListQueryData, diff --git a/src/state/queries/messages/remove-from-group.ts b/src/state/queries/messages/remove-from-group.ts index 4915dd834c..6abbd4ebc3 100644 --- a/src/state/queries/messages/remove-from-group.ts +++ b/src/state/queries/messages/remove-from-group.ts @@ -5,10 +5,10 @@ import { useQueryClient, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {logger} from '#/logger' import {useChatClient} from '#/state/session' import {chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {RQKEY as CONVO_KEY} from './conversation' import {RQKEY_ROOT as CONVO_LIST_KEY} from './list-conversations' import {listConvoMembersQueryKey} from './list-convo-members' diff --git a/src/state/queries/messages/utils/convo-cache.ts b/src/state/queries/messages/utils/convo-cache.ts index 9ac6789900..0ede0b63fa 100644 --- a/src/state/queries/messages/utils/convo-cache.ts +++ b/src/state/queries/messages/utils/convo-cache.ts @@ -4,9 +4,9 @@ import { type QueryKey, } from '@tanstack/react-query' +import {chat} from '#/lexicons' import {RQKEY as CONVO_KEY} from '../conversation' import {RQKEY_ROOT as CONVO_LIST_KEY} from '../list-conversations' -import {chat} from '#/lexicons' type ConvoUpdater = ( prev: chat.bsky.convo.defs.ConvoView, diff --git a/src/state/queries/notifications/__tests__/util.test.ts b/src/state/queries/notifications/__tests__/util.test.ts index f0a6f3aeba..37940a46da 100644 --- a/src/state/queries/notifications/__tests__/util.test.ts +++ b/src/state/queries/notifications/__tests__/util.test.ts @@ -1,7 +1,6 @@ import {type DidString} from '@atproto/syntax' import {describe, expect, it, jest} from '@jest/globals' -import {app} from '#/lexicons' import {type Notification} from '../types' import {groupNotifications} from '../util' @@ -36,7 +35,7 @@ function makeFollowNotification( : undefined, isRead: false, indexedAt: '2026-07-28T12:00:00.000Z', - } as Notification + } } describe('groupNotifications', () => { diff --git a/src/state/queries/notifications/feed.ts b/src/state/queries/notifications/feed.ts index 7c850c5b50..b44abe44a2 100644 --- a/src/state/queries/notifications/feed.ts +++ b/src/state/queries/notifications/feed.ts @@ -17,6 +17,8 @@ */ import {useCallback, useEffect, useMemo, useRef} from 'react' +import {AtUri} from '@atproto/syntax' +import {moderatePost} from '@bsky.app/sdk/moderation' import { type InfiniteData, type QueryClient, @@ -25,13 +27,11 @@ import { useQueryClient, } from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {moderatePost} from '@bsky.app/sdk/moderation' -import {app} from '#/lexicons' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {STALE} from '#/state/queries' import {useAppviewClient} from '#/state/session' import {useThreadgateHiddenReplyUris} from '#/state/threadgate-hidden-replies' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' import { didOrHandleUriMatches, diff --git a/src/state/queries/notifications/types.ts b/src/state/queries/notifications/types.ts index 6fab4cbe32..aca1df943b 100644 --- a/src/state/queries/notifications/types.ts +++ b/src/state/queries/notifications/types.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' /** * A `listNotifications` notification, widened with the `starterPack` the server diff --git a/src/state/queries/nuxs/index.ts b/src/state/queries/nuxs/index.ts index f2802f0406..dc69b1fcde 100644 --- a/src/state/queries/nuxs/index.ts +++ b/src/state/queries/nuxs/index.ts @@ -8,7 +8,6 @@ import { usePreferencesQuery, } from '#/state/queries/preferences' import {usePdsClient} from '#/state/session' -import {type app} from '#/lexicons' export {Nux} from '#/state/queries/nuxs/definitions' @@ -108,10 +107,7 @@ export function useSaveNux() { * `serializeAppNux` still returns the legacy `Nux`, whose strings are * unbranded; it is validated against the same schema the action expects. */ - await pdsClient.call( - upsertNux, - serializeAppNux(nux) as app.bsky.actor.defs.Nux, - ) + await pdsClient.call(upsertNux, serializeAppNux(nux)) // triggers a refetch await queryClient.invalidateQueries({ queryKey: preferencesQueryKey, diff --git a/src/state/queries/nuxs/types.ts b/src/state/queries/nuxs/types.ts index bd3c821da1..db4bf5a7ae 100644 --- a/src/state/queries/nuxs/types.ts +++ b/src/state/queries/nuxs/types.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' export type Data = Record | undefined diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 87b1ec43e5..e8f5b5ee4a 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -1,7 +1,7 @@ import {useCallback, useEffect, useMemo, useRef} from 'react' import {AppState} from 'react-native' import {type Client} from '@atproto/lex' -import {type AtIdentifierString, type AtUriString, AtUri} from '@atproto/syntax' +import {type AtIdentifierString, AtUri, type AtUriString} from '@atproto/syntax' import { moderatePost, type ModerationDecision, @@ -14,8 +14,6 @@ import { useInfiniteQuery, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {AuthorFeedAPI} from '#/lib/api/feed/author' import {CustomFeedAPI} from '#/lib/api/feed/custom' import {DemoFeedAPI} from '#/lib/api/feed/demo' @@ -35,6 +33,8 @@ import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const' import {useAppviewClient, useSession} from '#/state/session' import * as userActionHistory from '#/state/userActionHistory' import {KnownError} from '#/view/com/posts/PostFeedErrorMessage' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {useFeedTuners} from '../preferences/feed-tuners' import {useModerationOpts} from '../preferences/moderation-opts' import {usePreferencesQuery} from './preferences' diff --git a/src/state/queries/post-quotes.ts b/src/state/queries/post-quotes.ts index 1292e4c407..c0bdb70ef9 100644 --- a/src/state/queries/post-quotes.ts +++ b/src/state/queries/post-quotes.ts @@ -1,4 +1,4 @@ -import {type AtUriString, AtUri} from '@atproto/syntax' +import {AtUri, type AtUriString} from '@atproto/syntax' import { type InfiniteData, type QueryClient, @@ -6,9 +6,9 @@ import { useInfiniteQuery, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {useAppviewClient} from '#/state/session' import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import { didOrHandleUriMatches, embedViewRecordToPostView, diff --git a/src/state/queries/post.ts b/src/state/queries/post.ts index 29d1ca9447..73191c83ee 100644 --- a/src/state/queries/post.ts +++ b/src/state/queries/post.ts @@ -1,6 +1,6 @@ import {useCallback} from 'react' import {type Client} from '@atproto/lex' -import {type AtUriString, type HandleString, AtUri} from '@atproto/syntax' +import {AtUri, type AtUriString, type HandleString} from '@atproto/syntax' import {deleteLike, deletePost, deleteRepost, like, repost} from '@bsky.app/sdk' import { type QueryClient, @@ -108,7 +108,7 @@ export function useGetPosts() { uris: uris as AtUriString[], }) // See the note on `fetchPost` about the view shapes. - return data.posts as app.bsky.feed.defs.PostView[] + return data.posts }, }) }, diff --git a/src/state/queries/postgate/util.ts b/src/state/queries/postgate/util.ts index afbb41428c..b9a3218b2c 100644 --- a/src/state/queries/postgate/util.ts +++ b/src/state/queries/postgate/util.ts @@ -1,8 +1,8 @@ -import {type AtUriString, toDatetimeString, AtUri} from '@atproto/syntax' - import {type $Typed} from '@atproto/lex' -import * as bsky from '#/types/bsky' +import {AtUri, type AtUriString, toDatetimeString} from '@atproto/syntax' + import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' export const POSTGATE_COLLECTION = 'app.bsky.feed.postgate' diff --git a/src/state/queries/preferences/useThreadPreferences.ts b/src/state/queries/preferences/useThreadPreferences.ts index c4fb41a281..7c3fbc1f06 100644 --- a/src/state/queries/preferences/useThreadPreferences.ts +++ b/src/state/queries/preferences/useThreadPreferences.ts @@ -2,7 +2,6 @@ import {useCallback, useMemo, useRef, useState} from 'react' import {useFocusEffect} from '@react-navigation/native' import debounce from 'lodash.debounce' -import {app} from '#/lexicons' import {useCallOnce} from '#/lib/once' import { usePreferencesQuery, @@ -10,6 +9,7 @@ import { } from '#/state/queries/preferences' import {type ThreadViewPreferences} from '#/state/queries/preferences/types' import {useAnalytics} from '#/analytics' +import {app} from '#/lexicons' import {type Literal} from '#/types/utils' export type ThreadSortOption = Literal< diff --git a/src/state/queries/profile-feedgens.ts b/src/state/queries/profile-feedgens.ts index 89303554e6..79309b1328 100644 --- a/src/state/queries/profile-feedgens.ts +++ b/src/state/queries/profile-feedgens.ts @@ -1,11 +1,11 @@ import {type DidString} from '@atproto/syntax' +import {moderateFeedGenerator} from '@bsky.app/sdk/moderation' import { type InfiniteData, type QueryKey, useInfiniteQuery, } from '@tanstack/react-query' -import {moderateFeedGenerator} from '@bsky.app/sdk/moderation' import {useAppviewClient} from '#/state/session' import {app} from '#/lexicons' import {useModerationOpts} from '../preferences/moderation-opts' diff --git a/src/state/queries/profile-lists.ts b/src/state/queries/profile-lists.ts index d6437c3e5b..8f1087c245 100644 --- a/src/state/queries/profile-lists.ts +++ b/src/state/queries/profile-lists.ts @@ -1,11 +1,11 @@ import {type DidString} from '@atproto/syntax' +import {moderateUserList} from '@bsky.app/sdk/moderation' import { type InfiniteData, type QueryKey, useInfiniteQuery, } from '@tanstack/react-query' -import {moderateUserList} from '@bsky.app/sdk/moderation' import {useAppviewClient} from '#/state/session' import {app} from '#/lexicons' import {useModerationOpts} from '../preferences/moderation-opts' diff --git a/src/state/queries/profile.ts b/src/state/queries/profile.ts index e5e66fc22e..0a7e896644 100644 --- a/src/state/queries/profile.ts +++ b/src/state/queries/profile.ts @@ -2,10 +2,10 @@ import {useCallback} from 'react' import {type Client, type Un$Typed} from '@atproto/lex' import { type AtIdentifierString, + AtUri, type AtUriString, type DidString, toDatetimeString, - AtUri, } from '@atproto/syntax' import { deleteFollow, @@ -337,7 +337,7 @@ export function useProfileFollowMutationQueue( if (finalFollowingUri) { void client .call(app.bsky.graph.getSuggestedFollowsByActor, { - actor: did as AtIdentifierString, + actor: did, }) .then(res => { const dids = res.suggestions diff --git a/src/state/queries/resolve-uri.ts b/src/state/queries/resolve-uri.ts index 5e1bbc841d..ba2e9f933c 100644 --- a/src/state/queries/resolve-uri.ts +++ b/src/state/queries/resolve-uri.ts @@ -1,5 +1,5 @@ import {type Client} from '@atproto/lex' -import {type HandleString, AtUri} from '@atproto/syntax' +import {AtUri, type HandleString} from '@atproto/syntax' import {type QueryClient, queryOptions, useQuery} from '@tanstack/react-query' import {STALE} from '#/state/queries' diff --git a/src/state/queries/search-posts-params.ts b/src/state/queries/search-posts-params.ts index f75f2204c1..fc12cd8e02 100644 --- a/src/state/queries/search-posts-params.ts +++ b/src/state/queries/search-posts-params.ts @@ -1,14 +1,13 @@ -import {app} from '#/lexicons' /* * Pure helpers for lifting structured `app.bsky.feed.searchPosts` params out of * a free-text query. Kept free of React Native imports so it can be unit * tested in isolation (the search-posts query hook re-exports these). */ - import { filtersToApiParams, type SearchFilters, } from '#/screens/Search/searchParams' +import {app} from '#/lexicons' const DATE_RE = /^\d{4}-\d{2}-\d{2}/ diff --git a/src/state/queries/search-posts-v2.ts b/src/state/queries/search-posts-v2.ts index a1e941879f..e9a1178009 100644 --- a/src/state/queries/search-posts-v2.ts +++ b/src/state/queries/search-posts-v2.ts @@ -1,4 +1,6 @@ import {useCallback, useMemo, useRef} from 'react' +import {AtUri} from '@atproto/syntax' +import {moderatePost} from '@bsky.app/sdk/moderation' import { type InfiniteData, type QueryClient, @@ -6,8 +8,6 @@ import { useInfiniteQuery, } from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {moderatePost} from '@bsky.app/sdk/moderation' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useAppviewClient} from '#/state/session' import {type SearchFilters} from '#/screens/Search/searchParams' diff --git a/src/state/queries/starter-packs.ts b/src/state/queries/starter-packs.ts index 397dc5aae3..3a30b30caa 100644 --- a/src/state/queries/starter-packs.ts +++ b/src/state/queries/starter-packs.ts @@ -1,4 +1,4 @@ -import {type Client, type LexValue} from '@atproto/lex' +import {type Client} from '@atproto/lex' import {AtUri, type AtUriString, toDatetimeString} from '@atproto/syntax' import {RichText} from '@bsky.app/sdk/richtext' import { @@ -133,7 +133,7 @@ export function useCreateStarterPackMutation({ descriptionFacets, // `createStarterPackList` returns a plain string uri list: listRes?.uri as AtUriString, - feeds: feeds?.map(f => ({uri: f.uri as AtUriString})), + feeds: feeds?.map(f => ({uri: f.uri})), createdAt: toDatetimeString(new Date()), }) }, @@ -257,7 +257,7 @@ export function useEditStarterPackMutation({ * types the raw `putRecord` body as a `LexValue`, which the legacy * view interface does not structurally satisfy, hence the cast. */ - feeds: feeds as unknown as LexValue, + feeds: feeds, createdAt: currentStarterPack.record.createdAt, updatedAt: new Date().toISOString(), }, diff --git a/src/state/queries/usePostThread/const.ts b/src/state/queries/usePostThread/const.ts index d96b90870d..df7332cf25 100644 --- a/src/state/queries/usePostThread/const.ts +++ b/src/state/queries/usePostThread/const.ts @@ -1,4 +1,3 @@ -import {app} from '#/lexicons' // eslint-disable-next-line @typescript-eslint/no-unused-vars /** diff --git a/src/state/queries/usePostThread/queryCache.ts b/src/state/queries/usePostThread/queryCache.ts index 6ef2cf3349..afc7465ceb 100644 --- a/src/state/queries/usePostThread/queryCache.ts +++ b/src/state/queries/usePostThread/queryCache.ts @@ -1,14 +1,12 @@ import {useCallback} from 'react' +import {type $Typed} from '@atproto/lex' +import {AtUri} from '@atproto/syntax' import {type QueryClient, useQueryClient} from '@tanstack/react-query' import { dangerousGetPostShadow, updatePostShadow, } from '#/state/cache/post-shadow' -import {type $Typed} from '@atproto/lex' -import {AtUri} from '@atproto/syntax' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {findAllPostsInQueryData as findAllPostsInBookmarksQueryData} from '#/state/queries/bookmarks/useBookmarksQuery' import {findAllPostsInQueryData as findAllPostsInExploreFeedPreviewsQueryData} from '#/state/queries/explore-feed-previews' import {findAllPostsInQueryData as findAllPostsInNotifsQueryData} from '#/state/queries/notifications/feed' @@ -31,6 +29,8 @@ import { embedViewRecordToPostView, getEmbeddedPost, } from '#/state/queries/util' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' export function createCacheMutator({ queryClient, diff --git a/src/state/queries/usePostThread/traversal.ts b/src/state/queries/usePostThread/traversal.ts index 4f54645dc6..107697f76f 100644 --- a/src/state/queries/usePostThread/traversal.ts +++ b/src/state/queries/usePostThread/traversal.ts @@ -13,9 +13,9 @@ import { getTraversalMetadata, storeTraversalMetadata, } from '#/state/queries/usePostThread/utils' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import * as views from '#/state/queries/usePostThread/views' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' export function sortAndAnnotateThreadItems( thread: ApiThreadItem[], diff --git a/src/state/queries/usePostThread/types.ts b/src/state/queries/usePostThread/types.ts index 8a5d59baae..93e54a8a69 100644 --- a/src/state/queries/usePostThread/types.ts +++ b/src/state/queries/usePostThread/types.ts @@ -1,4 +1,5 @@ import {type ModerationDecision} from '@bsky.app/sdk/moderation' + import {app} from '#/lexicons' export type ApiThreadItem = diff --git a/src/state/queries/usePostThread/utils.ts b/src/state/queries/usePostThread/utils.ts index b6ebbff01d..dde80db181 100644 --- a/src/state/queries/usePostThread/utils.ts +++ b/src/state/queries/usePostThread/utils.ts @@ -1,9 +1,10 @@ +import {AtUri} from '@atproto/syntax' + import { type ApiThreadItem, type ThreadItem, type TraversalMetadata, } from '#/state/queries/usePostThread/types' -import {AtUri} from '@atproto/syntax' import {app} from '#/lexicons' import {isDevMode} from '#/storage/hooks/dev-mode' import * as bsky from '#/types/bsky' diff --git a/src/state/queries/usePostThread/views.ts b/src/state/queries/usePostThread/views.ts index 7fc21161be..769307a4b4 100644 --- a/src/state/queries/usePostThread/views.ts +++ b/src/state/queries/usePostThread/views.ts @@ -1,14 +1,14 @@ -import {moderatePost, type ModerationOpts} from '@bsky.app/sdk/moderation' - import {type $Typed} from '@atproto/lex' import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' +import {moderatePost, type ModerationOpts} from '@bsky.app/sdk/moderation' + import {makeProfileLink} from '#/lib/routes/links' import { type ApiThreadItem, type ThreadItem, type TraversalMetadata, } from '#/state/queries/usePostThread/types' +import {app} from '#/lexicons' export function threadPostNoUnauthenticated({ uri, diff --git a/src/state/queries/util.ts b/src/state/queries/util.ts index 7052874513..a3fe12aec7 100644 --- a/src/state/queries/util.ts +++ b/src/state/queries/util.ts @@ -1,10 +1,10 @@ +import {type AtUri} from '@atproto/syntax' import { type InfiniteData, type QueryClient, type QueryKey, } from '@tanstack/react-query' -import {type AtUri} from '@atproto/syntax' import {app} from '#/lexicons' import * as bsky from '#/types/bsky' diff --git a/src/state/queries/verification/useUpdateProfileVerificationCache.ts b/src/state/queries/verification/useUpdateProfileVerificationCache.ts index 08da1244c5..6079457e2e 100644 --- a/src/state/queries/verification/useUpdateProfileVerificationCache.ts +++ b/src/state/queries/verification/useUpdateProfileVerificationCache.ts @@ -1,5 +1,4 @@ import {useCallback} from 'react' -import {type DidString} from '@atproto/syntax' import {useQueryClient} from '@tanstack/react-query' import {logger} from '#/logger' @@ -25,7 +24,7 @@ export function useUpdateProfileVerificationCache() { return } const updated = await client.call(app.bsky.actor.getProfile, { - actor: profile.did as DidString, + actor: profile.did, }) updateProfileShadow(qc, profile.did, { verification: updated.verification, diff --git a/src/state/queries/verification/useVerificationCreateMutation.tsx b/src/state/queries/verification/useVerificationCreateMutation.tsx index 4f1a318f48..cd52a62a1f 100644 --- a/src/state/queries/verification/useVerificationCreateMutation.tsx +++ b/src/state/queries/verification/useVerificationCreateMutation.tsx @@ -1,9 +1,4 @@ -import { - type AtIdentifierString, - type DidString, - type HandleString, - toDatetimeString, -} from '@atproto/syntax' +import {toDatetimeString} from '@atproto/syntax' import {useMutation} from '@tanstack/react-query' import {until} from '#/lib/async/until' @@ -28,9 +23,9 @@ export function useVerificationCreateMutation() { const {uri} = await pdsClient.create(app.bsky.graph.verification, { // the profile view is still legacy-typed, so its strings are unbranded - subject: profile.did as DidString, + subject: profile.did, createdAt: toDatetimeString(new Date()), - handle: profile.handle as HandleString, + handle: profile.handle, displayName: profile.displayName || '', }) @@ -48,7 +43,7 @@ export function useVerificationCreateMutation() { }, () => { return appviewClient.call(app.bsky.actor.getProfile, { - actor: (profile.did ?? '') as AtIdentifierString, + actor: profile.did ?? '', }) }, ) diff --git a/src/state/queries/verification/useVerificationsRemoveMutation.tsx b/src/state/queries/verification/useVerificationsRemoveMutation.tsx index 2e98d9205f..0de675f0d2 100644 --- a/src/state/queries/verification/useVerificationsRemoveMutation.tsx +++ b/src/state/queries/verification/useVerificationsRemoveMutation.tsx @@ -1,4 +1,4 @@ -import {type AtIdentifierString, AtUri} from '@atproto/syntax' +import {AtUri} from '@atproto/syntax' import {useMutation} from '@tanstack/react-query' import {until} from '#/lib/async/until' @@ -51,7 +51,7 @@ export function useVerificationsRemoveMutation() { () => { return appviewClient.call(app.bsky.actor.getProfile, { // the profile view is still legacy-typed, so its did is unbranded - actor: (profile.did ?? '') as AtIdentifierString, + actor: profile.did ?? '', }) }, ) diff --git a/src/state/shell/composer/index.tsx b/src/state/shell/composer/index.tsx index c22b62b6d6..39673b138f 100644 --- a/src/state/shell/composer/index.tsx +++ b/src/state/shell/composer/index.tsx @@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {postUriToRelativePath, toBskyAppUrl} from '#/lib/strings/url-helpers' import {purgeTemporaryImageFiles} from '#/state/gallery' @@ -14,6 +13,7 @@ import { RQKEY_LINK_ROOT, } from '#/state/queries/resolve-link' import * as Toast from '#/components/Toast' +import {app} from '#/lexicons' export interface ComposerOptsPostRef { uri: string diff --git a/src/state/threadgate-hidden-replies.tsx b/src/state/threadgate-hidden-replies.tsx index de4f86207c..de51e1e8e0 100644 --- a/src/state/threadgate-hidden-replies.tsx +++ b/src/state/threadgate-hidden-replies.tsx @@ -1,4 +1,5 @@ import {createContext, useCallback, useContext, useMemo, useState} from 'react' + import {app} from '#/lexicons' type StateContext = { diff --git a/src/state/unstable-post-source.tsx b/src/state/unstable-post-source.tsx index fe2e52cda0..686bededa6 100644 --- a/src/state/unstable-post-source.tsx +++ b/src/state/unstable-post-source.tsx @@ -1,9 +1,9 @@ import {useEffect, useId, useState} from 'react' - import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' + import {Logger} from '#/logger' import {type FeedSourceInfo} from '#/state/queries/feed' +import {app} from '#/lexicons' /** * Separate logger for better debugging diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index 1d4c7adbcf..7a2a2f5484 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -45,15 +45,13 @@ import {scheduleOnUI} from 'react-native-worklets' import * as FileSystem from 'expo-file-system' import {type ImagePickerAsset} from 'expo-image-picker' import {type Client, type UriString} from '@atproto/lex' -import {type AtUriString, AtUri} from '@atproto/syntax' +import {AtUri, type AtUriString} from '@atproto/syntax' import {type RichText} from '@bsky.app/sdk/richtext' import {plural} from '@lingui/core/macro' import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueries, useQueryClient} from '@tanstack/react-query' -import {matchXrpcError} from '#/lib/xrpc-error' -import * as bsky from '#/types/bsky' import * as apilib from '#/lib/api/index' import {EmbeddingDisabledError} from '#/lib/api/resolve' import {useAppState} from '#/lib/appState' @@ -74,6 +72,7 @@ import {useCallOnce} from '#/lib/once' import {type NavigationProp} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' import {colors} from '#/lib/styles' +import {matchXrpcError} from '#/lib/xrpc-error' import {logger} from '#/logger' import {useDialogStateControlContext} from '#/state/dialogs' import {emitPostCreated} from '#/state/events' @@ -146,6 +145,7 @@ import { } from '#/env' import {type Gif} from '#/features/gifPicker/types' import {app, chat} from '#/lexicons' +import * as bsky from '#/types/bsky' import {BottomSheetPortalProvider} from '../../../../modules/bottom-sheet' import { draftToComposerPosts, diff --git a/src/view/com/composer/ComposerReplyTo.tsx b/src/view/com/composer/ComposerReplyTo.tsx index c09c93b3a4..175cda7d30 100644 --- a/src/view/com/composer/ComposerReplyTo.tsx +++ b/src/view/com/composer/ComposerReplyTo.tsx @@ -5,8 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {type ComposerOptsPostRef} from '#/state/shell/composer' @@ -15,6 +13,8 @@ import {atoms as a, useTheme, utils, web} from '#/alf' import {QuoteEmbed} from '#/components/Post/Embed' import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {parseEmbed} from '#/types/bsky/post' export function ComposerReplyTo({replyTo}: {replyTo: ComposerOptsPostRef}) { diff --git a/src/view/com/composer/ExternalEmbed.tsx b/src/view/com/composer/ExternalEmbed.tsx index edd0a7e0ad..b39e1393f3 100644 --- a/src/view/com/composer/ExternalEmbed.tsx +++ b/src/view/com/composer/ExternalEmbed.tsx @@ -1,6 +1,6 @@ -import {type UriString} from '@atproto/lex' import {useMemo} from 'react' import {type StyleProp, View, type ViewStyle} from 'react-native' +import {type UriString} from '@atproto/lex' import {cleanError} from '#/lib/strings/errors' import { diff --git a/src/view/com/composer/drafts/state/api.ts b/src/view/com/composer/drafts/state/api.ts index 6f2aa48910..2260e04bd0 100644 --- a/src/view/com/composer/drafts/state/api.ts +++ b/src/view/com/composer/drafts/state/api.ts @@ -2,12 +2,10 @@ * Type converters for Draft API - convert between ComposerState and server Draft types. */ import {type UriString} from '@atproto/lex' +import {AtUri} from '@atproto/syntax' import {RichText} from '@bsky.app/sdk/richtext' import {nanoid} from 'nanoid/non-secure' -import {AtUri} from '@atproto/syntax' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {type LinkResolvers, resolveLink} from '#/lib/api/resolve' import {getDeviceName} from '#/lib/deviceName' import {getImageDim} from '#/lib/media/manip' @@ -25,6 +23,8 @@ import {type VideoState} from '#/view/com/composer/state/video' import {type AnalyticsContextType} from '#/analytics' import {getDeviceId} from '#/analytics/identifiers' import {type Gif} from '#/features/gifPicker/types' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {logger} from './logger' import {type DraftPostDisplay, type DraftSummary} from './schema' import * as storage from './storage' diff --git a/src/view/com/composer/drafts/state/queries.ts b/src/view/com/composer/drafts/state/queries.ts index 70a1fa06c1..7f4840c7bf 100644 --- a/src/view/com/composer/drafts/state/queries.ts +++ b/src/view/com/composer/drafts/state/queries.ts @@ -4,7 +4,6 @@ import { useQueryClient, } from '@tanstack/react-query' -import * as bsky from '#/types/bsky' import {isNetworkError} from '#/lib/strings/errors' import {matchXrpcError} from '#/lib/xrpc-error' import {useAppviewClient, useChatClient} from '#/state/session' @@ -12,6 +11,7 @@ import {type ComposerState} from '#/view/com/composer/state/composer' import {useAnalytics} from '#/analytics' import {getDeviceId} from '#/analytics/identifiers' import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {composerStateToDraft, draftViewToSummary} from './api' import {logger} from './logger' import * as storage from './storage' @@ -147,7 +147,7 @@ export function useSaveDraftMutation() { * `composerStateToDraft` builds the draft with unbranded string fields, * so it is asserted once here to the generated input type. */ - const draft = apiDraft as unknown as app.bsky.draft.defs.Draft + const draft = apiDraft logger.debug('saving draft', { existingDraftId, diff --git a/src/view/com/composer/drafts/state/schema.ts b/src/view/com/composer/drafts/state/schema.ts index bfe639390c..25bba23152 100644 --- a/src/view/com/composer/drafts/state/schema.ts +++ b/src/view/com/composer/drafts/state/schema.ts @@ -1,4 +1,4 @@ -import {app} from '#/lexicons' +import {type app} from '#/lexicons' /** * Types for draft display and local media tracking. * Server draft types come from the generated `#/lexicons` modules. diff --git a/src/view/com/composer/state/composer.ts b/src/view/com/composer/state/composer.ts index 44c0bcda69..228f9a62ce 100644 --- a/src/view/com/composer/state/composer.ts +++ b/src/view/com/composer/state/composer.ts @@ -1,5 +1,5 @@ -import {type UriString} from '@atproto/lex' import {type ImagePickerAsset} from 'expo-image-picker' +import {type UriString} from '@atproto/lex' import {type AtUriString, toDatetimeString} from '@atproto/syntax' import {RichText} from '@bsky.app/sdk/richtext' import {nanoid} from 'nanoid/non-secure' @@ -325,14 +325,13 @@ export function composerReducer( * Draft records are still typed against the legacy client, so the * stored rules arrive unbranded. Wave B migrates the draft types. */ - embeddingRules: - postgateEmbeddingRules as app.bsky.feed.postgate.Main['embeddingRules'], + embeddingRules: postgateEmbeddingRules, }), threadgate: threadgateRecordToAllowUISetting({ $type: 'app.bsky.feed.threadgate', post: '' as AtUriString, createdAt: toDatetimeString(new Date()), - allow: threadgateAllow as app.bsky.feed.threadgate.Main['allow'], + allow: threadgateAllow, }), }, } @@ -755,15 +754,13 @@ export function createComposerState({ * Preferences are still typed against the legacy client, so the stored * rules arrive unbranded. Wave B migrates `getPreferences`. */ - embeddingRules: (initInteractionSettings?.postgateEmbeddingRules || - []) as app.bsky.feed.postgate.Main['embeddingRules'], + embeddingRules: initInteractionSettings?.postgateEmbeddingRules || [], }), threadgate: threadgateRecordToAllowUISetting({ $type: 'app.bsky.feed.threadgate', post: '' as AtUriString, createdAt: toDatetimeString(new Date()), - allow: - initInteractionSettings?.threadgateAllowRules as app.bsky.feed.threadgate.Main['allow'], + allow: initInteractionSettings?.threadgateAllowRules, }), }, } diff --git a/src/view/com/composer/text-input/mobile/Autocomplete.tsx b/src/view/com/composer/text-input/mobile/Autocomplete.tsx index b5a1e920ba..f415c778cc 100644 --- a/src/view/com/composer/text-input/mobile/Autocomplete.tsx +++ b/src/view/com/composer/text-input/mobile/Autocomplete.tsx @@ -2,7 +2,6 @@ import {View} from 'react-native' import Animated, {FadeInDown, FadeOut} from 'react-native-reanimated' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {PressableScale} from '#/lib/custom-animations/PressableScale' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' @@ -11,6 +10,7 @@ import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, platform, useTheme} from '#/alf' import {ProfileBadges} from '#/components/ProfileBadges' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' export function Autocomplete({ prefix, diff --git a/src/view/com/composer/text-input/web/Autocomplete.tsx b/src/view/com/composer/text-input/web/Autocomplete.tsx index 3ebc9fd235..cf3f49d30d 100644 --- a/src/view/com/composer/text-input/web/Autocomplete.tsx +++ b/src/view/com/composer/text-input/web/Autocomplete.tsx @@ -10,12 +10,12 @@ import { } from '@tiptap/suggestion' import tippy, {type Instance as TippyInstance} from 'tippy.js' -import {app} from '#/lexicons' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {type ActorAutocompleteFn} from '#/state/queries/actor-autocomplete' import {atoms as a, useTheme} from '#/alf' import * as ProfileCard from '#/components/ProfileCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' interface MentionListRef { onKeyDown: (props: SuggestionKeyDownProps) => boolean diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 0f47eefa37..10572f9cba 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -12,7 +12,6 @@ import {useLingui} from '@lingui/react' import {type NavigationProp, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {DISCOVER_FEED_URI, VIDEO_FEED_URIS} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {getRootNavigation, getTabState, TabState} from '#/lib/routes/helpers' @@ -38,6 +37,7 @@ import {useHeaderOffset} from '#/components/hooks/useHeaderOffset' import {EditBig_Stroke2_Corner2_Rounded as EditBigIcon} from '#/components/icons/EditBig' import {useAnalytics} from '#/analytics' import {IS_NATIVE} from '#/env' +import {app} from '#/lexicons' const POLL_FREQ = 60e3 // 60sec diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx index 0684459d69..ecc11c5864 100644 --- a/src/view/com/feeds/FeedSourceCard.tsx +++ b/src/view/com/feeds/FeedSourceCard.tsx @@ -1,12 +1,10 @@ import {type StyleProp, View, type ViewStyle} from 'react-native' +import {type $Typed} from '@atproto/lex' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Plural, Trans} from '@lingui/react/macro' -import {type $Typed} from '@atproto/lex' -import {AtUri} from '@atproto/syntax' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {sanitizeHandle} from '#/lib/strings/handles' import { type FeedSourceInfo, @@ -20,6 +18,8 @@ import {atoms as a, useTheme} from '#/alf' import {Link} from '#/components/Link' import {RichText} from '#/components/RichText' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {MissingFeed} from './MissingFeed' type FeedSourceCardProps = { diff --git a/src/view/com/feeds/MissingFeed.tsx b/src/view/com/feeds/MissingFeed.tsx index a6c2b34028..bd0f4f5948 100644 --- a/src/view/com/feeds/MissingFeed.tsx +++ b/src/view/com/feeds/MissingFeed.tsx @@ -1,9 +1,9 @@ import {type StyleProp, View, type ViewStyle} from 'react-native' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' import {cleanError} from '#/lib/strings/errors' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {getFeedTypeFromUri} from '#/state/queries/feed' diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx index b96ead838d..7919debd93 100644 --- a/src/view/com/lists/ListMembers.tsx +++ b/src/view/com/lists/ListMembers.tsx @@ -10,7 +10,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import {app} from '#/lexicons' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' import {useModerationOpts} from '#/state/preferences/moderation-opts' @@ -26,6 +25,7 @@ import {useDialogControl} from '#/components/Dialog' import {UserAddRemoveListsDialog} from '#/components/dialogs/lists/UserAddRemoveListsDialog' import {ListFooter} from '#/components/Lists' import * as ProfileCard from '#/components/ProfileCard' +import {app} from '#/lexicons' import type * as bsky from '#/types/bsky' const LOADING_ITEM = {kind: 'loading', _reactKey: '__loading__'} as const diff --git a/src/view/com/lists/MyLists.tsx b/src/view/com/lists/MyLists.tsx index 3cbb0d2258..75a5b173c8 100644 --- a/src/view/com/lists/MyLists.tsx +++ b/src/view/com/lists/MyLists.tsx @@ -10,7 +10,6 @@ import { import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {usePalette} from '#/lib/hooks/usePalette' import {cleanError} from '#/lib/strings/errors' import {s} from '#/lib/styles' @@ -21,6 +20,7 @@ import {atoms as a, useTheme} from '#/alf' import {BulletList_Stroke1_Corner0_Rounded as ListIcon} from '#/components/icons/BulletList' import * as ListCard from '#/components/ListCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import {ErrorMessage} from '../util/error/ErrorMessage' import {List} from '../util/List' diff --git a/src/view/com/notifications/NotificationFeedItem.tsx b/src/view/com/notifications/NotificationFeedItem.tsx index 02753c031a..e60640c9d6 100644 --- a/src/view/com/notifications/NotificationFeedItem.tsx +++ b/src/view/com/notifications/NotificationFeedItem.tsx @@ -9,7 +9,7 @@ import { View, } from 'react-native' import {TID} from '@atproto/common-web' -import {type DidString, AtUri} from '@atproto/syntax' +import {AtUri, type DidString} from '@atproto/syntax' import { moderateProfile, type ModerationDecision, diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx index 24305ba22b..23cc9c773e 100644 --- a/src/view/com/post-thread/PostLikedBy.tsx +++ b/src/view/com/post-thread/PostLikedBy.tsx @@ -2,7 +2,6 @@ import {useCallback, useMemo, useState} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -11,6 +10,7 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' import {List} from '#/view/com/util/List' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' function renderItem({ item, diff --git a/src/view/com/post-thread/PostQuotes.tsx b/src/view/com/post-thread/PostQuotes.tsx index 44ca1f6d3c..459bbc525e 100644 --- a/src/view/com/post-thread/PostQuotes.tsx +++ b/src/view/com/post-thread/PostQuotes.tsx @@ -3,7 +3,6 @@ import {moderatePost, type ModerationDecision} from '@bsky.app/sdk/moderation' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking' import {cleanError} from '#/lib/strings/errors' @@ -13,6 +12,7 @@ import {usePostQuotesQuery} from '#/state/queries/post-quotes' import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {Post} from '#/view/com/post/Post' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' import {List} from '../util/List' diff --git a/src/view/com/post-thread/PostRepostedBy.tsx b/src/view/com/post-thread/PostRepostedBy.tsx index bbc8537ac3..90121281d4 100644 --- a/src/view/com/post-thread/PostRepostedBy.tsx +++ b/src/view/com/post-thread/PostRepostedBy.tsx @@ -2,7 +2,6 @@ import {useCallback, useMemo, useState} from 'react' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -11,6 +10,7 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' import {List} from '#/view/com/util/List' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' +import {app} from '#/lexicons' function renderItem({ item, diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index f2f64d67eb..f9369ce0d4 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -1,11 +1,10 @@ import {useCallback, useMemo, useState} from 'react' import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native' +import {AtUri} from '@atproto/syntax' import {moderatePost, type ModerationDecision} from '@bsky.app/sdk/moderation' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {MAX_POST_LINES} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {makeProfileLink} from '#/lib/routes/links' @@ -35,6 +34,7 @@ import {TranslatedPost} from '#/components/Post/Translated' import {PostControls} from '#/components/PostControls' import {RichText} from '#/components/RichText' import {SubtleHover} from '#/components/SubtleHover' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' export function Post({ diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx index a4e599a64d..dbda8d0c41 100644 --- a/src/view/com/posts/PostFeed.tsx +++ b/src/view/com/posts/PostFeed.tsx @@ -22,8 +22,6 @@ import {type RichText as RichTextType} from '@bsky.app/sdk/richtext' import {useLingui} from '@lingui/react/macro' import {useQueryClient} from '@tanstack/react-query' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {DISCOVER_FEED_URI, KNOWN_SHUTDOWN_FEEDS} from '#/lib/constants' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' @@ -76,6 +74,8 @@ import { isStatusValidForViewers, useLiveNowConfig, } from '#/features/liveNow' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {ComposerPrompt} from '../feeds/ComposerPrompt' import {DiscoverFallbackHeader} from './DiscoverFallbackHeader' import {FeedShutdownMsg} from './FeedShutdownMsg' diff --git a/src/view/com/posts/PostFeedErrorMessage.tsx b/src/view/com/posts/PostFeedErrorMessage.tsx index 54c3e8f8c0..71084122ac 100644 --- a/src/view/com/posts/PostFeedErrorMessage.tsx +++ b/src/view/com/posts/PostFeedErrorMessage.tsx @@ -1,21 +1,21 @@ import {useCallback, useMemo} from 'react' import {View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {msg as msgLingui} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' -import {getErrorName, getErrorStatus} from '#/lib/xrpc-error' -import {app} from '#/lexicons' import {usePalette} from '#/lib/hooks/usePalette' import {type NavigationProp} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' +import {getErrorName, getErrorStatus} from '#/lib/xrpc-error' import {logger} from '#/logger' import {type FeedDescriptor} from '#/state/queries/post-feed' import {useRemoveFeedMutation} from '#/state/queries/preferences' import {Warning_Stroke2_Corner0_Rounded as WarningIcon} from '#/components/icons/Warning' import * as Prompt from '#/components/Prompt' +import {app} from '#/lexicons' import {EmptyState} from '../util/EmptyState' import {ErrorMessage} from '../util/error/ErrorMessage' import {Button} from '../util/forms/Button' diff --git a/src/view/com/posts/PostFeedItem.tsx b/src/view/com/posts/PostFeedItem.tsx index dac8652365..cb43274741 100644 --- a/src/view/com/posts/PostFeedItem.tsx +++ b/src/view/com/posts/PostFeedItem.tsx @@ -1,11 +1,10 @@ import {memo, useCallback, useMemo, useState} from 'react' import {StyleSheet, View} from 'react-native' +import {AtUri} from '@atproto/syntax' import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {useQueryClient} from '@tanstack/react-query' -import {AtUri} from '@atproto/syntax' -import {app} from '#/lexicons' import {type ReasonFeedSource} from '#/lib/api/feed/types' import {MAX_POST_LINES} from '#/lib/constants' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' @@ -48,6 +47,7 @@ import {RichText} from '#/components/RichText' import {SubtleHover} from '#/components/SubtleHover' import {useAnalytics} from '#/analytics' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import * as bsky from '#/types/bsky' import {PostFeedReason} from './PostFeedReason' diff --git a/src/view/com/posts/PostFeedReason.tsx b/src/view/com/posts/PostFeedReason.tsx index 1355c13088..9e1a043946 100644 --- a/src/view/com/posts/PostFeedReason.tsx +++ b/src/view/com/posts/PostFeedReason.tsx @@ -4,8 +4,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' -import * as bsky from '#/types/bsky' -import {app} from '#/lexicons' import {isReasonFeedSource, type ReasonFeedSource} from '#/lib/api/feed/types' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {makeProfileLink} from '#/lib/routes/links' @@ -16,6 +14,8 @@ import {Repost_Stroke2_Corner3_Rounded as RepostIcon} from '#/components/icons/R import {Link} from '#/components/Link' import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' +import * as bsky from '#/types/bsky' import {FeedNameText} from '../util/FeedInfoText' export function PostFeedReason({ diff --git a/src/view/com/posts/ViewFullThread.tsx b/src/view/com/posts/ViewFullThread.tsx index 361dd4f4f7..0a4f033ef6 100644 --- a/src/view/com/posts/ViewFullThread.tsx +++ b/src/view/com/posts/ViewFullThread.tsx @@ -1,9 +1,9 @@ import {useMemo} from 'react' import {View} from 'react-native' import Svg, {Circle, Line} from 'react-native-svg' +import {AtUri} from '@atproto/syntax' import {useLingui} from '@lingui/react/macro' -import {AtUri} from '@atproto/syntax' import {makeProfileLink} from '#/lib/routes/links' import {atoms as a, select, useTheme} from '#/alf' import {Link} from '#/components/Link' diff --git a/src/view/com/profile/ProfileFollowers.tsx b/src/view/com/profile/ProfileFollowers.tsx index 5ce68ff380..7620c523d7 100644 --- a/src/view/com/profile/ProfileFollowers.tsx +++ b/src/view/com/profile/ProfileFollowers.tsx @@ -2,7 +2,6 @@ import {useCallback, useEffect, useMemo, useRef, useState} from 'react' import {useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {type NavigationProp} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' @@ -19,6 +18,7 @@ import { FollowersPromoBanner, useFollowersPromoDismissed, } from '#/features/inviteFriends' +import {app} from '#/lexicons' import {List} from '../util/List' import {ProfileCardWithFollowBtn} from './ProfileCard' diff --git a/src/view/com/profile/ProfileFollows.tsx b/src/view/com/profile/ProfileFollows.tsx index 505febc561..379ed56599 100644 --- a/src/view/com/profile/ProfileFollows.tsx +++ b/src/view/com/profile/ProfileFollows.tsx @@ -2,7 +2,6 @@ import {useCallback, useEffect, useMemo, useRef, useState} from 'react' import {useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {type NavigationProp} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' @@ -15,6 +14,7 @@ import {PeopleRemove2_Stroke1_Corner0_Rounded as PeopleRemoveIcon} from '#/compo import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' +import {app} from '#/lexicons' import {List} from '../util/List' import {ProfileCardWithFollowBtn} from './ProfileCard' diff --git a/src/view/com/profile/ProfileMenu.tsx b/src/view/com/profile/ProfileMenu.tsx index 82fbb44193..311423a987 100644 --- a/src/view/com/profile/ProfileMenu.tsx +++ b/src/view/com/profile/ProfileMenu.tsx @@ -3,7 +3,6 @@ import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {shareText, shareUrl} from '#/lib/sharing' @@ -66,6 +65,7 @@ import {GoLiveDialog} from '#/features/liveNow/components/GoLiveDialog' import {GoLiveDisabledDialog} from '#/features/liveNow/components/GoLiveDisabledDialog' import {Dot} from '#/features/nuxs/components/Dot' import {Gradient} from '#/features/nuxs/components/Gradient' +import {app} from '#/lexicons' import {useDevMode} from '#/storage/hooks/dev-mode' let ProfileMenu = ({ diff --git a/src/view/com/profile/ProfileSubpageHeader.tsx b/src/view/com/profile/ProfileSubpageHeader.tsx index de7a38514f..aa9b381576 100644 --- a/src/view/com/profile/ProfileSubpageHeader.tsx +++ b/src/view/com/profile/ProfileSubpageHeader.tsx @@ -6,7 +6,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {app} from '#/lexicons' import {usePalette} from '#/lib/hooks/usePalette' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {makeProfileLink} from '#/lib/routes/links' @@ -20,6 +19,7 @@ import {UserAvatar, type UserAvatarType} from '#/view/com/util/UserAvatar' import {StarterPackMultiPathLarge as StarterPackIcon} from '#/components/icons/StarterPack' import * as Layout from '#/components/Layout' import {useLightboxControls} from '#/components/Lightbox/state' +import {app} from '#/lexicons' export function ProfileSubpageHeader({ isLoading, diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx index 49e34315df..f77678f8c4 100644 --- a/src/view/com/util/PostMeta.tsx +++ b/src/view/com/util/PostMeta.tsx @@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {forceLTR} from '#/lib/strings/bidi' import {NON_BREAKING_SPACE} from '#/lib/strings/constants' @@ -21,6 +20,7 @@ import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {Text} from '#/components/Typography' import {IS_ANDROID} from '#/env' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import {TimeElapsed} from './TimeElapsed' import {PreviewableUserAvatar} from './UserAvatar' diff --git a/src/view/com/util/UserInfoText.tsx b/src/view/com/util/UserInfoText.tsx index 904d94b14d..1316d78495 100644 --- a/src/view/com/util/UserInfoText.tsx +++ b/src/view/com/util/UserInfoText.tsx @@ -1,6 +1,5 @@ import {type StyleProp, type TextStyle} from 'react-native' -import {app} from '#/lexicons' import {makeProfileLink} from '#/lib/routes/links' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' @@ -9,6 +8,7 @@ import {useProfileQuery} from '#/state/queries/profile' import {atoms as a} from '#/alf' import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' import {LoadingPlaceholder} from './LoadingPlaceholder' export function UserInfoText({ diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx index a18d8a8220..df9850c14e 100644 --- a/src/view/screens/Feeds.tsx +++ b/src/view/screens/Feeds.tsx @@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import debounce from 'lodash.debounce' -import {app} from '#/lexicons' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {usePalette} from '#/lib/hooks/usePalette' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' @@ -45,6 +44,7 @@ import * as Layout from '#/components/Layout' import {Link} from '#/components/Link' import * as ListCard from '#/components/ListCard' import {IS_NATIVE, IS_WEB} from '#/env' +import {app} from '#/lexicons' type Props = NativeStackScreenProps diff --git a/src/view/screens/Lists.tsx b/src/view/screens/Lists.tsx index eff187dc22..fe9827ac88 100644 --- a/src/view/screens/Lists.tsx +++ b/src/view/screens/Lists.tsx @@ -1,10 +1,10 @@ import {useCallback} from 'react' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import { type CommonNavigatorParams, diff --git a/src/view/screens/ModerationBlockedAccounts.tsx b/src/view/screens/ModerationBlockedAccounts.tsx index 0ad0e52302..cde2929ffd 100644 --- a/src/view/screens/ModerationBlockedAccounts.tsx +++ b/src/view/screens/ModerationBlockedAccounts.tsx @@ -3,7 +3,6 @@ import {type StyleProp, View, type ViewStyle} from 'react-native' import {Trans} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {type CommonNavigatorParams} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -16,6 +15,7 @@ import * as Layout from '#/components/Layout' import {ListFooter} from '#/components/Lists' import * as ProfileCard from '#/components/ProfileCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' type Props = NativeStackScreenProps< CommonNavigatorParams, diff --git a/src/view/screens/ModerationModlists.tsx b/src/view/screens/ModerationModlists.tsx index 8db28327e7..aa8adbacc6 100644 --- a/src/view/screens/ModerationModlists.tsx +++ b/src/view/screens/ModerationModlists.tsx @@ -1,10 +1,10 @@ import {useCallback} from 'react' +import {AtUri} from '@atproto/syntax' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useNavigation} from '@react-navigation/native' -import {AtUri} from '@atproto/syntax' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import { type CommonNavigatorParams, diff --git a/src/view/screens/ModerationMutedAccounts.tsx b/src/view/screens/ModerationMutedAccounts.tsx index db3ebe9e85..e7574d54c6 100644 --- a/src/view/screens/ModerationMutedAccounts.tsx +++ b/src/view/screens/ModerationMutedAccounts.tsx @@ -3,7 +3,6 @@ import {type StyleProp, View, type ViewStyle} from 'react-native' import {Trans} from '@lingui/react/macro' import {type NativeStackScreenProps} from '@react-navigation/native-stack' -import {app} from '#/lexicons' import {type CommonNavigatorParams} from '#/lib/routes/types' import {cleanError} from '#/lib/strings/errors' import {logger} from '#/logger' @@ -16,6 +15,7 @@ import * as Layout from '#/components/Layout' import {ListFooter} from '#/components/Lists' import * as ProfileCard from '#/components/ProfileCard' import {Text} from '#/components/Typography' +import {app} from '#/lexicons' type Props = NativeStackScreenProps< CommonNavigatorParams, diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index 9780461f4c..0b4eb2b92a 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -10,7 +10,6 @@ import {Trans} from '@lingui/react/macro' import {useFocusEffect, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' -import {app} from '#/lexicons' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {useSetTitle} from '#/lib/hooks/useSetTitle' @@ -51,6 +50,7 @@ import {VideoClip_Stroke1_Corner0_Rounded as VideoIcon} from '#/components/icons import * as Layout from '#/components/Layout' import {ScreenHider} from '#/components/moderation/ScreenHider' import {ProfileStarterPacks} from '#/components/StarterPack/ProfileStarterPacks' +import {app} from '#/lexicons' import {navigate} from '#/Navigation' interface SectionRef { diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx index 2a03b932d0..1542cc66cc 100644 --- a/src/view/shell/desktop/LeftNav.tsx +++ b/src/view/shell/desktop/LeftNav.tsx @@ -4,7 +4,6 @@ import {plural} from '@lingui/core/macro' import {Trans, useLingui} from '@lingui/react/macro' import {useNavigation, useNavigationState} from '@react-navigation/native' -import {app} from '#/lexicons' import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher' import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {getCurrentRoute, isTab} from '#/lib/routes/helpers' @@ -86,6 +85,7 @@ import {useAgeAssurance} from '#/ageAssurance' import {useAnalytics} from '#/analytics' import {type Events} from '#/analytics/metrics/types' import {useActorStatus} from '#/features/liveNow' +import {app} from '#/lexicons' import {router} from '#/routes' import {PlatformInfo} from '../../../../modules/expo-bluesky-swiss-army'