From 3fe3c7a98dfd28abebe2a0f3e9cce581d6b6836d Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Thu, 4 Jan 2024 19:01:18 +0200 Subject: [PATCH] eslint: sort imports & exports --- packages/app/.eslintrc.cjs | 4 +- packages/app/package.json | 1 + packages/app/src/Cache/ChatCache.ts | 3 +- .../app/src/Cache/EventInteractionCache.ts | 3 +- packages/app/src/Cache/FollowListCache.ts | 6 +- packages/app/src/Cache/FollowsFeed.ts | 9 +-- packages/app/src/Cache/GiftWrapCache.ts | 6 +- packages/app/src/Cache/Notifications.ts | 12 ++-- packages/app/src/Cache/PaymentsCache.ts | 3 +- packages/app/src/Cache/RefreshFeedCache.ts | 1 + packages/app/src/Cache/index.ts | 10 +-- .../app/src/Components/Button/AsyncButton.tsx | 4 +- .../app/src/Components/Button/AsyncIcon.tsx | 2 +- .../app/src/Components/Button/BackButton.tsx | 1 + .../app/src/Components/Button/CloseButton.tsx | 3 +- .../app/src/Components/Button/IconButton.tsx | 3 +- .../src/Components/Button/LogoutButton.tsx | 3 +- packages/app/src/Components/Collapsed.tsx | 4 +- .../CommunityLeaders/LeaderBadge.tsx | 5 +- packages/app/src/Components/Copy/Copy.tsx | 2 + .../app/src/Components/Embed/CashuNuts.tsx | 5 +- packages/app/src/Components/Embed/Hashtag.tsx | 3 +- .../app/src/Components/Embed/HyperText.tsx | 37 +++++----- packages/app/src/Components/Embed/Invoice.tsx | 9 +-- .../app/src/Components/Embed/LinkPreview.tsx | 3 +- .../app/src/Components/Embed/MediaElement.tsx | 9 +-- packages/app/src/Components/Embed/Mention.tsx | 2 +- .../src/Components/Embed/MixCloudEmbed.tsx | 2 +- .../app/src/Components/Embed/NostrLink.tsx | 2 +- .../app/src/Components/Embed/PubkeyList.tsx | 14 ++-- .../app/src/Components/Embed/TidalEmbed.tsx | 1 + .../app/src/Components/Embed/ZapstrEmbed.tsx | 5 +- .../app/src/Components/ErrorOrOffline.tsx | 4 +- .../Components/Event/Create/NoteCreator.tsx | 43 ++++++------ .../Event/Create/NoteCreatorButton.tsx | 11 +-- .../Components/Event/Create/OkResponseRow.tsx | 19 ++--- .../Event/Create/TrendingHashTagsLine.tsx | 7 +- .../app/src/Components/Event/Create/util.ts | 2 +- .../app/src/Components/Event/HiddenNote.tsx | 3 +- .../app/src/Components/Event/LongFormText.tsx | 14 ++-- .../app/src/Components/Event/Markdown.tsx | 6 +- .../src/Components/Event/NostrFileHeader.tsx | 8 +-- packages/app/src/Components/Event/Note.tsx | 21 +++--- .../src/Components/Event/NoteContextMenu.tsx | 13 ++-- .../app/src/Components/Event/NoteFooter.tsx | 31 ++++----- .../app/src/Components/Event/NoteGhost.tsx | 1 + .../app/src/Components/Event/NoteInner.tsx | 43 ++++++------ .../app/src/Components/Event/NoteReaction.tsx | 15 ++-- packages/app/src/Components/Event/Poll.tsx | 12 ++-- .../app/src/Components/Event/Reactions.tsx | 16 ++--- packages/app/src/Components/Event/Reveal.tsx | 3 +- .../app/src/Components/Event/RevealMedia.tsx | 8 +-- .../app/src/Components/Event/ShowMore.tsx | 7 +- packages/app/src/Components/Event/Thread.tsx | 13 ++-- packages/app/src/Components/Event/Zap.tsx | 7 +- .../app/src/Components/Event/ZapButton.tsx | 5 +- packages/app/src/Components/Event/ZapGoal.tsx | 19 ++--- .../app/src/Components/Event/getEventMedia.ts | 3 +- packages/app/src/Components/Feed/Articles.tsx | 7 +- .../src/Components/Feed/DisplayAsSelector.tsx | 7 +- .../app/src/Components/Feed/ImageGridItem.tsx | 3 +- packages/app/src/Components/Feed/LoadMore.tsx | 2 +- packages/app/src/Components/Feed/RootTabs.tsx | 11 +-- packages/app/src/Components/Feed/Timeline.tsx | 17 ++--- .../src/Components/Feed/TimelineFollows.tsx | 19 ++--- .../src/Components/Feed/TimelineFragment.tsx | 2 +- .../src/Components/Feed/TimelineRenderer.tsx | 17 ++--- .../app/src/Components/Feed/UsersFeed.tsx | 6 +- packages/app/src/Components/Icons/Icon.tsx | 1 + packages/app/src/Components/Icons/Toggle.tsx | 1 + packages/app/src/Components/Invite.tsx | 10 +-- .../Components/IrisAccount/AccountName.tsx | 2 +- .../Components/IrisAccount/ActiveAccount.tsx | 7 +- .../Components/IrisAccount/IrisAccount.tsx | 9 +-- .../IrisAccount/ReservedAccount.tsx | 3 +- .../src/Components/LiveStream/LiveEvent.tsx | 5 +- .../src/Components/LiveStream/LiveStreams.tsx | 6 +- packages/app/src/Components/Modal/Modal.tsx | 3 +- packages/app/src/Components/Nip5Service.tsx | 32 ++++----- packages/app/src/Components/Offline.tsx | 8 ++- .../src/Components/PinPrompt/PinPrompt.tsx | 15 ++-- .../app/src/Components/Progress/Progress.tsx | 3 +- packages/app/src/Components/ProxyImg.tsx | 5 +- packages/app/src/Components/ReBroadcaster.tsx | 7 +- packages/app/src/Components/Relay/Relay.tsx | 20 +++--- .../src/Components/Relay/RelaysMetadata.tsx | 5 +- .../src/Components/SearchBox/SearchBox.tsx | 21 +++--- .../app/src/Components/SendSats/SendSats.tsx | 24 +++---- .../Components/Spotlight/SpotlightMedia.tsx | 3 +- .../Spotlight/SpotlightThreadModal.tsx | 9 +-- .../app/src/Components/SuggestedProfiles.tsx | 9 +-- packages/app/src/Components/Tabs/Tabs.tsx | 4 +- .../app/src/Components/Tasks/BackupKey.tsx | 7 +- .../app/src/Components/Tasks/DonateTask.tsx | 1 + .../app/src/Components/Tasks/Nip5Task.tsx | 3 +- .../src/Components/Tasks/NoticeZapPool.tsx | 1 + .../Components/Tasks/RenewSubscription.tsx | 4 +- .../app/src/Components/Tasks/TaskList.tsx | 16 +++-- packages/app/src/Components/Tasks/index.ts | 1 + packages/app/src/Components/Text/Text.tsx | 12 ++-- .../app/src/Components/Textarea/Textarea.tsx | 6 +- .../app/src/Components/Toaster/Toaster.tsx | 4 +- .../app/src/Components/Trending/ShortNote.tsx | 5 +- .../Components/Trending/TrendingHashtags.tsx | 14 ++-- .../src/Components/Trending/TrendingPosts.tsx | 22 +++--- .../src/Components/Trending/TrendingUsers.tsx | 8 ++- packages/app/src/Components/User/Avatar.tsx | 6 +- .../app/src/Components/User/AvatarEditor.tsx | 8 ++- .../app/src/Components/User/BadgeList.tsx | 7 +- .../app/src/Components/User/BlockButton.tsx | 3 +- .../app/src/Components/User/Bookmarks.tsx | 6 +- .../app/src/Components/User/DisplayName.tsx | 6 +- .../app/src/Components/User/FollowButton.tsx | 10 +-- .../User/FollowDistanceIndicator.tsx | 5 +- .../src/Components/User/FollowListBase.tsx | 16 ++--- .../app/src/Components/User/FollowedBy.tsx | 9 +-- .../app/src/Components/User/Following.tsx | 3 +- .../app/src/Components/User/FollowsYou.tsx | 1 + .../app/src/Components/User/MuteButton.tsx | 3 +- .../app/src/Components/User/MutedList.tsx | 3 +- packages/app/src/Components/User/Nip05.tsx | 1 + .../app/src/Components/User/NoteToSelf.tsx | 2 + .../app/src/Components/User/ProfileCard.tsx | 11 +-- .../app/src/Components/User/ProfileImage.tsx | 11 +-- .../app/src/Components/User/ProfileLink.tsx | 5 +- .../src/Components/User/ProfilePreview.tsx | 5 +- .../src/Components/User/UserWebsiteLink.tsx | 2 + packages/app/src/Components/User/Username.tsx | 2 +- .../WarningNotice/WarningNotice.tsx | 1 + packages/app/src/Db/IndexedDB.ts | 6 +- packages/app/src/Db/index.ts | 2 +- packages/app/src/External/SnortApi.ts | 3 +- packages/app/src/Feed/ArticlesFeed.ts | 3 +- packages/app/src/Feed/BadgesFeed.ts | 6 +- packages/app/src/Feed/FollowersFeed.ts | 4 +- packages/app/src/Feed/FollowsFeed.ts | 4 +- packages/app/src/Feed/HashtagsFeed.ts | 4 +- packages/app/src/Feed/LoginFeed.ts | 22 +++--- packages/app/src/Feed/RelayState.ts | 2 +- packages/app/src/Feed/RelaysFeed.tsx | 4 +- packages/app/src/Feed/StatusFeed.ts | 3 +- packages/app/src/Feed/ThreadFeed.ts | 4 +- packages/app/src/Feed/TimelineFeed.ts | 6 +- packages/app/src/Feed/ZapsFeed.ts | 4 +- .../app/src/Hooks/useCommunityLeaders.tsx | 3 +- packages/app/src/Hooks/useEventPublisher.tsx | 5 +- .../app/src/Hooks/useHorizontalScroll.tsx | 2 +- packages/app/src/Hooks/useImgProxy.ts | 3 +- .../app/src/Hooks/useInteractionCache.tsx | 2 +- packages/app/src/Hooks/useLogin.tsx | 3 +- packages/app/src/Hooks/useLoginHandler.tsx | 8 +-- packages/app/src/Hooks/useLoginRelays.tsx | 7 +- packages/app/src/Hooks/useModeration.tsx | 3 +- packages/app/src/Hooks/usePageWidth.tsx | 2 +- .../app/src/Hooks/useRefreshFeedcache.tsx | 7 +- packages/app/src/Hooks/useTheme.tsx | 1 + packages/app/src/Hooks/useThreadContext.tsx | 6 +- packages/app/src/IntlProvider.tsx | 6 +- packages/app/src/Pages/About.tsx | 5 +- packages/app/src/Pages/DeckLayout.tsx | 42 +++++------ packages/app/src/Pages/Discover.tsx | 5 +- packages/app/src/Pages/DonatePage.tsx | 23 ++++--- packages/app/src/Pages/ErrorPage.tsx | 5 +- .../app/src/Pages/FreeNostrAddressPage.tsx | 1 + packages/app/src/Pages/HashTagsPage.tsx | 14 ++-- packages/app/src/Pages/HelpPage.tsx | 7 +- packages/app/src/Pages/Layout/Footer.tsx | 17 ++--- .../Pages/Layout/HasNotificationsMarker.tsx | 3 +- packages/app/src/Pages/Layout/Header.tsx | 17 ++--- packages/app/src/Pages/Layout/LogoHeader.tsx | 14 ++-- packages/app/src/Pages/Layout/NavSidebar.tsx | 30 ++++---- .../src/Pages/Layout/NotificationsHeader.tsx | 17 ++--- packages/app/src/Pages/Layout/RightColumn.tsx | 9 +-- packages/app/src/Pages/Layout/index.tsx | 28 ++++---- packages/app/src/Pages/ListFeedPage.tsx | 2 +- packages/app/src/Pages/Messages/DM.tsx | 13 ++-- packages/app/src/Pages/Messages/DmWindow.tsx | 12 ++-- .../app/src/Pages/Messages/MessagesPage.tsx | 14 ++-- .../app/src/Pages/Messages/NewChatWindow.tsx | 19 ++--- .../src/Pages/Messages/Nip28ChatProfile.tsx | 5 +- .../app/src/Pages/Messages/WriteMessage.tsx | 5 +- packages/app/src/Pages/NetworkGraph.tsx | 12 ++-- packages/app/src/Pages/NostrAddressPage.tsx | 2 +- packages/app/src/Pages/NostrLinkHandler.tsx | 13 ++-- .../Pages/Notifications/NotificationChart.tsx | 17 ++--- .../src/Pages/Notifications/Notifications.tsx | 25 +++---- .../app/src/Pages/Profile/ProfilePage.tsx | 69 ++++++++++--------- packages/app/src/Pages/Profile/ProfileTab.tsx | 18 ++--- packages/app/src/Pages/Root.tsx | 28 ++++---- packages/app/src/Pages/SearchPage.tsx | 16 ++--- packages/app/src/Pages/ZapPool.tsx | 16 ++--- .../app/src/Pages/onboarding/discover.tsx | 4 +- packages/app/src/Pages/onboarding/index.tsx | 13 ++-- .../app/src/Pages/onboarding/moderation.tsx | 6 +- packages/app/src/Pages/onboarding/profile.tsx | 14 ++-- packages/app/src/Pages/onboarding/start.tsx | 15 ++-- packages/app/src/Pages/onboarding/topics.tsx | 7 +- packages/app/src/Pages/settings/Cache.tsx | 5 +- packages/app/src/Pages/settings/Keys.tsx | 5 +- packages/app/src/Pages/settings/Menu.tsx | 5 +- .../app/src/Pages/settings/Moderation.tsx | 7 +- .../app/src/Pages/settings/Notifications.tsx | 6 +- .../app/src/Pages/settings/Preferences.tsx | 7 +- packages/app/src/Pages/settings/Profile.tsx | 25 +++---- packages/app/src/Pages/settings/Referrals.tsx | 7 +- packages/app/src/Pages/settings/RelayInfo.tsx | 7 +- packages/app/src/Pages/settings/Relays.tsx | 12 ++-- packages/app/src/Pages/settings/Routes.tsx | 18 ++--- .../app/src/Pages/settings/WalletSettings.tsx | 9 +-- .../src/Pages/settings/handle/LNAddress.tsx | 4 +- .../src/Pages/settings/handle/ListHandles.tsx | 6 +- .../app/src/Pages/settings/handle/Manage.tsx | 4 +- .../Pages/settings/handle/TransferHandle.tsx | 2 +- .../settings/tools/follows-relay-health.tsx | 9 +-- .../app/src/Pages/settings/tools/index.tsx | 3 +- .../Pages/settings/tools/prune-follows.tsx | 10 +-- .../app/src/Pages/settings/wallet/Alby.tsx | 7 +- .../app/src/Pages/settings/wallet/Cashu.tsx | 2 +- .../app/src/Pages/settings/wallet/LNC.tsx | 2 +- .../app/src/Pages/settings/wallet/LNDHub.tsx | 4 +- .../app/src/Pages/settings/wallet/NWC.tsx | 2 +- .../app/src/Pages/settings/wallet/index.tsx | 3 +- .../Pages/subscribe/ManageSubscription.tsx | 5 +- packages/app/src/Pages/subscribe/RenewSub.tsx | 7 +- .../src/Pages/subscribe/SubscriptionCard.tsx | 9 +-- packages/app/src/Pages/subscribe/index.tsx | 14 ++-- packages/app/src/Pages/wallet/index.tsx | 12 ++-- packages/app/src/Pages/wallet/receive.tsx | 5 +- packages/app/src/Pages/wallet/send.tsx | 7 +- packages/app/src/State/NoteCreator.ts | 3 +- packages/app/src/Utils/Login/Functions.ts | 27 ++++---- packages/app/src/Utils/Login/LoginSession.ts | 5 +- .../app/src/Utils/Login/MultiAccountStore.ts | 8 +-- packages/app/src/Utils/Login/Nip7OsSigner.ts | 1 + packages/app/src/Utils/Login/Preferences.ts | 2 +- packages/app/src/Utils/Login/index.ts | 4 +- .../src/Utils/Nip05/SnortServiceProvider.ts | 1 + packages/app/src/Utils/Notifications.ts | 15 ++-- packages/app/src/Utils/Upload/Nip96.ts | 4 +- packages/app/src/Utils/Upload/NostrBuild.ts | 1 + packages/app/src/Utils/Upload/NostrImg.ts | 1 + packages/app/src/Utils/Upload/VoidCat.ts | 4 +- packages/app/src/Utils/Upload/index.ts | 15 ++-- packages/app/src/Utils/ZapPoolController.ts | 7 +- packages/app/src/Utils/Zapper.ts | 3 +- packages/app/src/Utils/index.ts | 28 ++++---- packages/app/src/Utils/nip6.ts | 2 +- packages/app/src/Utils/wasm.ts | 11 +-- packages/app/src/Wallet/AlbyWallet.ts | 6 +- packages/app/src/Wallet/Cashu.ts | 3 +- packages/app/src/Wallet/LNCWallet.ts | 3 +- packages/app/src/Wallet/LNDHub.ts | 1 + packages/app/src/Wallet/NostrWalletConnect.ts | 7 +- packages/app/src/Wallet/WebLN.ts | 3 +- packages/app/src/Wallet/index.ts | 5 +- packages/app/src/benchmarks.ts | 2 +- packages/app/src/chat/index.ts | 20 +++--- packages/app/src/chat/nip24.ts | 10 +-- packages/app/src/chat/nip28.ts | 12 ++-- packages/app/src/chat/nip29.ts | 7 +- packages/app/src/chat/nip4.ts | 11 +-- packages/app/src/index.tsx | 57 +++++++-------- packages/app/src/service-worker.ts | 11 +-- packages/app/src/setupTests.ts | 2 +- packages/app/src/system.ts | 11 +-- packages/app/vite.config.ts | 4 +- yarn.lock | 10 +++ 267 files changed, 1281 insertions(+), 1037 deletions(-) diff --git a/packages/app/.eslintrc.cjs b/packages/app/.eslintrc.cjs index 46f61f4c..87e39ed8 100644 --- a/packages/app/.eslintrc.cjs +++ b/packages/app/.eslintrc.cjs @@ -6,7 +6,7 @@ module.exports = { "plugin:react-hooks/recommended", ], parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint", "formatjs", "react-refresh"], + plugins: ["@typescript-eslint", "formatjs", "react-refresh", "simple-import-sort"], rules: { "formatjs/enforce-id": [ "error", @@ -17,6 +17,8 @@ module.exports = { "react/react-in-jsx-scope": "off", "react-hooks/exhaustive-deps": "off", "react-refresh/only-export-components": "warn", + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error" }, root: true, ignorePatterns: ["build/", "*.test.ts", "*.js"], diff --git a/packages/app/package.json b/packages/app/package.json index 036641c7..386716bc 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -102,6 +102,7 @@ "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", + "eslint-plugin-simple-import-sort": "^10.0.0", "postcss": "^8.4.31", "postcss-preset-env": "^9.2.0", "prettier": "2.8.3", diff --git a/packages/app/src/Cache/ChatCache.ts b/packages/app/src/Cache/ChatCache.ts index a3c24cae..053867c2 100644 --- a/packages/app/src/Cache/ChatCache.ts +++ b/packages/app/src/Cache/ChatCache.ts @@ -1,5 +1,6 @@ -import { NostrEvent } from "@snort/system"; import { FeedCache } from "@snort/shared"; +import { NostrEvent } from "@snort/system"; + import { db } from "@/Db"; export class ChatCache extends FeedCache { diff --git a/packages/app/src/Cache/EventInteractionCache.ts b/packages/app/src/Cache/EventInteractionCache.ts index 5ecbfa04..3d917ec1 100644 --- a/packages/app/src/Cache/EventInteractionCache.ts +++ b/packages/app/src/Cache/EventInteractionCache.ts @@ -1,7 +1,8 @@ import { FeedCache } from "@snort/shared"; + import { db, EventInteraction } from "@/Db"; -import { LoginStore } from "@/Utils/Login"; import { sha256 } from "@/Utils"; +import { LoginStore } from "@/Utils/Login"; export class EventInteractionCache extends FeedCache { constructor() { diff --git a/packages/app/src/Cache/FollowListCache.ts b/packages/app/src/Cache/FollowListCache.ts index 6b57db3f..c7be1c5d 100644 --- a/packages/app/src/Cache/FollowListCache.ts +++ b/packages/app/src/Cache/FollowListCache.ts @@ -1,9 +1,11 @@ -import { db } from "@/Db"; import { unixNowMs } from "@snort/shared"; import { EventKind, RequestBuilder, socialGraphInstance, TaggedNostrEvent } from "@snort/system"; -import { RefreshFeedCache } from "./RefreshFeedCache"; + +import { db } from "@/Db"; import { LoginSession } from "@/Utils/Login"; +import { RefreshFeedCache } from "./RefreshFeedCache"; + export class FollowListCache extends RefreshFeedCache { constructor() { super("FollowListCache", db.followLists); diff --git a/packages/app/src/Cache/FollowsFeed.ts b/packages/app/src/Cache/FollowsFeed.ts index 3557a955..6136a258 100644 --- a/packages/app/src/Cache/FollowsFeed.ts +++ b/packages/app/src/Cache/FollowsFeed.ts @@ -1,11 +1,12 @@ -import debug from "debug"; -import { EventKind, RequestBuilder, SystemInterface, TaggedNostrEvent } from "@snort/system"; import { unixNow, unixNowMs } from "@snort/shared"; +import { EventKind, RequestBuilder, SystemInterface, TaggedNostrEvent } from "@snort/system"; +import debug from "debug"; import { db } from "@/Db"; -import { RefreshFeedCache, TWithCreated } from "./RefreshFeedCache"; -import { LoginSession } from "@/Utils/Login"; import { Day, Hour } from "@/Utils/Const"; +import { LoginSession } from "@/Utils/Login"; + +import { RefreshFeedCache, TWithCreated } from "./RefreshFeedCache"; const WindowSize = Hour * 6; const MaxCacheWindow = Day * 7; diff --git a/packages/app/src/Cache/GiftWrapCache.ts b/packages/app/src/Cache/GiftWrapCache.ts index f277d380..5aacf7c3 100644 --- a/packages/app/src/Cache/GiftWrapCache.ts +++ b/packages/app/src/Cache/GiftWrapCache.ts @@ -1,9 +1,11 @@ import { EventKind, EventPublisher, RequestBuilder, TaggedNostrEvent } from "@snort/system"; -import { UnwrappedGift, db } from "@/Db"; + +import { db,UnwrappedGift } from "@/Db"; import { findTag, unwrap } from "@/Utils"; -import { RefreshFeedCache } from "./RefreshFeedCache"; import { LoginSession, LoginSessionType } from "@/Utils/Login"; +import { RefreshFeedCache } from "./RefreshFeedCache"; + export class GiftWrapCache extends RefreshFeedCache { constructor() { super("GiftWrapCache", db.gifts); diff --git a/packages/app/src/Cache/Notifications.ts b/packages/app/src/Cache/Notifications.ts index d07cc057..81b4604b 100644 --- a/packages/app/src/Cache/Notifications.ts +++ b/packages/app/src/Cache/Notifications.ts @@ -1,9 +1,11 @@ -import { EventKind, NostrEvent, RequestBuilder, TaggedNostrEvent } from "@snort/system"; -import { RefreshFeedCache, TWithCreated } from "./RefreshFeedCache"; -import { LoginSession } from "@/Utils/Login"; -import { NostrEventForSession, db } from "@/Db"; -import { Day } from "@/Utils/Const"; import { unixNow } from "@snort/shared"; +import { EventKind, NostrEvent, RequestBuilder, TaggedNostrEvent } from "@snort/system"; + +import { db,NostrEventForSession } from "@/Db"; +import { Day } from "@/Utils/Const"; +import { LoginSession } from "@/Utils/Login"; + +import { RefreshFeedCache, TWithCreated } from "./RefreshFeedCache"; export class NotificationsCache extends RefreshFeedCache { #kinds = [EventKind.TextNote, EventKind.Reaction, EventKind.Repost, EventKind.ZapReceipt]; diff --git a/packages/app/src/Cache/PaymentsCache.ts b/packages/app/src/Cache/PaymentsCache.ts index 928530bd..c892d9ef 100644 --- a/packages/app/src/Cache/PaymentsCache.ts +++ b/packages/app/src/Cache/PaymentsCache.ts @@ -1,6 +1,7 @@ -import { Payment, db } from "@/Db"; import { FeedCache } from "@snort/shared"; +import { db,Payment } from "@/Db"; + export class Payments extends FeedCache { constructor() { super("PaymentsCache", db.payments); diff --git a/packages/app/src/Cache/RefreshFeedCache.ts b/packages/app/src/Cache/RefreshFeedCache.ts index ce1ba80a..6a331ce4 100644 --- a/packages/app/src/Cache/RefreshFeedCache.ts +++ b/packages/app/src/Cache/RefreshFeedCache.ts @@ -1,5 +1,6 @@ import { FeedCache } from "@snort/shared"; import { EventPublisher, RequestBuilder, TaggedNostrEvent } from "@snort/system"; + import { LoginSession } from "@/Utils/Login"; export type TWithCreated = (T | Readonly) & { created_at: number }; diff --git a/packages/app/src/Cache/index.ts b/packages/app/src/Cache/index.ts index bfc0fdc3..18b0ff55 100644 --- a/packages/app/src/Cache/index.ts +++ b/packages/app/src/Cache/index.ts @@ -1,13 +1,13 @@ -import { UserProfileCache, UserRelaysCache, RelayMetricCache } from "@snort/system"; +import { RelayMetricCache,UserProfileCache, UserRelaysCache } from "@snort/system"; import { SnortSystemDb } from "@snort/system-web"; -import { EventInteractionCache } from "./EventInteractionCache"; import { ChatCache } from "./ChatCache"; -import { Payments } from "./PaymentsCache"; +import { EventInteractionCache } from "./EventInteractionCache"; +import { FollowListCache } from "./FollowListCache"; +import { FollowsFeedCache } from "./FollowsFeed"; import { GiftWrapCache } from "./GiftWrapCache"; import { NotificationsCache } from "./Notifications"; -import { FollowsFeedCache } from "./FollowsFeed"; -import { FollowListCache } from "./FollowListCache"; +import { Payments } from "./PaymentsCache"; export const SystemDb = new SnortSystemDb(); export const UserCache = new UserProfileCache(SystemDb.users); diff --git a/packages/app/src/Components/Button/AsyncButton.tsx b/packages/app/src/Components/Button/AsyncButton.tsx index 037fb74d..f662a86e 100644 --- a/packages/app/src/Components/Button/AsyncButton.tsx +++ b/packages/app/src/Components/Button/AsyncButton.tsx @@ -1,8 +1,10 @@ import "./AsyncButton.css"; + +import classNames from "classnames"; import React, { ForwardedRef } from "react"; + import Spinner from "@/Components/Icons/Spinner"; import useLoading from "@/Hooks/useLoading"; -import classNames from "classnames"; export interface AsyncButtonProps extends React.ButtonHTMLAttributes { onClick?: (e: React.MouseEvent) => Promise | void; diff --git a/packages/app/src/Components/Button/AsyncIcon.tsx b/packages/app/src/Components/Button/AsyncIcon.tsx index ffb53648..afb049a2 100644 --- a/packages/app/src/Components/Button/AsyncIcon.tsx +++ b/packages/app/src/Components/Button/AsyncIcon.tsx @@ -1,6 +1,6 @@ import Icon from "@/Components/Icons/Icon"; -import useLoading from "@/Hooks/useLoading"; import Spinner from "@/Components/Icons/Spinner"; +import useLoading from "@/Hooks/useLoading"; export type AsyncIconProps = React.HTMLProps & { iconName: string; diff --git a/packages/app/src/Components/Button/BackButton.tsx b/packages/app/src/Components/Button/BackButton.tsx index 9dd21611..c7c5c45f 100644 --- a/packages/app/src/Components/Button/BackButton.tsx +++ b/packages/app/src/Components/Button/BackButton.tsx @@ -1,4 +1,5 @@ import "./BackButton.css"; + import { useIntl } from "react-intl"; import Icon from "@/Components/Icons/Icon"; diff --git a/packages/app/src/Components/Button/CloseButton.tsx b/packages/app/src/Components/Button/CloseButton.tsx index 400c80ff..75f72683 100644 --- a/packages/app/src/Components/Button/CloseButton.tsx +++ b/packages/app/src/Components/Button/CloseButton.tsx @@ -1,6 +1,7 @@ -import Icon from "@/Components/Icons/Icon"; import classNames from "classnames"; +import Icon from "@/Components/Icons/Icon"; + export default function CloseButton({ onClick, className }: { onClick?: () => void; className?: string }) { return (
void; icon: IconProps; diff --git a/packages/app/src/Components/Button/LogoutButton.tsx b/packages/app/src/Components/Button/LogoutButton.tsx index b29a603b..58b00901 100644 --- a/packages/app/src/Components/Button/LogoutButton.tsx +++ b/packages/app/src/Components/Button/LogoutButton.tsx @@ -1,8 +1,9 @@ import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; -import { logout } from "@/Utils/Login"; import useLogin from "@/Hooks/useLogin"; +import { logout } from "@/Utils/Login"; + import messages from "../messages"; export default function LogoutButton() { diff --git a/packages/app/src/Components/Collapsed.tsx b/packages/app/src/Components/Collapsed.tsx index fb5986ae..de7f9e6d 100644 --- a/packages/app/src/Components/Collapsed.tsx +++ b/packages/app/src/Components/Collapsed.tsx @@ -1,8 +1,8 @@ -import { useState, ReactNode } from "react"; import classNames from "classnames"; +import { ReactNode,useState } from "react"; -import Icon from "@/Components/Icons/Icon"; import ShowMore from "@/Components/Event/ShowMore"; +import Icon from "@/Components/Icons/Icon"; interface CollapsedProps { text?: string; diff --git a/packages/app/src/Components/CommunityLeaders/LeaderBadge.tsx b/packages/app/src/Components/CommunityLeaders/LeaderBadge.tsx index a883efec..c8b9a7d8 100644 --- a/packages/app/src/Components/CommunityLeaders/LeaderBadge.tsx +++ b/packages/app/src/Components/CommunityLeaders/LeaderBadge.tsx @@ -1,9 +1,10 @@ import { useState } from "react"; import { FormattedMessage } from "react-intl"; -import AwardIcon from "./Award"; -import Modal from "../Modal/Modal"; import { Link } from "react-router-dom"; + import CloseButton from "../Button/CloseButton"; +import Modal from "../Modal/Modal"; +import AwardIcon from "./Award"; export function LeaderBadge() { const [showModal, setShowModal] = useState(false); diff --git a/packages/app/src/Components/Copy/Copy.tsx b/packages/app/src/Components/Copy/Copy.tsx index f7f4223c..70ec3125 100644 --- a/packages/app/src/Components/Copy/Copy.tsx +++ b/packages/app/src/Components/Copy/Copy.tsx @@ -1,5 +1,7 @@ import "./Copy.css"; + import classNames from "classnames"; + import Icon from "@/Components/Icons/Icon"; import { useCopy } from "@/Hooks/useCopy"; diff --git a/packages/app/src/Components/Embed/CashuNuts.tsx b/packages/app/src/Components/Embed/CashuNuts.tsx index 7a29dfbe..6bf405b5 100644 --- a/packages/app/src/Components/Embed/CashuNuts.tsx +++ b/packages/app/src/Components/Embed/CashuNuts.tsx @@ -1,10 +1,11 @@ import "./CashuNuts.css"; + +import { useUserProfile } from "@snort/system-react"; import { useEffect, useState } from "react"; import { FormattedMessage, FormattedNumber } from "react-intl"; -import { useUserProfile } from "@snort/system-react"; -import useLogin from "@/Hooks/useLogin"; import Icon from "@/Components/Icons/Icon"; +import useLogin from "@/Hooks/useLogin"; interface Token { token: Array<{ diff --git a/packages/app/src/Components/Embed/Hashtag.tsx b/packages/app/src/Components/Embed/Hashtag.tsx index 0bc5a2ad..868eb442 100644 --- a/packages/app/src/Components/Embed/Hashtag.tsx +++ b/packages/app/src/Components/Embed/Hashtag.tsx @@ -1,6 +1,7 @@ -import { Link } from "react-router-dom"; import "./Hashtag.css"; +import { Link } from "react-router-dom"; + const Hashtag = ({ tag }: { tag: string }) => { return ( diff --git a/packages/app/src/Components/Embed/HyperText.tsx b/packages/app/src/Components/Embed/HyperText.tsx index 6e4db5d7..fd879145 100644 --- a/packages/app/src/Components/Embed/HyperText.tsx +++ b/packages/app/src/Components/Embed/HyperText.tsx @@ -1,26 +1,27 @@ -import { - YoutubeUrlRegex, - TidalRegex, - SoundCloudRegex, - MixCloudRegex, - SpotifyRegex, - TwitchRegex, - AppleMusicRegex, - NostrNestsRegex, - WavlakeRegex, -} from "@/Utils/Const"; -import { magnetURIDecode } from "@/Utils"; -import SoundCloudEmbed from "@/Components/Embed/SoundCloudEmded"; +import { ReactNode } from "react"; + +import AppleMusicEmbed from "@/Components/Embed/AppleMusicEmbed"; +import LinkPreview from "@/Components/Embed/LinkPreview"; +import MagnetLink from "@/Components/Embed/MagnetLink"; import MixCloudEmbed from "@/Components/Embed/MixCloudEmbed"; +import NostrLink from "@/Components/Embed/NostrLink"; +import SoundCloudEmbed from "@/Components/Embed/SoundCloudEmded"; import SpotifyEmbed from "@/Components/Embed/SpotifyEmbed"; import TidalEmbed from "@/Components/Embed/TidalEmbed"; import TwitchEmbed from "@/Components/Embed/TwitchEmbed"; -import AppleMusicEmbed from "@/Components/Embed/AppleMusicEmbed"; import WavlakeEmbed from "@/Components/Embed/WavlakeEmbed"; -import LinkPreview from "@/Components/Embed/LinkPreview"; -import NostrLink from "@/Components/Embed/NostrLink"; -import MagnetLink from "@/Components/Embed/MagnetLink"; -import { ReactNode } from "react"; +import { magnetURIDecode } from "@/Utils"; +import { + AppleMusicRegex, + MixCloudRegex, + NostrNestsRegex, + SoundCloudRegex, + SpotifyRegex, + TidalRegex, + TwitchRegex, + WavlakeRegex, + YoutubeUrlRegex, +} from "@/Utils/Const"; interface HypeTextProps { link: string; diff --git a/packages/app/src/Components/Embed/Invoice.tsx b/packages/app/src/Components/Embed/Invoice.tsx index 99618a09..8307745c 100644 --- a/packages/app/src/Components/Embed/Invoice.tsx +++ b/packages/app/src/Components/Embed/Invoice.tsx @@ -1,12 +1,13 @@ import "./Invoice.css"; -import { useState } from "react"; -import { useIntl, FormattedMessage } from "react-intl"; -import { useMemo } from "react"; + import { decodeInvoice } from "@snort/shared"; import classNames from "classnames"; +import { useState } from "react"; +import { useMemo } from "react"; +import { FormattedMessage,useIntl } from "react-intl"; -import SendSats from "@/Components/SendSats/SendSats"; import Icon from "@/Components/Icons/Icon"; +import SendSats from "@/Components/SendSats/SendSats"; import { useWallet } from "@/Wallet"; import messages from "../messages"; diff --git a/packages/app/src/Components/Embed/LinkPreview.tsx b/packages/app/src/Components/Embed/LinkPreview.tsx index 1ab9cb68..89913da2 100644 --- a/packages/app/src/Components/Embed/LinkPreview.tsx +++ b/packages/app/src/Components/Embed/LinkPreview.tsx @@ -1,10 +1,11 @@ import "./LinkPreview.css"; + import { CSSProperties, useEffect, useState } from "react"; +import { MediaElement } from "@/Components/Embed/MediaElement"; import Spinner from "@/Components/Icons/Spinner"; import SnortApi, { LinkPreviewData } from "@/External/SnortApi"; import useImgProxy from "@/Hooks/useImgProxy"; -import { MediaElement } from "@/Components/Embed/MediaElement"; async function fetchUrlPreviewInfo(url: string) { const api = new SnortApi(); diff --git a/packages/app/src/Components/Embed/MediaElement.tsx b/packages/app/src/Components/Embed/MediaElement.tsx index 2a9da30e..da5673d6 100644 --- a/packages/app/src/Components/Embed/MediaElement.tsx +++ b/packages/app/src/Components/Embed/MediaElement.tsx @@ -1,9 +1,10 @@ +import { IMeta } from "@snort/system"; +import classNames from "classnames"; +import React, { CSSProperties, useEffect, useMemo, useRef } from "react"; +import { useInView } from "react-intersection-observer"; + import { ProxyImg } from "@/Components/ProxyImg"; import useImgProxy from "@/Hooks/useImgProxy"; -import { IMeta } from "@snort/system"; -import React, { CSSProperties, useEffect, useMemo, useRef } from "react"; -import classNames from "classnames"; -import { useInView } from "react-intersection-observer"; interface MediaElementProps { mime: string; diff --git a/packages/app/src/Components/Embed/Mention.tsx b/packages/app/src/Components/Embed/Mention.tsx index e91b1786..3e1b7446 100644 --- a/packages/app/src/Components/Embed/Mention.tsx +++ b/packages/app/src/Components/Embed/Mention.tsx @@ -1,10 +1,10 @@ import { NostrLink, NostrPrefix } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; +import { useCallback, useRef, useState } from "react"; import DisplayName from "@/Components/User/DisplayName"; import { ProfileCard } from "@/Components/User/ProfileCard"; import { ProfileLink } from "@/Components/User/ProfileLink"; -import { useCallback, useRef, useState } from "react"; export default function Mention({ link }: { link: NostrLink }) { const profile = useUserProfile(link.id); diff --git a/packages/app/src/Components/Embed/MixCloudEmbed.tsx b/packages/app/src/Components/Embed/MixCloudEmbed.tsx index 6350a6e6..47c9367e 100644 --- a/packages/app/src/Components/Embed/MixCloudEmbed.tsx +++ b/packages/app/src/Components/Embed/MixCloudEmbed.tsx @@ -1,5 +1,5 @@ -import { MixCloudRegex } from "@/Utils/Const"; import useLogin from "@/Hooks/useLogin"; +import { MixCloudRegex } from "@/Utils/Const"; const MixCloudEmbed = ({ link }: { link: string }) => { const feedPath = (MixCloudRegex.test(link) && RegExp.$1) + "%2F" + (MixCloudRegex.test(link) && RegExp.$2); diff --git a/packages/app/src/Components/Embed/NostrLink.tsx b/packages/app/src/Components/Embed/NostrLink.tsx index 21852063..7c9d700a 100644 --- a/packages/app/src/Components/Embed/NostrLink.tsx +++ b/packages/app/src/Components/Embed/NostrLink.tsx @@ -1,5 +1,5 @@ -import { Link } from "react-router-dom"; import { NostrPrefix, tryParseNostrLink } from "@snort/system"; +import { Link } from "react-router-dom"; import Mention from "@/Components/Embed/Mention"; import NoteQuote from "@/Components/Event/NoteQuote"; diff --git a/packages/app/src/Components/Embed/PubkeyList.tsx b/packages/app/src/Components/Embed/PubkeyList.tsx index 5973a237..a1a957af 100644 --- a/packages/app/src/Components/Embed/PubkeyList.tsx +++ b/packages/app/src/Components/Embed/PubkeyList.tsx @@ -1,15 +1,15 @@ +import { LNURL } from "@snort/shared"; import { NostrEvent } from "@snort/system"; import { FormattedMessage, FormattedNumber } from "react-intl"; -import { LNURL } from "@snort/shared"; -import { dedupe, findTag, hexToBech32, getDisplayName } from "@/Utils"; -import FollowListBase from "@/Components/User/FollowListBase"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import { useWallet } from "@/Wallet"; -import { Toastore } from "@/Components/Toaster/Toaster"; import { UserCache } from "@/Cache"; -import useLogin from "@/Hooks/useLogin"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import { Toastore } from "@/Components/Toaster/Toaster"; +import FollowListBase from "@/Components/User/FollowListBase"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { dedupe, findTag, getDisplayName,hexToBech32 } from "@/Utils"; +import { useWallet } from "@/Wallet"; import { WalletInvoiceState } from "@/Wallet"; export default function PubkeyList({ ev, className }: { ev: NostrEvent; className?: string }) { diff --git a/packages/app/src/Components/Embed/TidalEmbed.tsx b/packages/app/src/Components/Embed/TidalEmbed.tsx index b106c630..3cd58c8e 100644 --- a/packages/app/src/Components/Embed/TidalEmbed.tsx +++ b/packages/app/src/Components/Embed/TidalEmbed.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from "react"; + import { TidalRegex } from "@/Utils/Const"; // Re-use dom parser across instances of TidalEmbed diff --git a/packages/app/src/Components/Embed/ZapstrEmbed.tsx b/packages/app/src/Components/Embed/ZapstrEmbed.tsx index 7d612282..bde6470d 100644 --- a/packages/app/src/Components/Embed/ZapstrEmbed.tsx +++ b/packages/app/src/Components/Embed/ZapstrEmbed.tsx @@ -1,10 +1,11 @@ import "./ZapstrEmbed.css"; -import { Link } from "react-router-dom"; + import { NostrEvent, NostrLink } from "@snort/system"; +import { FormattedMessage } from "react-intl"; +import { Link } from "react-router-dom"; import { ProxyImg } from "@/Components/ProxyImg"; import ProfileImage from "@/Components/User/ProfileImage"; -import { FormattedMessage } from "react-intl"; export default function ZapstrEmbed({ ev }: { ev: NostrEvent }) { const media = ev.tags.find(a => a[0] === "media"); diff --git a/packages/app/src/Components/ErrorOrOffline.tsx b/packages/app/src/Components/ErrorOrOffline.tsx index 0783e775..fde4950a 100644 --- a/packages/app/src/Components/ErrorOrOffline.tsx +++ b/packages/app/src/Components/ErrorOrOffline.tsx @@ -1,8 +1,10 @@ import { OfflineError } from "@snort/shared"; -import { Offline } from "./Offline"; import classNames from "classnames"; + import Icon from "@/Components/Icons/Icon"; +import { Offline } from "./Offline"; + export function ErrorOrOffline({ error, onRetry, diff --git a/packages/app/src/Components/Event/Create/NoteCreator.tsx b/packages/app/src/Components/Event/Create/NoteCreator.tsx index 84f5d577..45ca4612 100644 --- a/packages/app/src/Components/Event/Create/NoteCreator.tsx +++ b/packages/app/src/Components/Event/Create/NoteCreator.tsx @@ -1,33 +1,34 @@ import "./NoteCreator.css"; -import { FormattedMessage, useIntl } from "react-intl"; + +import { fetchNip05Pubkey, unixNow } from "@snort/shared"; import { EventBuilder, EventKind, NostrLink, NostrPrefix, TaggedNostrEvent, tryParseNostrLink } from "@snort/system"; import classNames from "classnames"; +import { ClipboardEventHandler, DragEvent, useEffect } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; import { TagsInput } from "react-tag-input-component"; -import Icon from "@/Components/Icons/Icon"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { appendDedupe, openFile, trackEvent } from "@/Utils"; -import Textarea from "@/Components/Textarea/Textarea"; -import Modal from "@/Components/Modal/Modal"; -import ProfileImage from "@/Components/User/ProfileImage"; -import useFileUpload from "@/Utils/Upload"; -import Note from "@/Components/Event/Note"; - -import { ClipboardEventHandler, DragEvent, useEffect } from "react"; -import useLogin from "@/Hooks/useLogin"; import AsyncButton from "@/Components/Button/AsyncButton"; import { AsyncIcon } from "@/Components/Button/AsyncIcon"; -import { fetchNip05Pubkey, unixNow } from "@snort/shared"; -import { ZapTarget } from "@/Utils/Zapper"; -import { useNoteCreator } from "@/State/NoteCreator"; -import FileUploadProgress from "../FileUpload"; -import { ToggleSwitch } from "@/Components/Icons/Toggle"; -import { sendEventToRelays } from "@/Components/Event/Create/util"; -import { TrendingHashTagsLine } from "@/Components/Event/Create/TrendingHashTagsLine"; -import { Toastore } from "@/Components/Toaster/Toaster"; -import { OkResponseRow } from "./OkResponseRow"; import CloseButton from "@/Components/Button/CloseButton"; +import { TrendingHashTagsLine } from "@/Components/Event/Create/TrendingHashTagsLine"; +import { sendEventToRelays } from "@/Components/Event/Create/util"; +import Note from "@/Components/Event/Note"; +import Icon from "@/Components/Icons/Icon"; +import { ToggleSwitch } from "@/Components/Icons/Toggle"; +import Modal from "@/Components/Modal/Modal"; +import Textarea from "@/Components/Textarea/Textarea"; +import { Toastore } from "@/Components/Toaster/Toaster"; +import ProfileImage from "@/Components/User/ProfileImage"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { useNoteCreator } from "@/State/NoteCreator"; +import { appendDedupe, openFile, trackEvent } from "@/Utils"; +import useFileUpload from "@/Utils/Upload"; import { GetPowWorker } from "@/Utils/wasm"; +import { ZapTarget } from "@/Utils/Zapper"; + +import FileUploadProgress from "../FileUpload"; +import { OkResponseRow } from "./OkResponseRow"; export function NoteCreator() { const { formatMessage } = useIntl(); diff --git a/packages/app/src/Components/Event/Create/NoteCreatorButton.tsx b/packages/app/src/Components/Event/Create/NoteCreatorButton.tsx index 2a9441d9..f74512c6 100644 --- a/packages/app/src/Components/Event/Create/NoteCreatorButton.tsx +++ b/packages/app/src/Components/Event/Create/NoteCreatorButton.tsx @@ -1,14 +1,15 @@ -import { useRef, useMemo } from "react"; -import { useLocation } from "react-router-dom"; import classNames from "classnames"; +import { useMemo,useRef } from "react"; +import { FormattedMessage } from "react-intl"; +import { useLocation } from "react-router-dom"; -import { isFormElement } from "@/Utils"; +import Icon from "@/Components/Icons/Icon"; import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; import useLogin from "@/Hooks/useLogin"; -import Icon from "@/Components/Icons/Icon"; import { useNoteCreator } from "@/State/NoteCreator"; +import { isFormElement } from "@/Utils"; + import { NoteCreator } from "./NoteCreator"; -import { FormattedMessage } from "react-intl"; export const NoteCreatorButton = ({ className, diff --git a/packages/app/src/Components/Event/Create/OkResponseRow.tsx b/packages/app/src/Components/Event/Create/OkResponseRow.tsx index 730d64d9..998bbbf9 100644 --- a/packages/app/src/Components/Event/Create/OkResponseRow.tsx +++ b/packages/app/src/Components/Event/Create/OkResponseRow.tsx @@ -1,16 +1,17 @@ -import AsyncButton from "@/Components/Button/AsyncButton"; -import IconButton from "@/Components/Button/IconButton"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import useLogin from "@/Hooks/useLogin"; -import Icon from "@/Components/Icons/Icon"; -import { removeRelay } from "@/Utils/Login"; -import { saveRelays } from "@/Pages/settings/Relays"; -import { getRelayName } from "@/Utils"; -import { unwrap, sanitizeRelayUrl } from "@snort/shared"; +import { sanitizeRelayUrl,unwrap } from "@snort/shared"; import { OkResponse } from "@snort/system"; import { useState } from "react"; import { useIntl } from "react-intl"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import IconButton from "@/Components/Button/IconButton"; +import Icon from "@/Components/Icons/Icon"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { saveRelays } from "@/Pages/settings/Relays"; +import { getRelayName } from "@/Utils"; +import { removeRelay } from "@/Utils/Login"; + export function OkResponseRow({ rsp, close }: { rsp: OkResponse; close: () => void }) { const [r, setResult] = useState(rsp); const { formatMessage } = useIntl(); diff --git a/packages/app/src/Components/Event/Create/TrendingHashTagsLine.tsx b/packages/app/src/Components/Event/Create/TrendingHashTagsLine.tsx index 9fd42e50..93b0f1c3 100644 --- a/packages/app/src/Components/Event/Create/TrendingHashTagsLine.tsx +++ b/packages/app/src/Components/Event/Create/TrendingHashTagsLine.tsx @@ -1,8 +1,9 @@ -import { useLocale } from "@/IntlProvider"; -import NostrBandApi from "@/External/NostrBand"; import { FormattedMessage } from "react-intl"; -import useCachedFetch from "@/Hooks/useCachedFetch"; + import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; +import NostrBandApi from "@/External/NostrBand"; +import useCachedFetch from "@/Hooks/useCachedFetch"; +import { useLocale } from "@/IntlProvider"; export function TrendingHashTagsLine(props: { onClick: (tag: string) => void }) { const { lang } = useLocale(); diff --git a/packages/app/src/Components/Event/Create/util.ts b/packages/app/src/Components/Event/Create/util.ts index cf9bfabc..cd470c3a 100644 --- a/packages/app/src/Components/Event/Create/util.ts +++ b/packages/app/src/Components/Event/Create/util.ts @@ -1,5 +1,5 @@ -import { NostrEvent, OkResponse, SystemInterface } from "@snort/system"; import { removeUndefined } from "@snort/shared"; +import { NostrEvent, OkResponse, SystemInterface } from "@snort/system"; export async function sendEventToRelays( system: SystemInterface, diff --git a/packages/app/src/Components/Event/HiddenNote.tsx b/packages/app/src/Components/Event/HiddenNote.tsx index 50b380f4..9064b10d 100644 --- a/packages/app/src/Components/Event/HiddenNote.tsx +++ b/packages/app/src/Components/Event/HiddenNote.tsx @@ -1,7 +1,8 @@ -import messages from "../messages"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; +import messages from "../messages"; + const HiddenNote = ({ children }: { children: React.ReactNode }) => { const [show, setShow] = useState(false); return show ? ( diff --git a/packages/app/src/Components/Event/LongFormText.tsx b/packages/app/src/Components/Event/LongFormText.tsx index 7eb73930..ab65eb20 100644 --- a/packages/app/src/Components/Event/LongFormText.tsx +++ b/packages/app/src/Components/Event/LongFormText.tsx @@ -1,17 +1,19 @@ import "./LongFormText.css"; -import React, { CSSProperties, useCallback, useRef, useState } from "react"; -import { FormattedMessage, FormattedNumber } from "react-intl"; + import { NostrLink, TaggedNostrEvent } from "@snort/system"; import { useEventReactions } from "@snort/system-react"; +import classNames from "classnames"; +import React, { CSSProperties, useCallback, useRef, useState } from "react"; +import { FormattedMessage, FormattedNumber } from "react-intl"; -import { findTag } from "@/Utils"; import Text from "@/Components/Text/Text"; -import { Markdown } from "./Markdown"; -import useImgProxy from "@/Hooks/useImgProxy"; import ProfilePreview from "@/Components/User/ProfilePreview"; +import useImgProxy from "@/Hooks/useImgProxy"; +import { findTag } from "@/Utils"; + +import { Markdown } from "./Markdown"; import NoteFooter from "./NoteFooter"; import NoteTime from "./NoteTime"; -import classNames from "classnames"; interface LongFormTextProps { ev: TaggedNostrEvent; diff --git a/packages/app/src/Components/Event/Markdown.tsx b/packages/app/src/Components/Event/Markdown.tsx index f2ea53e9..b9a1220b 100644 --- a/packages/app/src/Components/Event/Markdown.tsx +++ b/packages/app/src/Components/Event/Markdown.tsx @@ -1,13 +1,13 @@ import "./Markdown.css"; -import { ReactNode, forwardRef, useMemo } from "react"; import { transformText } from "@snort/system"; import { marked, Token } from "marked"; +import markedFootnote, { Footnote, FootnoteRef,Footnotes } from "marked-footnote"; +import { forwardRef, ReactNode, useMemo } from "react"; import { Link } from "react-router-dom"; -import markedFootnote, { Footnotes, Footnote, FootnoteRef } from "marked-footnote"; -import { ProxyImg } from "@/Components/ProxyImg"; import NostrLink from "@/Components/Embed/NostrLink"; +import { ProxyImg } from "@/Components/ProxyImg"; interface MarkdownProps { content: string; diff --git a/packages/app/src/Components/Event/NostrFileHeader.tsx b/packages/app/src/Components/Event/NostrFileHeader.tsx index 7312fdbe..243ea698 100644 --- a/packages/app/src/Components/Event/NostrFileHeader.tsx +++ b/packages/app/src/Components/Event/NostrFileHeader.tsx @@ -1,11 +1,11 @@ -import { FormattedMessage } from "react-intl"; import { NostrEvent, NostrLink } from "@snort/system"; import { useEventFeed } from "@snort/system-react"; +import { FormattedMessage } from "react-intl"; -import { findTag } from "@/Utils"; -import PageSpinner from "@/Components/PageSpinner"; -import Reveal from "@/Components/Event/Reveal"; import { MediaElement } from "@/Components/Embed/MediaElement"; +import Reveal from "@/Components/Event/Reveal"; +import PageSpinner from "@/Components/PageSpinner"; +import { findTag } from "@/Utils"; export default function NostrFileHeader({ link }: { link: NostrLink }) { const ev = useEventFeed(link); diff --git a/packages/app/src/Components/Event/Note.tsx b/packages/app/src/Components/Event/Note.tsx index 58769b80..d159324f 100644 --- a/packages/app/src/Components/Event/Note.tsx +++ b/packages/app/src/Components/Event/Note.tsx @@ -1,16 +1,19 @@ import "./Note.css"; -import { ReactNode } from "react"; + import { EventKind, NostrEvent, TaggedNostrEvent } from "@snort/system"; -import { NostrFileElement } from "@/Components/Event/NostrFileHeader"; -import ZapstrEmbed from "@/Components/Embed/ZapstrEmbed"; +import { ReactNode } from "react"; + import PubkeyList from "@/Components/Embed/PubkeyList"; -import { LiveEvent } from "@/Components/LiveStream/LiveEvent"; -import { ZapGoal } from "@/Components/Event/ZapGoal"; -import NoteReaction from "@/Components/Event/NoteReaction"; -import ProfilePreview from "@/Components/User/ProfilePreview"; -import { NoteInner } from "./NoteInner"; -import { LongFormText } from "./LongFormText"; +import ZapstrEmbed from "@/Components/Embed/ZapstrEmbed"; import ErrorBoundary from "@/Components/ErrorBoundary"; +import { NostrFileElement } from "@/Components/Event/NostrFileHeader"; +import NoteReaction from "@/Components/Event/NoteReaction"; +import { ZapGoal } from "@/Components/Event/ZapGoal"; +import { LiveEvent } from "@/Components/LiveStream/LiveEvent"; +import ProfilePreview from "@/Components/User/ProfilePreview"; + +import { LongFormText } from "./LongFormText"; +import { NoteInner } from "./NoteInner"; export interface NoteProps { data: TaggedNostrEvent; diff --git a/packages/app/src/Components/Event/NoteContextMenu.tsx b/packages/app/src/Components/Event/NoteContextMenu.tsx index 311a869c..2565ba64 100644 --- a/packages/app/src/Components/Event/NoteContextMenu.tsx +++ b/packages/app/src/Components/Event/NoteContextMenu.tsx @@ -1,17 +1,18 @@ -import { useEffect, useState } from "react"; -import { FormattedMessage, useIntl } from "react-intl"; import { HexKey, NostrLink, NostrPrefix, TaggedNostrEvent } from "@snort/system"; import { Menu, MenuItem } from "@szhsin/react-menu"; +import { useEffect, useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; import Icon from "@/Components/Icons/Icon"; -import { setPinned, setBookmarked } from "@/Utils/Login"; import messages from "@/Components/messages"; +import SnortApi from "@/External/SnortApi"; +import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; import useModeration from "@/Hooks/useModeration"; -import useEventPublisher from "@/Hooks/useEventPublisher"; +import { setBookmarked,setPinned } from "@/Utils/Login"; +import { getCurrentSubscription,SubscriptionType } from "@/Utils/Subscription"; + import { ReBroadcaster } from "../ReBroadcaster"; -import SnortApi from "@/External/SnortApi"; -import { SubscriptionType, getCurrentSubscription } from "@/Utils/Subscription"; export interface NoteTranslation { text: string; diff --git a/packages/app/src/Components/Event/NoteFooter.tsx b/packages/app/src/Components/Event/NoteFooter.tsx index 760c6a9b..b81e52bc 100644 --- a/packages/app/src/Components/Event/NoteFooter.tsx +++ b/packages/app/src/Components/Event/NoteFooter.tsx @@ -1,26 +1,25 @@ -import React, { forwardRef, useEffect, useState } from "react"; -import { FormattedMessage, useIntl } from "react-intl"; -import { useLongPress } from "use-long-press"; -import { TaggedNostrEvent, ParsedZap, countLeadingZeros, NostrLink } from "@snort/system"; import { normalizeReaction } from "@snort/shared"; +import { countLeadingZeros, NostrLink,ParsedZap, TaggedNostrEvent } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; import { Menu, MenuItem } from "@szhsin/react-menu"; import classNames from "classnames"; +import React, { forwardRef, useEffect, useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; +import { useLongPress } from "use-long-press"; -import { formatShort } from "@/Utils/Number"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { delay, findTag, getDisplayName } from "@/Utils"; -import SendSats from "@/Components/SendSats/SendSats"; -import { ZapsSummary } from "@/Components/Event/Zap"; import { AsyncIcon, AsyncIconProps } from "@/Components/Button/AsyncIcon"; - -import { useWallet } from "@/Wallet"; -import useLogin from "@/Hooks/useLogin"; -import { useInteractionCache } from "@/Hooks/useInteractionCache"; -import { ZapPoolController } from "@/Utils/ZapPoolController"; -import { Zapper, ZapTarget } from "@/Utils/Zapper"; -import { useNoteCreator } from "@/State/NoteCreator"; +import { ZapsSummary } from "@/Components/Event/Zap"; import Icon from "@/Components/Icons/Icon"; +import SendSats from "@/Components/SendSats/SendSats"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import { useInteractionCache } from "@/Hooks/useInteractionCache"; +import useLogin from "@/Hooks/useLogin"; +import { useNoteCreator } from "@/State/NoteCreator"; +import { delay, findTag, getDisplayName } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; +import { Zapper, ZapTarget } from "@/Utils/Zapper"; +import { ZapPoolController } from "@/Utils/ZapPoolController"; +import { useWallet } from "@/Wallet"; import messages from "../messages"; diff --git a/packages/app/src/Components/Event/NoteGhost.tsx b/packages/app/src/Components/Event/NoteGhost.tsx index ace147c8..96ab06f5 100644 --- a/packages/app/src/Components/Event/NoteGhost.tsx +++ b/packages/app/src/Components/Event/NoteGhost.tsx @@ -1,4 +1,5 @@ import "./Note.css"; + import ProfileImage from "@/Components/User/ProfileImage"; interface NoteGhostProps { diff --git a/packages/app/src/Components/Event/NoteInner.tsx b/packages/app/src/Components/Event/NoteInner.tsx index 89ffb3ca..e8b58ea6 100644 --- a/packages/app/src/Components/Event/NoteInner.tsx +++ b/packages/app/src/Components/Event/NoteInner.tsx @@ -1,32 +1,33 @@ -import { Link, useNavigate } from "react-router-dom"; +import { EventExt, EventKind, HexKey, NostrLink, NostrPrefix, TaggedNostrEvent } from "@snort/system"; +import { useEventReactions } from "@snort/system-react"; +import classNames from "classnames"; import React, { ReactNode, useMemo, useState } from "react"; import { useInView } from "react-intersection-observer"; import { FormattedMessage, useIntl } from "react-intl"; -import classNames from "classnames"; -import { EventExt, EventKind, HexKey, NostrLink, NostrPrefix, TaggedNostrEvent } from "@snort/system"; -import { useEventReactions } from "@snort/system-react"; +import { Link, useNavigate } from "react-router-dom"; -import { findTag, hexToBech32 } from "@/Utils"; -import useModeration from "@/Hooks/useModeration"; -import useLogin from "@/Hooks/useLogin"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { NoteContextMenu, NoteTranslation } from "./NoteContextMenu"; import { UserCache } from "@/Cache"; -import messages from "../messages"; -import { setBookmarked, setPinned } from "@/Utils/Login"; -import Text from "../Text/Text"; -import Reveal from "./Reveal"; -import Poll from "./Poll"; -import ProfileImage from "../User/ProfileImage"; import Icon from "@/Components/Icons/Icon"; -import NoteTime from "./NoteTime"; -import NoteFooter from "./NoteFooter"; -import Reactions from "./Reactions"; +import DisplayName from "@/Components/User/DisplayName"; +import { ProfileLink } from "@/Components/User/ProfileLink"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; +import { chainKey } from "@/Hooks/useThreadContext"; +import { findTag, hexToBech32 } from "@/Utils"; +import { setBookmarked, setPinned } from "@/Utils/Login"; + +import messages from "../messages"; +import Text from "../Text/Text"; +import ProfileImage from "../User/ProfileImage"; import HiddenNote from "./HiddenNote"; import { NoteProps } from "./Note"; -import { chainKey } from "@/Hooks/useThreadContext"; -import { ProfileLink } from "@/Components/User/ProfileLink"; -import DisplayName from "@/Components/User/DisplayName"; +import { NoteContextMenu, NoteTranslation } from "./NoteContextMenu"; +import NoteFooter from "./NoteFooter"; +import NoteTime from "./NoteTime"; +import Poll from "./Poll"; +import Reactions from "./Reactions"; +import Reveal from "./Reveal"; const TEXT_TRUNCATE_LENGTH = 400; diff --git a/packages/app/src/Components/Event/NoteReaction.tsx b/packages/app/src/Components/Event/NoteReaction.tsx index d2f4365d..50b98471 100644 --- a/packages/app/src/Components/Event/NoteReaction.tsx +++ b/packages/app/src/Components/Event/NoteReaction.tsx @@ -1,15 +1,16 @@ import "./NoteReaction.css"; -import { Link } from "react-router-dom"; + +import { EventExt,EventKind, NostrEvent, NostrPrefix, TaggedNostrEvent } from "@snort/system"; +import { useUserProfile } from "@snort/system-react"; import { useMemo } from "react"; -import { EventKind, NostrEvent, TaggedNostrEvent, NostrPrefix, EventExt } from "@snort/system"; +import { useInView } from "react-intersection-observer"; +import { FormattedMessage } from "react-intl"; +import { Link } from "react-router-dom"; import Note from "@/Components/Event/Note"; -import { eventLink, hexToBech32, getDisplayName } from "@/Utils"; -import useModeration from "@/Hooks/useModeration"; -import { FormattedMessage } from "react-intl"; import Icon from "@/Components/Icons/Icon"; -import { useUserProfile } from "@snort/system-react"; -import { useInView } from "react-intersection-observer"; +import useModeration from "@/Hooks/useModeration"; +import { eventLink, getDisplayName,hexToBech32 } from "@/Utils"; export interface NoteReactionProps { data: TaggedNostrEvent; diff --git a/packages/app/src/Components/Event/Poll.tsx b/packages/app/src/Components/Event/Poll.tsx index e5ca3b94..bf563ef2 100644 --- a/packages/app/src/Components/Event/Poll.tsx +++ b/packages/app/src/Components/Event/Poll.tsx @@ -1,16 +1,16 @@ -import { TaggedNostrEvent, ParsedZap, NostrLink } from "@snort/system"; import { LNURL } from "@snort/shared"; +import { NostrLink,ParsedZap, TaggedNostrEvent } from "@snort/system"; +import { useUserProfile } from "@snort/system-react"; import { useState } from "react"; import { FormattedMessage, FormattedNumber, useIntl } from "react-intl"; -import { useUserProfile } from "@snort/system-react"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { useWallet } from "@/Wallet"; -import { unwrap } from "@/Utils"; -import { formatShort } from "@/Utils/Number"; import Spinner from "@/Components/Icons/Spinner"; import SendSats from "@/Components/SendSats/SendSats"; +import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; +import { unwrap } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; +import { useWallet } from "@/Wallet"; interface PollProps { ev: TaggedNostrEvent; diff --git a/packages/app/src/Components/Event/Reactions.tsx b/packages/app/src/Components/Event/Reactions.tsx index 47ce6150..8162222f 100644 --- a/packages/app/src/Components/Event/Reactions.tsx +++ b/packages/app/src/Components/Event/Reactions.tsx @@ -1,18 +1,18 @@ import "./Reactions.css"; -import { useState, useMemo, useEffect } from "react"; -import { useIntl, FormattedMessage } from "react-intl"; -import { TaggedNostrEvent, ParsedZap } from "@snort/system"; +import { ParsedZap,TaggedNostrEvent } from "@snort/system"; +import { useEffect,useMemo, useState } from "react"; +import { FormattedMessage,useIntl } from "react-intl"; -import { formatShort } from "@/Utils/Number"; +import CloseButton from "@/Components/Button/CloseButton"; import Icon from "@/Components/Icons/Icon"; -import { Tab } from "@/Components/Tabs/Tabs"; -import ProfileImage from "@/Components/User/ProfileImage"; -import Tabs from "@/Components/Tabs/Tabs"; import Modal from "@/Components/Modal/Modal"; +import { Tab } from "@/Components/Tabs/Tabs"; +import Tabs from "@/Components/Tabs/Tabs"; +import ProfileImage from "@/Components/User/ProfileImage"; +import { formatShort } from "@/Utils/Number"; import messages from "../messages"; -import CloseButton from "@/Components/Button/CloseButton"; interface ReactionsProps { show: boolean; diff --git a/packages/app/src/Components/Event/Reveal.tsx b/packages/app/src/Components/Event/Reveal.tsx index ef465311..7224d71a 100644 --- a/packages/app/src/Components/Event/Reveal.tsx +++ b/packages/app/src/Components/Event/Reveal.tsx @@ -1,6 +1,7 @@ -import { WarningNotice } from "@/Components/WarningNotice/WarningNotice"; import { useState } from "react"; +import { WarningNotice } from "@/Components/WarningNotice/WarningNotice"; + interface RevealProps { message: React.ReactNode; children: React.ReactNode; diff --git a/packages/app/src/Components/Event/RevealMedia.tsx b/packages/app/src/Components/Event/RevealMedia.tsx index 1fe0dcfb..50ac0fdd 100644 --- a/packages/app/src/Components/Event/RevealMedia.tsx +++ b/packages/app/src/Components/Event/RevealMedia.tsx @@ -1,11 +1,11 @@ +import { IMeta } from "@snort/system"; import { FormattedMessage } from "react-intl"; +import { Link } from "react-router-dom"; -import { FileExtensionRegex } from "@/Utils/Const"; +import { MediaElement } from "@/Components/Embed/MediaElement"; import Reveal from "@/Components/Event/Reveal"; import useLogin from "@/Hooks/useLogin"; -import { MediaElement } from "@/Components/Embed/MediaElement"; -import { Link } from "react-router-dom"; -import { IMeta } from "@snort/system"; +import { FileExtensionRegex } from "@/Utils/Const"; interface RevealMediaProps { creator: string; diff --git a/packages/app/src/Components/Event/ShowMore.tsx b/packages/app/src/Components/Event/ShowMore.tsx index 4cc0e6cf..84024705 100644 --- a/packages/app/src/Components/Event/ShowMore.tsx +++ b/packages/app/src/Components/Event/ShowMore.tsx @@ -1,8 +1,9 @@ import "./ShowMore.css"; -import { FormattedMessage } from "react-intl"; -import { useInView } from "react-intersection-observer"; -import { useEffect } from "react"; + import classNames from "classnames"; +import { useEffect } from "react"; +import { useInView } from "react-intersection-observer"; +import { FormattedMessage } from "react-intl"; interface ShowMoreProps { text?: string; diff --git a/packages/app/src/Components/Event/Thread.tsx b/packages/app/src/Components/Event/Thread.tsx index 52735eba..abc87a2d 100644 --- a/packages/app/src/Components/Event/Thread.tsx +++ b/packages/app/src/Components/Event/Thread.tsx @@ -1,16 +1,17 @@ import "./Thread.css"; -import { useMemo, useState, ReactNode, useContext, Fragment } from "react"; + +import { EventExt, NostrLink,NostrPrefix, parseNostrLink, TaggedNostrEvent, u256 } from "@snort/system"; +import classNames from "classnames"; +import { Fragment,ReactNode, useContext, useMemo, useState } from "react"; import { useIntl } from "react-intl"; import { useNavigate, useParams } from "react-router-dom"; -import { TaggedNostrEvent, u256, NostrPrefix, EventExt, parseNostrLink, NostrLink } from "@snort/system"; -import classNames from "classnames"; -import { getAllLinkReactions, getLinkReactions } from "@/Utils"; import BackButton from "@/Components/Button/BackButton"; +import Collapsed from "@/Components/Collapsed"; import Note from "@/Components/Event/Note"; import NoteGhost from "@/Components/Event/NoteGhost"; -import Collapsed from "@/Components/Collapsed"; -import { ThreadContext, ThreadContextWrapper, chainKey } from "@/Hooks/useThreadContext"; +import { chainKey,ThreadContext, ThreadContextWrapper } from "@/Hooks/useThreadContext"; +import { getAllLinkReactions, getLinkReactions } from "@/Utils"; import messages from "../messages"; diff --git a/packages/app/src/Components/Event/Zap.tsx b/packages/app/src/Components/Event/Zap.tsx index 9d5eef53..987b6728 100644 --- a/packages/app/src/Components/Event/Zap.tsx +++ b/packages/app/src/Components/Event/Zap.tsx @@ -1,13 +1,14 @@ import "./Zap.css"; -import { useMemo } from "react"; + import { ParsedZap } from "@snort/system"; +import { useMemo } from "react"; import { FormattedMessage, useIntl } from "react-intl"; -import { unwrap } from "@/Utils"; -import { formatShort } from "@/Utils/Number"; import Text from "@/Components/Text/Text"; import ProfileImage from "@/Components/User/ProfileImage"; import useLogin from "@/Hooks/useLogin"; +import { unwrap } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; import messages from "../messages"; diff --git a/packages/app/src/Components/Event/ZapButton.tsx b/packages/app/src/Components/Event/ZapButton.tsx index 8e732b7d..6871e064 100644 --- a/packages/app/src/Components/Event/ZapButton.tsx +++ b/packages/app/src/Components/Event/ZapButton.tsx @@ -1,10 +1,11 @@ import "./ZapButton.css"; -import { useState } from "react"; + import { HexKey } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; +import { useState } from "react"; -import SendSats from "@/Components/SendSats/SendSats"; import Icon from "@/Components/Icons/Icon"; +import SendSats from "@/Components/SendSats/SendSats"; import { ZapTarget } from "@/Utils/Zapper"; const ZapButton = ({ diff --git a/packages/app/src/Components/Event/ZapGoal.tsx b/packages/app/src/Components/Event/ZapGoal.tsx index 65795e4a..8bfa07bb 100644 --- a/packages/app/src/Components/Event/ZapGoal.tsx +++ b/packages/app/src/Components/Event/ZapGoal.tsx @@ -1,15 +1,18 @@ import "./ZapGoal.css"; -import { useState } from "react"; + import { NostrEvent, NostrLink } from "@snort/system"; -import useZapsFeed from "@/Feed/ZapsFeed"; -import { formatShort } from "@/Utils/Number"; -import { findTag } from "@/Utils"; -import Icon from "@/Components/Icons/Icon"; -import SendSats from "../SendSats/SendSats"; -import { Zapper } from "@/Utils/Zapper"; -import Progress from "@/Components/Progress/Progress"; +import { useState } from "react"; import { FormattedNumber } from "react-intl"; +import Icon from "@/Components/Icons/Icon"; +import Progress from "@/Components/Progress/Progress"; +import useZapsFeed from "@/Feed/ZapsFeed"; +import { findTag } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; +import { Zapper } from "@/Utils/Zapper"; + +import SendSats from "../SendSats/SendSats"; + export function ZapGoal({ ev }: { ev: NostrEvent }) { const [zap, setZap] = useState(false); const zaps = useZapsFeed(NostrLink.fromEvent(ev)); diff --git a/packages/app/src/Components/Event/getEventMedia.ts b/packages/app/src/Components/Event/getEventMedia.ts index 5b57c6f9..a2fa0bca 100644 --- a/packages/app/src/Components/Event/getEventMedia.ts +++ b/packages/app/src/Components/Event/getEventMedia.ts @@ -1,6 +1,7 @@ -import { transformTextCached } from "@/Hooks/useTextTransformCache"; import { TaggedNostrEvent } from "@snort/system"; +import { transformTextCached } from "@/Hooks/useTextTransformCache"; + export default function getEventMedia(event: TaggedNostrEvent) { const parsed = transformTextCached(event.id, event.content, event.tags); return parsed.filter( diff --git a/packages/app/src/Components/Feed/Articles.tsx b/packages/app/src/Components/Feed/Articles.tsx index b85b5006..6f7fec29 100644 --- a/packages/app/src/Components/Feed/Articles.tsx +++ b/packages/app/src/Components/Feed/Articles.tsx @@ -1,11 +1,12 @@ import { NostrLink } from "@snort/system"; import { useReactions } from "@snort/system-react"; +import { useContext } from "react"; import { useArticles } from "@/Feed/ArticlesFeed"; -import { orderDescending } from "@/Utils"; -import Note from "../Event/Note"; -import { useContext } from "react"; import { DeckContext } from "@/Pages/DeckLayout"; +import { orderDescending } from "@/Utils"; + +import Note from "../Event/Note"; export default function Articles() { const data = useArticles(); diff --git a/packages/app/src/Components/Feed/DisplayAsSelector.tsx b/packages/app/src/Components/Feed/DisplayAsSelector.tsx index 7cc6def1..f9ea4ed4 100644 --- a/packages/app/src/Components/Feed/DisplayAsSelector.tsx +++ b/packages/app/src/Components/Feed/DisplayAsSelector.tsx @@ -1,8 +1,9 @@ -import Icon from "@/Components/Icons/Icon"; -import { LoginStore } from "@/Utils/Login"; -import useLogin from "@/Hooks/useLogin"; import { useCallback } from "react"; +import Icon from "@/Components/Icons/Icon"; +import useLogin from "@/Hooks/useLogin"; +import { LoginStore } from "@/Utils/Login"; + export type DisplayAs = "list" | "grid"; type DisplaySelectorProps = { diff --git a/packages/app/src/Components/Feed/ImageGridItem.tsx b/packages/app/src/Components/Feed/ImageGridItem.tsx index 17c06f22..e1ec5c1c 100644 --- a/packages/app/src/Components/Feed/ImageGridItem.tsx +++ b/packages/app/src/Components/Feed/ImageGridItem.tsx @@ -1,8 +1,9 @@ import { NostrLink, TaggedNostrEvent } from "@snort/system"; import { MouseEvent } from "react"; import { Link } from "react-router-dom"; -import Icon from "@/Components/Icons/Icon"; + import getEventMedia from "@/Components/Event/getEventMedia"; +import Icon from "@/Components/Icons/Icon"; import { ProxyImg } from "@/Components/ProxyImg"; const ImageGridItem = (props: { event: TaggedNostrEvent; onClick: (e: MouseEvent) => void }) => { diff --git a/packages/app/src/Components/Feed/LoadMore.tsx b/packages/app/src/Components/Feed/LoadMore.tsx index 40aba7b8..6dda332b 100644 --- a/packages/app/src/Components/Feed/LoadMore.tsx +++ b/packages/app/src/Components/Feed/LoadMore.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -import { FormattedMessage } from "react-intl"; import { useInView } from "react-intersection-observer"; +import { FormattedMessage } from "react-intl"; import messages from "../messages"; diff --git a/packages/app/src/Components/Feed/RootTabs.tsx b/packages/app/src/Components/Feed/RootTabs.tsx index 159846a0..31b0421d 100644 --- a/packages/app/src/Components/Feed/RootTabs.tsx +++ b/packages/app/src/Components/Feed/RootTabs.tsx @@ -1,11 +1,12 @@ import "./RootTabs.css"; -import { useState, ReactNode, useEffect, useMemo } from "react"; -import { useLocation, useNavigate } from "react-router-dom"; -import { Menu, MenuItem } from "@szhsin/react-menu"; -import { FormattedMessage } from "react-intl"; -import useLogin from "@/Hooks/useLogin"; +import { Menu, MenuItem } from "@szhsin/react-menu"; +import { ReactNode, useEffect, useMemo,useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { useLocation, useNavigate } from "react-router-dom"; + import Icon from "@/Components/Icons/Icon"; +import useLogin from "@/Hooks/useLogin"; import { Newest } from "@/Utils/Login"; export type RootTab = diff --git a/packages/app/src/Components/Feed/Timeline.tsx b/packages/app/src/Components/Feed/Timeline.tsx index 08505260..2aafd527 100644 --- a/packages/app/src/Components/Feed/Timeline.tsx +++ b/packages/app/src/Components/Feed/Timeline.tsx @@ -1,16 +1,17 @@ import "./Timeline.css"; -import { FormattedMessage } from "react-intl"; -import { useCallback, useMemo, useState } from "react"; -import { TaggedNostrEvent, EventKind, socialGraphInstance } from "@snort/system"; -import { dedupeByPubkey, findTag } from "@/Utils"; -import useTimelineFeed, { TimelineFeed, TimelineSubject } from "@/Feed/TimelineFeed"; -import useModeration from "@/Hooks/useModeration"; -import { LiveStreams } from "@/Components/LiveStream/LiveStreams"; import { unixNow } from "@snort/shared"; -import { TimelineRenderer } from "@/Components/Feed/TimelineRenderer"; +import { EventKind, socialGraphInstance,TaggedNostrEvent } from "@snort/system"; +import { useCallback, useMemo, useState } from "react"; +import { FormattedMessage } from "react-intl"; + import { DisplayAs, DisplayAsSelector } from "@/Components/Feed/DisplayAsSelector"; +import { TimelineRenderer } from "@/Components/Feed/TimelineRenderer"; +import { LiveStreams } from "@/Components/LiveStream/LiveStreams"; +import useTimelineFeed, { TimelineFeed, TimelineSubject } from "@/Feed/TimelineFeed"; import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; +import { dedupeByPubkey, findTag } from "@/Utils"; export interface TimelineProps { postsOnly: boolean; diff --git a/packages/app/src/Components/Feed/TimelineFollows.tsx b/packages/app/src/Components/Feed/TimelineFollows.tsx index 4081d4af..7b8f30e5 100644 --- a/packages/app/src/Components/Feed/TimelineFollows.tsx +++ b/packages/app/src/Components/Feed/TimelineFollows.tsx @@ -1,19 +1,20 @@ import "./Timeline.css"; + +import { unixNow } from "@snort/shared"; +import { EventKind, NostrEvent, NostrLink, TaggedNostrEvent } from "@snort/system"; +import { SnortContext, useReactions } from "@snort/system-react"; import { ReactNode, useCallback, useContext, useMemo, useState, useSyncExternalStore } from "react"; import { Link } from "react-router-dom"; -import { EventKind, NostrEvent, NostrLink, TaggedNostrEvent } from "@snort/system"; -import { unixNow } from "@snort/shared"; -import { SnortContext, useReactions } from "@snort/system-react"; -import { dedupeByPubkey, findTag, orderDescending } from "@/Utils"; -import useModeration from "@/Hooks/useModeration"; import { FollowsFeed } from "@/Cache"; -import { LiveStreams } from "@/Components/LiveStream/LiveStreams"; -import useLogin from "@/Hooks/useLogin"; -import useHashtagsFeed from "@/Feed/HashtagsFeed"; import { ShowMoreInView } from "@/Components/Event/ShowMore"; -import { TimelineRenderer } from "@/Components/Feed/TimelineRenderer"; import { DisplayAs, DisplayAsSelector } from "@/Components/Feed/DisplayAsSelector"; +import { TimelineRenderer } from "@/Components/Feed/TimelineRenderer"; +import { LiveStreams } from "@/Components/LiveStream/LiveStreams"; +import useHashtagsFeed from "@/Feed/HashtagsFeed"; +import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; +import { dedupeByPubkey, findTag, orderDescending } from "@/Utils"; export interface TimelineFollowsProps { postsOnly: boolean; diff --git a/packages/app/src/Components/Feed/TimelineFragment.tsx b/packages/app/src/Components/Feed/TimelineFragment.tsx index 3a652975..336ef5a5 100644 --- a/packages/app/src/Components/Feed/TimelineFragment.tsx +++ b/packages/app/src/Components/Feed/TimelineFragment.tsx @@ -1,5 +1,5 @@ -import { ReactNode, useCallback } from "react"; import { TaggedNostrEvent } from "@snort/system"; +import { ReactNode, useCallback } from "react"; import Note from "@/Components/Event/Note"; import { findTag } from "@/Utils"; diff --git a/packages/app/src/Components/Feed/TimelineRenderer.tsx b/packages/app/src/Components/Feed/TimelineRenderer.tsx index fde548b1..ffdf94a1 100644 --- a/packages/app/src/Components/Feed/TimelineRenderer.tsx +++ b/packages/app/src/Components/Feed/TimelineRenderer.tsx @@ -1,15 +1,16 @@ -import { useInView } from "react-intersection-observer"; -import ProfileImage from "@/Components/User/ProfileImage"; -import { FormattedMessage } from "react-intl"; -import Icon from "@/Components/Icons/Icon"; import { TaggedNostrEvent } from "@snort/system"; import { ReactNode, useEffect, useMemo, useRef, useState } from "react"; -import { TimelineFragment } from "@/Components/Feed/TimelineFragment"; -import { DisplayAs } from "@/Components/Feed/DisplayAsSelector"; -import { SpotlightThreadModal } from "@/Components/Spotlight/SpotlightThreadModal"; -import ImageGridItem from "@/Components/Feed/ImageGridItem"; +import { useInView } from "react-intersection-observer"; +import { FormattedMessage } from "react-intl"; + import ErrorBoundary from "@/Components/ErrorBoundary"; import getEventMedia from "@/Components/Event/getEventMedia"; +import { DisplayAs } from "@/Components/Feed/DisplayAsSelector"; +import ImageGridItem from "@/Components/Feed/ImageGridItem"; +import { TimelineFragment } from "@/Components/Feed/TimelineFragment"; +import Icon from "@/Components/Icons/Icon"; +import { SpotlightThreadModal } from "@/Components/Spotlight/SpotlightThreadModal"; +import ProfileImage from "@/Components/User/ProfileImage"; export interface TimelineRendererProps { frags: Array; diff --git a/packages/app/src/Components/Feed/UsersFeed.tsx b/packages/app/src/Components/Feed/UsersFeed.tsx index 9b776599..7a536cba 100644 --- a/packages/app/src/Components/Feed/UsersFeed.tsx +++ b/packages/app/src/Components/Feed/UsersFeed.tsx @@ -1,9 +1,9 @@ -import { useCallback, useMemo } from "react"; import { TaggedNostrEvent } from "@snort/system"; +import { useCallback, useMemo } from "react"; -import useTimelineFeed, { TimelineFeed } from "@/Feed/TimelineFeed"; -import FollowListBase from "@/Components/User/FollowListBase"; import PageSpinner from "@/Components/PageSpinner"; +import FollowListBase from "@/Components/User/FollowListBase"; +import useTimelineFeed, { TimelineFeed } from "@/Feed/TimelineFeed"; import useModeration from "@/Hooks/useModeration"; export default function UsersFeed({ keyword, sortPopular = true }: { keyword: string; sortPopular?: boolean }) { diff --git a/packages/app/src/Components/Icons/Icon.tsx b/packages/app/src/Components/Icons/Icon.tsx index 63d5e9d1..c3abb9a3 100644 --- a/packages/app/src/Components/Icons/Icon.tsx +++ b/packages/app/src/Components/Icons/Icon.tsx @@ -1,4 +1,5 @@ import { MouseEventHandler } from "react"; + import IconsSvg from "@/Components/Icons/icons.svg"; export interface IconProps { diff --git a/packages/app/src/Components/Icons/Toggle.tsx b/packages/app/src/Components/Icons/Toggle.tsx index 8fed28aa..a8ba110c 100644 --- a/packages/app/src/Components/Icons/Toggle.tsx +++ b/packages/app/src/Components/Icons/Toggle.tsx @@ -1,4 +1,5 @@ import "./Toggle.css"; + import { IconProps } from "./Icon"; export function ToggleSwitch(props: Omit) { diff --git a/packages/app/src/Components/Invite.tsx b/packages/app/src/Components/Invite.tsx index 5838ed8d..59f4b637 100644 --- a/packages/app/src/Components/Invite.tsx +++ b/packages/app/src/Components/Invite.tsx @@ -1,12 +1,14 @@ -import SnortApi from "@/External/SnortApi"; -import { getCurrentRefCode, getDisplayName } from "@/Utils"; import { useUserProfile } from "@snort/system-react"; import Lottie from "lottie-react"; -import { useState, useEffect } from "react"; +import { useEffect,useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, useNavigate } from "react-router-dom"; -import Modal from "./Modal/Modal"; + +import SnortApi from "@/External/SnortApi"; import Hugs from "@/hug.json"; +import { getCurrentRefCode, getDisplayName } from "@/Utils"; + +import Modal from "./Modal/Modal"; const InviteModal = () => { const [pubkey, setPubkey] = useState(""); diff --git a/packages/app/src/Components/IrisAccount/AccountName.tsx b/packages/app/src/Components/IrisAccount/AccountName.tsx index bc082375..caf38435 100644 --- a/packages/app/src/Components/IrisAccount/AccountName.tsx +++ b/packages/app/src/Components/IrisAccount/AccountName.tsx @@ -1,5 +1,5 @@ -import { useNavigate } from "react-router-dom"; import { FormattedMessage } from "react-intl"; +import { useNavigate } from "react-router-dom"; interface AccountNameProps { name?: string; diff --git a/packages/app/src/Components/IrisAccount/ActiveAccount.tsx b/packages/app/src/Components/IrisAccount/ActiveAccount.tsx index ebcaae3f..e7be7839 100644 --- a/packages/app/src/Components/IrisAccount/ActiveAccount.tsx +++ b/packages/app/src/Components/IrisAccount/ActiveAccount.tsx @@ -1,11 +1,12 @@ import { mapEventToProfile } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; +import { FormattedMessage } from "react-intl"; -import AccountName from "./AccountName"; -import useLogin from "@/Hooks/useLogin"; import { UserCache } from "@/Cache"; import useEventPublisher from "@/Hooks/useEventPublisher"; -import { FormattedMessage } from "react-intl"; +import useLogin from "@/Hooks/useLogin"; + +import AccountName from "./AccountName"; interface ActiveAccountProps { name?: string; diff --git a/packages/app/src/Components/IrisAccount/IrisAccount.tsx b/packages/app/src/Components/IrisAccount/IrisAccount.tsx index a2cb150a..20183bda 100644 --- a/packages/app/src/Components/IrisAccount/IrisAccount.tsx +++ b/packages/app/src/Components/IrisAccount/IrisAccount.tsx @@ -1,14 +1,15 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Component, FormEvent } from "react"; +import { FormattedMessage } from "react-intl"; +import { injectIntl } from "react-intl"; + +import messages from "@/Components/messages"; +import { ProfileLoader } from "@/system"; import { LoginStore } from "@/Utils/Login"; import AccountName from "./AccountName"; import ActiveAccount from "./ActiveAccount"; import ReservedAccount from "./ReservedAccount"; -import { FormattedMessage } from "react-intl"; -import { injectIntl } from "react-intl"; -import messages from "@/Components/messages"; -import { ProfileLoader } from "@/system"; declare global { interface Window { diff --git a/packages/app/src/Components/IrisAccount/ReservedAccount.tsx b/packages/app/src/Components/IrisAccount/ReservedAccount.tsx index c1878e82..4c059e55 100644 --- a/packages/app/src/Components/IrisAccount/ReservedAccount.tsx +++ b/packages/app/src/Components/IrisAccount/ReservedAccount.tsx @@ -1,6 +1,7 @@ -import AccountName from "./AccountName"; import { FormattedMessage } from "react-intl"; +import AccountName from "./AccountName"; + interface ReservedAccountProps { name?: string; enableReserved: () => void; diff --git a/packages/app/src/Components/LiveStream/LiveEvent.tsx b/packages/app/src/Components/LiveStream/LiveEvent.tsx index 9c19665b..9b7cf356 100644 --- a/packages/app/src/Components/LiveStream/LiveEvent.tsx +++ b/packages/app/src/Components/LiveStream/LiveEvent.tsx @@ -2,9 +2,10 @@ import { NostrEvent, NostrLink } from "@snort/system"; import { FormattedMessage } from "react-intl"; import { Link } from "react-router-dom"; -import { findTag } from "@/Utils"; -import ProfileImage from "../User/ProfileImage"; import Icon from "@/Components/Icons/Icon"; +import { findTag } from "@/Utils"; + +import ProfileImage from "../User/ProfileImage"; export function LiveEvent({ ev }: { ev: NostrEvent }) { const title = findTag(ev, "title"); diff --git a/packages/app/src/Components/LiveStream/LiveStreams.tsx b/packages/app/src/Components/LiveStream/LiveStreams.tsx index 6fb741c3..f8ef34ae 100644 --- a/packages/app/src/Components/LiveStream/LiveStreams.tsx +++ b/packages/app/src/Components/LiveStream/LiveStreams.tsx @@ -1,10 +1,12 @@ import "./LiveStreams.css"; + import { NostrEvent, NostrLink } from "@snort/system"; -import { findTag } from "@/Utils"; import { CSSProperties, useMemo } from "react"; import { Link } from "react-router-dom"; -import useImgProxy from "@/Hooks/useImgProxy"; + import Icon from "@/Components/Icons/Icon"; +import useImgProxy from "@/Hooks/useImgProxy"; +import { findTag } from "@/Utils"; export function LiveStreams({ evs }: { evs: Array }) { const streams = useMemo(() => { diff --git a/packages/app/src/Components/Modal/Modal.tsx b/packages/app/src/Components/Modal/Modal.tsx index da47cbed..9c2bbf98 100644 --- a/packages/app/src/Components/Modal/Modal.tsx +++ b/packages/app/src/Components/Modal/Modal.tsx @@ -1,6 +1,7 @@ -import { createPortal } from "react-dom"; import "./Modal.css"; + import { ReactNode, useEffect } from "react"; +import { createPortal } from "react-dom"; export interface ModalProps { id: string; diff --git a/packages/app/src/Components/Nip5Service.tsx b/packages/app/src/Components/Nip5Service.tsx index 07e5e7b5..2999201d 100644 --- a/packages/app/src/Components/Nip5Service.tsx +++ b/packages/app/src/Components/Nip5Service.tsx @@ -1,28 +1,28 @@ -import { useEffect, useMemo, useState, ChangeEvent } from "react"; -import { useIntl, FormattedMessage } from "react-intl"; +import { mapEventToProfile,UserMetadata } from "@snort/system"; +import { useUserProfile } from "@snort/system-react"; +import { ChangeEvent,useEffect, useMemo, useState } from "react"; +import { FormattedMessage,useIntl } from "react-intl"; import { useNavigate } from "react-router-dom"; -import { UserMetadata, mapEventToProfile } from "@snort/system"; +import { UserCache } from "@/Cache"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import Copy from "@/Components/Copy/Copy"; +import SendSats from "@/Components/SendSats/SendSats"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; import { unwrap } from "@/Utils"; -import { formatShort } from "@/Utils/Number"; +import { debounce } from "@/Utils"; import { - ServiceProvider, + CheckRegisterResponse, + HandleAvailability, + HandleRegisterResponse, ServiceConfig, ServiceError, - HandleAvailability, ServiceErrorCode, - HandleRegisterResponse, - CheckRegisterResponse, + ServiceProvider, } from "@/Utils/Nip05/ServiceProvider"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import SendSats from "@/Components/SendSats/SendSats"; -import Copy from "@/Components/Copy/Copy"; -import { useUserProfile } from "@snort/system-react"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { debounce } from "@/Utils"; -import useLogin from "@/Hooks/useLogin"; import SnortServiceProvider from "@/Utils/Nip05/SnortServiceProvider"; -import { UserCache } from "@/Cache"; +import { formatShort } from "@/Utils/Number"; import messages from "./messages"; diff --git a/packages/app/src/Components/Offline.tsx b/packages/app/src/Components/Offline.tsx index b4d8aae6..1931083f 100644 --- a/packages/app/src/Components/Offline.tsx +++ b/packages/app/src/Components/Offline.tsx @@ -1,7 +1,9 @@ -import Icon from "@/Components/Icons/Icon"; -import AsyncButton from "./Button/AsyncButton"; -import { FormattedMessage } from "react-intl"; import classNames from "classnames"; +import { FormattedMessage } from "react-intl"; + +import Icon from "@/Components/Icons/Icon"; + +import AsyncButton from "./Button/AsyncButton"; export function Offline({ onRetry, className }: { onRetry?: () => void | Promise; className?: string }) { return ( diff --git a/packages/app/src/Components/PinPrompt/PinPrompt.tsx b/packages/app/src/Components/PinPrompt/PinPrompt.tsx index f2c64f21..e884c1ab 100644 --- a/packages/app/src/Components/PinPrompt/PinPrompt.tsx +++ b/packages/app/src/Components/PinPrompt/PinPrompt.tsx @@ -1,17 +1,18 @@ -import useLogin from "@/Hooks/useLogin"; import "./PinPrompt.css"; -import { ReactNode, useRef, useState } from "react"; -import { FormattedMessage, useIntl } from "react-intl"; + import { unwrap } from "@snort/shared"; import { EventPublisher, InvalidPinError, PinEncrypted } from "@snort/system"; +import { ReactNode, useRef, useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; import useEventPublisher from "@/Hooks/useEventPublisher"; -import { LoginStore, createPublisher, sessionNeedsPin } from "@/Utils/Login"; -import Modal from "../Modal/Modal"; -import AsyncButton from "../Button/AsyncButton"; - +import useLogin from "@/Hooks/useLogin"; +import { createPublisher, LoginStore, sessionNeedsPin } from "@/Utils/Login"; import { GetPowWorker } from "@/Utils/wasm"; +import AsyncButton from "../Button/AsyncButton"; +import Modal from "../Modal/Modal"; + export function PinPrompt({ onResult, onCancel, diff --git a/packages/app/src/Components/Progress/Progress.tsx b/packages/app/src/Components/Progress/Progress.tsx index 97072712..28e69392 100644 --- a/packages/app/src/Components/Progress/Progress.tsx +++ b/packages/app/src/Components/Progress/Progress.tsx @@ -1,6 +1,7 @@ import "./Progress.css"; -import { FormattedNumber } from "react-intl"; + import { CSSProperties, ReactNode } from "react"; +import { FormattedNumber } from "react-intl"; export default function Progress({ value, status }: { value: number; status?: ReactNode }) { const v = Math.max(0.01, Math.min(1, value)); diff --git a/packages/app/src/Components/ProxyImg.tsx b/packages/app/src/Components/ProxyImg.tsx index 41781d17..44100846 100644 --- a/packages/app/src/Components/ProxyImg.tsx +++ b/packages/app/src/Components/ProxyImg.tsx @@ -1,6 +1,7 @@ -import useImgProxy from "@/Hooks/useImgProxy"; -import { HTMLProps, ReactNode, forwardRef, useState, useMemo, useEffect } from "react"; +import { forwardRef, HTMLProps, ReactNode, useEffect,useMemo, useState } from "react"; import { FormattedMessage } from "react-intl"; + +import useImgProxy from "@/Hooks/useImgProxy"; import { getUrlHostname } from "@/Utils"; type ProxyImgProps = HTMLProps & { diff --git a/packages/app/src/Components/ReBroadcaster.tsx b/packages/app/src/Components/ReBroadcaster.tsx index f47e7797..3d241ddb 100644 --- a/packages/app/src/Components/ReBroadcaster.tsx +++ b/packages/app/src/Components/ReBroadcaster.tsx @@ -1,12 +1,13 @@ -import { useContext, useState } from "react"; -import { FormattedMessage } from "react-intl"; import { TaggedNostrEvent } from "@snort/system"; import { SnortContext } from "@snort/system-react"; +import { useContext, useState } from "react"; +import { FormattedMessage } from "react-intl"; import Modal from "@/Components/Modal/Modal"; -import messages from "./messages"; import useLogin from "@/Hooks/useLogin"; + import AsyncButton from "./Button/AsyncButton"; +import messages from "./messages"; export function ReBroadcaster({ onClose, ev }: { onClose: () => void; ev: TaggedNostrEvent }) { const [selected, setSelected] = useState>(); diff --git a/packages/app/src/Components/Relay/Relay.tsx b/packages/app/src/Components/Relay/Relay.tsx index 74f6215d..56479d85 100644 --- a/packages/app/src/Components/Relay/Relay.tsx +++ b/packages/app/src/Components/Relay/Relay.tsx @@ -1,17 +1,19 @@ import "./Relay.css"; + +import { unixNowMs } from "@snort/shared"; +import { RelaySettings } from "@snort/system"; +import { SnortContext } from "@snort/system-react"; +import classNames from "classnames"; import { useContext, useMemo } from "react"; import { useNavigate } from "react-router-dom"; -import { RelaySettings } from "@snort/system"; -import { unixNowMs } from "@snort/shared"; -import classNames from "classnames"; -import useRelayState from "@/Feed/RelayState"; -import { SnortContext } from "@snort/system-react"; -import { getRelayName, unwrap } from "@/Utils"; -import useLogin from "@/Hooks/useLogin"; -import { removeRelay, setRelays } from "@/Utils/Login"; -import { RelayFavicon } from "./RelaysMetadata"; import { AsyncIcon } from "@/Components/Button/AsyncIcon"; +import useRelayState from "@/Feed/RelayState"; +import useLogin from "@/Hooks/useLogin"; +import { getRelayName, unwrap } from "@/Utils"; +import { removeRelay, setRelays } from "@/Utils/Login"; + +import { RelayFavicon } from "./RelaysMetadata"; export interface RelayProps { addr: string; diff --git a/packages/app/src/Components/Relay/RelaysMetadata.tsx b/packages/app/src/Components/Relay/RelaysMetadata.tsx index 1a4c8459..83d528e2 100644 --- a/packages/app/src/Components/Relay/RelaysMetadata.tsx +++ b/packages/app/src/Components/Relay/RelaysMetadata.tsx @@ -1,8 +1,9 @@ import "./RelaysMetadata.css"; -import Nostrich from "@/assets/img/nostrich.webp"; -import { useState } from "react"; import { FullRelaySettings } from "@snort/system"; +import { useState } from "react"; + +import Nostrich from "@/assets/img/nostrich.webp"; import Icon from "@/Components/Icons/Icon"; export const RelayFavicon = ({ url }: { url: string }) => { diff --git a/packages/app/src/Components/SearchBox/SearchBox.tsx b/packages/app/src/Components/SearchBox/SearchBox.tsx index b13494e0..54ea8d2f 100644 --- a/packages/app/src/Components/SearchBox/SearchBox.tsx +++ b/packages/app/src/Components/SearchBox/SearchBox.tsx @@ -1,16 +1,19 @@ import "./SearchBox.css"; -import Spinner from "@/Components/Icons/Spinner"; -import Icon from "@/Components/Icons/Icon"; -import { FormattedMessage, useIntl } from "react-intl"; -import { fetchNip05Pubkey } from "@/Utils/Nip05/Verifier"; -import { ChangeEvent, useEffect, useRef, useState } from "react"; -import { NostrLink, tryParseNostrLink } from "@snort/system"; -import { useLocation, useNavigate } from "react-router-dom"; + import { unixNow } from "@snort/shared"; -import useTimelineFeed, { TimelineFeedOptions, TimelineSubject } from "../../Feed/TimelineFeed"; -import ProfileImage from "@/Components/User/ProfileImage"; +import { NostrLink, tryParseNostrLink } from "@snort/system"; import { socialGraphInstance } from "@snort/system"; +import { ChangeEvent, useEffect, useRef, useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; +import { useLocation, useNavigate } from "react-router-dom"; + +import Icon from "@/Components/Icons/Icon"; +import Spinner from "@/Components/Icons/Spinner"; +import ProfileImage from "@/Components/User/ProfileImage"; import fuzzySearch, { FuzzySearchResult } from "@/Db/FuzzySearch"; +import { fetchNip05Pubkey } from "@/Utils/Nip05/Verifier"; + +import useTimelineFeed, { TimelineFeedOptions, TimelineSubject } from "../../Feed/TimelineFeed"; const MAX_RESULTS = 3; diff --git a/packages/app/src/Components/SendSats/SendSats.tsx b/packages/app/src/Components/SendSats/SendSats.tsx index 25a0b661..aff6fb99 100644 --- a/packages/app/src/Components/SendSats/SendSats.tsx +++ b/packages/app/src/Components/SendSats/SendSats.tsx @@ -1,25 +1,25 @@ import "./SendSats.css"; -import React, { ReactNode, useEffect, useState } from "react"; -import { useIntl, FormattedMessage } from "react-intl"; -import { HexKey } from "@snort/system"; import { LNURLSuccessAction } from "@snort/shared"; +import { HexKey } from "@snort/system"; +import React, { ReactNode, useEffect, useState } from "react"; +import { FormattedMessage,useIntl } from "react-intl"; -import { formatShort } from "@/Utils/Number"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import CloseButton from "@/Components/Button/CloseButton"; +import Copy from "@/Components/Copy/Copy"; import Icon from "@/Components/Icons/Icon"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import ProfileImage from "@/Components/User/ProfileImage"; import Modal from "@/Components/Modal/Modal"; import QrCode from "@/Components/QrCode"; -import Copy from "@/Components/Copy/Copy"; -import { debounce } from "@/Utils"; -import { LNWallet, useWallet } from "@/Wallet"; +import ProfileImage from "@/Components/User/ProfileImage"; +import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import { ZapTarget, ZapTargetResult, Zapper } from "@/Utils/Zapper"; +import { debounce } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; +import { Zapper,ZapTarget, ZapTargetResult } from "@/Utils/Zapper"; +import { LNWallet, useWallet } from "@/Wallet"; import messages from "../messages"; -import CloseButton from "@/Components/Button/CloseButton"; enum ZapType { PublicZap = 1, diff --git a/packages/app/src/Components/Spotlight/SpotlightMedia.tsx b/packages/app/src/Components/Spotlight/SpotlightMedia.tsx index 9a1eab92..af1a3d8c 100644 --- a/packages/app/src/Components/Spotlight/SpotlightMedia.tsx +++ b/packages/app/src/Components/Spotlight/SpotlightMedia.tsx @@ -1,6 +1,7 @@ import { useCallback, useEffect, useMemo, useState } from "react"; -import Modal from "@/Components/Modal/Modal"; + import Icon from "@/Components/Icons/Icon"; +import Modal from "@/Components/Modal/Modal"; import { ProxyImg } from "@/Components/ProxyImg"; import useImgProxy from "@/Hooks/useImgProxy"; diff --git a/packages/app/src/Components/Spotlight/SpotlightThreadModal.tsx b/packages/app/src/Components/Spotlight/SpotlightThreadModal.tsx index f3a6391a..a2a234dd 100644 --- a/packages/app/src/Components/Spotlight/SpotlightThreadModal.tsx +++ b/packages/app/src/Components/Spotlight/SpotlightThreadModal.tsx @@ -1,9 +1,10 @@ -import Modal from "@/Components/Modal/Modal"; -import { ThreadContextWrapper } from "@/Hooks/useThreadContext"; -import { Thread } from "@/Components/Event/Thread"; -import { SpotlightMedia } from "@/Components/Spotlight/SpotlightMedia"; import { NostrLink, TaggedNostrEvent } from "@snort/system"; + import getEventMedia from "@/Components/Event/getEventMedia"; +import { Thread } from "@/Components/Event/Thread"; +import Modal from "@/Components/Modal/Modal"; +import { SpotlightMedia } from "@/Components/Spotlight/SpotlightMedia"; +import { ThreadContextWrapper } from "@/Hooks/useThreadContext"; interface SpotlightThreadModalProps { thread?: NostrLink; diff --git a/packages/app/src/Components/SuggestedProfiles.tsx b/packages/app/src/Components/SuggestedProfiles.tsx index ebab2333..3a506c39 100644 --- a/packages/app/src/Components/SuggestedProfiles.tsx +++ b/packages/app/src/Components/SuggestedProfiles.tsx @@ -1,16 +1,17 @@ -import { useState } from "react"; import { HexKey, NostrPrefix } from "@snort/system"; +import { useState } from "react"; import { FormattedMessage } from "react-intl"; -import FollowListBase from "@/Components/User/FollowListBase"; import PageSpinner from "@/Components/PageSpinner"; +import TrendingUsers from "@/Components/Trending/TrendingUsers"; +import FollowListBase from "@/Components/User/FollowListBase"; import NostrBandApi from "@/External/NostrBand"; import SemisolDevApi from "@/External/SemisolDev"; +import useCachedFetch from "@/Hooks/useCachedFetch"; import useLogin from "@/Hooks/useLogin"; import { hexToBech32 } from "@/Utils"; + import { ErrorOrOffline } from "./ErrorOrOffline"; -import useCachedFetch from "@/Hooks/useCachedFetch"; -import TrendingUsers from "@/Components/Trending/TrendingUsers"; enum Provider { NostrBand = 1, diff --git a/packages/app/src/Components/Tabs/Tabs.tsx b/packages/app/src/Components/Tabs/Tabs.tsx index 68a118fc..f3e0df71 100644 --- a/packages/app/src/Components/Tabs/Tabs.tsx +++ b/packages/app/src/Components/Tabs/Tabs.tsx @@ -1,5 +1,7 @@ -import { ReactNode } from "react"; import "./Tabs.css"; + +import { ReactNode } from "react"; + import useHorizontalScroll from "@/Hooks/useHorizontalScroll"; export interface Tab { diff --git a/packages/app/src/Components/Tasks/BackupKey.tsx b/packages/app/src/Components/Tasks/BackupKey.tsx index 0dd211ad..2464daf0 100644 --- a/packages/app/src/Components/Tasks/BackupKey.tsx +++ b/packages/app/src/Components/Tasks/BackupKey.tsx @@ -1,9 +1,10 @@ +import { MetadataCache } from "@snort/system"; import { FormattedMessage } from "react-intl"; import { Link } from "react-router-dom"; -import { BaseUITask } from "@/Components/Tasks/index"; -import { MetadataCache } from "@snort/system"; -import { LoginSession } from "@/Utils/Login"; + import Icon from "@/Components/Icons/Icon"; +import { BaseUITask } from "@/Components/Tasks/index"; +import { LoginSession } from "@/Utils/Login"; export class BackupKeyTask extends BaseUITask { id = "backup-key"; diff --git a/packages/app/src/Components/Tasks/DonateTask.tsx b/packages/app/src/Components/Tasks/DonateTask.tsx index 7742d456..9ff2a95f 100644 --- a/packages/app/src/Components/Tasks/DonateTask.tsx +++ b/packages/app/src/Components/Tasks/DonateTask.tsx @@ -1,5 +1,6 @@ import { FormattedMessage } from "react-intl"; import { Link } from "react-router-dom"; + import { BaseUITask } from "@/Components/Tasks/index"; export class DonateTask extends BaseUITask { diff --git a/packages/app/src/Components/Tasks/Nip5Task.tsx b/packages/app/src/Components/Tasks/Nip5Task.tsx index 4b68d75c..44dd5f22 100644 --- a/packages/app/src/Components/Tasks/Nip5Task.tsx +++ b/packages/app/src/Components/Tasks/Nip5Task.tsx @@ -1,6 +1,7 @@ +import { MetadataCache } from "@snort/system"; import { FormattedMessage } from "react-intl"; import { Link } from "react-router-dom"; -import { MetadataCache } from "@snort/system"; + import { BaseUITask } from "@/Components/Tasks/index"; export class Nip5Task extends BaseUITask { diff --git a/packages/app/src/Components/Tasks/NoticeZapPool.tsx b/packages/app/src/Components/Tasks/NoticeZapPool.tsx index b13c3562..42ccdf9c 100644 --- a/packages/app/src/Components/Tasks/NoticeZapPool.tsx +++ b/packages/app/src/Components/Tasks/NoticeZapPool.tsx @@ -1,5 +1,6 @@ import { FormattedMessage, FormattedNumber } from "react-intl"; import { Link } from "react-router-dom"; + import { BaseUITask } from "@/Components/Tasks/index"; export class NoticeZapPoolDefault extends BaseUITask { diff --git a/packages/app/src/Components/Tasks/RenewSubscription.tsx b/packages/app/src/Components/Tasks/RenewSubscription.tsx index 77a746fe..e07e6f2d 100644 --- a/packages/app/src/Components/Tasks/RenewSubscription.tsx +++ b/packages/app/src/Components/Tasks/RenewSubscription.tsx @@ -1,10 +1,10 @@ -import { FormattedMessage } from "react-intl"; import { MetadataCache } from "@snort/system"; +import { FormattedMessage } from "react-intl"; import { BaseUITask } from "@/Components/Tasks/index"; +import { RenewSub } from "@/Pages/subscribe/RenewSub"; import { LoginSession } from "@/Utils/Login"; import { getCurrentSubscription } from "@/Utils/Subscription"; -import { RenewSub } from "@/Pages/subscribe/RenewSub"; export class RenewSubTask extends BaseUITask { id = "renew-sub"; diff --git a/packages/app/src/Components/Tasks/TaskList.tsx b/packages/app/src/Components/Tasks/TaskList.tsx index ad5039be..900bd843 100644 --- a/packages/app/src/Components/Tasks/TaskList.tsx +++ b/packages/app/src/Components/Tasks/TaskList.tsx @@ -1,17 +1,19 @@ import "./TaskList.css"; -import { Fragment, useSyncExternalStore } from "react"; -import { useUserProfile } from "@snort/system-react"; -import useLogin from "@/Hooks/useLogin"; +import { ExternalStore } from "@snort/shared"; +import { useUserProfile } from "@snort/system-react"; +import { Fragment, useSyncExternalStore } from "react"; + +import CloseButton from "@/Components/Button/CloseButton"; import Icon from "@/Components/Icons/Icon"; import { UITask } from "@/Components/Tasks/index"; +import useLogin from "@/Hooks/useLogin"; + +import { BackupKeyTask } from "./BackupKey"; import { DonateTask } from "./DonateTask"; import { Nip5Task } from "./Nip5Task"; -import { RenewSubTask } from "./RenewSubscription"; import { NoticeZapPoolDefault } from "./NoticeZapPool"; -import { BackupKeyTask } from "./BackupKey"; -import { ExternalStore } from "@snort/shared"; -import CloseButton from "@/Components/Button/CloseButton"; +import { RenewSubTask } from "./RenewSubscription"; class TaskStore extends ExternalStore> { #tasks: Array; diff --git a/packages/app/src/Components/Tasks/index.ts b/packages/app/src/Components/Tasks/index.ts index b4796649..476f3fb8 100644 --- a/packages/app/src/Components/Tasks/index.ts +++ b/packages/app/src/Components/Tasks/index.ts @@ -1,4 +1,5 @@ import { MetadataCache } from "@snort/system"; + import { LoginSession } from "@/Utils/Login"; export interface UITask { diff --git a/packages/app/src/Components/Text/Text.tsx b/packages/app/src/Components/Text/Text.tsx index b6269a13..681b2fae 100644 --- a/packages/app/src/Components/Text/Text.tsx +++ b/packages/app/src/Components/Text/Text.tsx @@ -1,17 +1,19 @@ import "./Text.css"; -import { ReactNode, useState } from "react"; + import { HexKey, ParsedFragment, parseIMeta } from "@snort/system"; import classNames from "classnames"; +import { ReactNode, useState } from "react"; -import Invoice from "@/Components/Embed/Invoice"; +import CashuNuts from "@/Components/Embed/CashuNuts"; import Hashtag from "@/Components/Embed/Hashtag"; import HyperText from "@/Components/Embed/HyperText"; -import CashuNuts from "@/Components/Embed/CashuNuts"; +import Invoice from "@/Components/Embed/Invoice"; +import { useTextTransformer } from "@/Hooks/useTextTransformCache"; + import RevealMedia from "../Event/RevealMedia"; +import HighlightedText from "../HighlightedText"; import { ProxyImg } from "../ProxyImg"; import { SpotlightMediaModal } from "../Spotlight/SpotlightMedia"; -import HighlightedText from "../HighlightedText"; -import { useTextTransformer } from "@/Hooks/useTextTransformCache"; export interface TextProps { id: string; diff --git a/packages/app/src/Components/Textarea/Textarea.tsx b/packages/app/src/Components/Textarea/Textarea.tsx index 89f4b565..17455545 100644 --- a/packages/app/src/Components/Textarea/Textarea.tsx +++ b/packages/app/src/Components/Textarea/Textarea.tsx @@ -1,15 +1,15 @@ import "@webscopeio/react-textarea-autocomplete/style.css"; import "./Textarea.css"; -import { useIntl } from "react-intl"; +import { MetadataCache,NostrPrefix } from "@snort/system"; import ReactTextareaAutocomplete from "@webscopeio/react-textarea-autocomplete"; +import { useIntl } from "react-intl"; import TextareaAutosize from "react-textarea-autosize"; -import { NostrPrefix, MetadataCache } from "@snort/system"; +import { UserCache } from "@/Cache"; import Avatar from "@/Components/User/Avatar"; import Nip05 from "@/Components/User/Nip05"; import { hexToBech32 } from "@/Utils"; -import { UserCache } from "@/Cache"; import searchEmoji from "@/Utils/emoji-search"; import messages from "../messages"; diff --git a/packages/app/src/Components/Toaster/Toaster.tsx b/packages/app/src/Components/Toaster/Toaster.tsx index 5ef87138..e13c7daf 100644 --- a/packages/app/src/Components/Toaster/Toaster.tsx +++ b/packages/app/src/Components/Toaster/Toaster.tsx @@ -1,8 +1,10 @@ import "./Toaster.css"; + +import { ExternalStore, unixNow } from "@snort/shared"; import { ReactNode, useSyncExternalStore } from "react"; import { createPortal } from "react-dom"; import { v4 as uuid } from "uuid"; -import { ExternalStore, unixNow } from "@snort/shared"; + import Icon from "@/Components/Icons/Icon"; interface ToastNotification { diff --git a/packages/app/src/Components/Trending/ShortNote.tsx b/packages/app/src/Components/Trending/ShortNote.tsx index a5344f63..b532c319 100644 --- a/packages/app/src/Components/Trending/ShortNote.tsx +++ b/packages/app/src/Components/Trending/ShortNote.tsx @@ -1,8 +1,9 @@ import { NostrLink, TaggedNostrEvent } from "@snort/system"; -import ProfileImage from "@/Components/User/ProfileImage"; -import Text from "@/Components/Text/Text"; import { Link } from "react-router-dom"; + import NoteTime from "@/Components/Event/NoteTime"; +import Text from "@/Components/Text/Text"; +import ProfileImage from "@/Components/User/ProfileImage"; export default function ShortNote({ event }: { event: TaggedNostrEvent }) { // replace newlines with spaces, replace double spaces with single spaces diff --git a/packages/app/src/Components/Trending/TrendingHashtags.tsx b/packages/app/src/Components/Trending/TrendingHashtags.tsx index d3e88d1b..6f3021b8 100644 --- a/packages/app/src/Components/Trending/TrendingHashtags.tsx +++ b/packages/app/src/Components/Trending/TrendingHashtags.tsx @@ -1,12 +1,14 @@ -import { ReactNode } from "react"; -import NostrBandApi from "@/External/NostrBand"; -import { ErrorOrOffline } from "../ErrorOrOffline"; -import { HashTagHeader } from "@/Pages/HashTagsPage"; -import { useLocale } from "@/IntlProvider"; import classNames from "classnames"; +import { ReactNode } from "react"; import { Link } from "react-router-dom"; -import useCachedFetch from "@/Hooks/useCachedFetch"; + import PageSpinner from "@/Components/PageSpinner"; +import NostrBandApi from "@/External/NostrBand"; +import useCachedFetch from "@/Hooks/useCachedFetch"; +import { useLocale } from "@/IntlProvider"; +import { HashTagHeader } from "@/Pages/HashTagsPage"; + +import { ErrorOrOffline } from "../ErrorOrOffline"; export default function TrendingHashtags({ title, diff --git a/packages/app/src/Components/Trending/TrendingPosts.tsx b/packages/app/src/Components/Trending/TrendingPosts.tsx index d09ff411..37a7510f 100644 --- a/packages/app/src/Components/Trending/TrendingPosts.tsx +++ b/packages/app/src/Components/Trending/TrendingPosts.tsx @@ -1,21 +1,21 @@ -import { useState } from "react"; +import { removeUndefined } from "@snort/shared"; import { NostrEvent, NostrLink, TaggedNostrEvent } from "@snort/system"; import { useReactions } from "@snort/system-react"; - -import PageSpinner from "@/Components/PageSpinner"; -import Note from "@/Components/Event/Note"; -import NostrBandApi from "@/External/NostrBand"; -import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; -import { useLocale } from "@/IntlProvider"; -import useModeration from "@/Hooks/useModeration"; -import ShortNote from "@/Components/Trending/ShortNote"; import classNames from "classnames"; +import { useState } from "react"; + +import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; +import Note from "@/Components/Event/Note"; import { DisplayAs, DisplayAsSelector } from "@/Components/Feed/DisplayAsSelector"; import ImageGridItem from "@/Components/Feed/ImageGridItem"; +import PageSpinner from "@/Components/PageSpinner"; import { SpotlightThreadModal } from "@/Components/Spotlight/SpotlightThreadModal"; -import useLogin from "@/Hooks/useLogin"; +import ShortNote from "@/Components/Trending/ShortNote"; +import NostrBandApi from "@/External/NostrBand"; import useCachedFetch from "@/Hooks/useCachedFetch"; -import { removeUndefined } from "@snort/shared"; +import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; +import { useLocale } from "@/IntlProvider"; import { System } from "@/system"; export default function TrendingNotes({ count = Infinity, small = false }: { count: number; small: boolean }) { diff --git a/packages/app/src/Components/Trending/TrendingUsers.tsx b/packages/app/src/Components/Trending/TrendingUsers.tsx index 0427c2e5..cc85f7ab 100644 --- a/packages/app/src/Components/Trending/TrendingUsers.tsx +++ b/packages/app/src/Components/Trending/TrendingUsers.tsx @@ -1,11 +1,13 @@ -import { ReactNode } from "react"; import { HexKey } from "@snort/system"; -import FollowListBase from "@/Components/User/FollowListBase"; +import { ReactNode } from "react"; + import PageSpinner from "@/Components/PageSpinner"; +import FollowListBase from "@/Components/User/FollowListBase"; import NostrBandApi from "@/External/NostrBand"; -import { ErrorOrOffline } from "../ErrorOrOffline"; import useCachedFetch from "@/Hooks/useCachedFetch"; +import { ErrorOrOffline } from "../ErrorOrOffline"; + export default function TrendingUsers({ title, count = Infinity }: { title?: ReactNode; count?: number }) { const api = new NostrBandApi(); const trendingProfilesUrl = api.trendingProfilesUrl(); diff --git a/packages/app/src/Components/User/Avatar.tsx b/packages/app/src/Components/User/Avatar.tsx index 5e1bd729..af4b2346 100644 --- a/packages/app/src/Components/User/Avatar.tsx +++ b/packages/app/src/Components/User/Avatar.tsx @@ -1,12 +1,12 @@ import "./Avatar.css"; -import { ReactNode, useMemo } from "react"; import type { UserMetadata } from "@snort/system"; import classNames from "classnames"; +import { ReactNode, useMemo } from "react"; -import { defaultAvatar, getDisplayName } from "@/Utils"; -import { ProxyImg } from "@/Components/ProxyImg"; import Icon from "@/Components/Icons/Icon"; +import { ProxyImg } from "@/Components/ProxyImg"; +import { defaultAvatar, getDisplayName } from "@/Utils"; interface AvatarProps { pubkey: string; diff --git a/packages/app/src/Components/User/AvatarEditor.tsx b/packages/app/src/Components/User/AvatarEditor.tsx index b03329cd..769028a6 100644 --- a/packages/app/src/Components/User/AvatarEditor.tsx +++ b/packages/app/src/Components/User/AvatarEditor.tsx @@ -1,9 +1,11 @@ import "./AvatarEditor.css"; -import Icon from "@/Components/Icons/Icon"; + import { useState } from "react"; -import useFileUpload from "@/Utils/Upload"; -import { openFile, unwrap } from "@/Utils"; + +import Icon from "@/Components/Icons/Icon"; import Spinner from "@/Components/Icons/Spinner"; +import { openFile, unwrap } from "@/Utils"; +import useFileUpload from "@/Utils/Upload"; interface AvatarEditorProps { picture?: string; diff --git a/packages/app/src/Components/User/BadgeList.tsx b/packages/app/src/Components/User/BadgeList.tsx index a83bd217..70cff622 100644 --- a/packages/app/src/Components/User/BadgeList.tsx +++ b/packages/app/src/Components/User/BadgeList.tsx @@ -1,15 +1,14 @@ import "./BadgeList.css"; +import { TaggedNostrEvent } from "@snort/system"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; -import { TaggedNostrEvent } from "@snort/system"; - -import { ProxyImg } from "@/Components/ProxyImg"; +import CloseButton from "@/Components/Button/CloseButton"; import Modal from "@/Components/Modal/Modal"; +import { ProxyImg } from "@/Components/ProxyImg"; import Username from "@/Components/User/Username"; import { findTag } from "@/Utils"; -import CloseButton from "@/Components/Button/CloseButton"; export default function BadgeList({ badges }: { badges: TaggedNostrEvent[] }) { const [showModal, setShowModal] = useState(false); diff --git a/packages/app/src/Components/User/BlockButton.tsx b/packages/app/src/Components/User/BlockButton.tsx index 599bc18f..d2ae0da5 100644 --- a/packages/app/src/Components/User/BlockButton.tsx +++ b/packages/app/src/Components/User/BlockButton.tsx @@ -1,5 +1,6 @@ -import { FormattedMessage } from "react-intl"; import { HexKey } from "@snort/system"; +import { FormattedMessage } from "react-intl"; + import useModeration from "@/Hooks/useModeration"; import messages from "../messages"; diff --git a/packages/app/src/Components/User/Bookmarks.tsx b/packages/app/src/Components/User/Bookmarks.tsx index a02c2c45..9edcaa37 100644 --- a/packages/app/src/Components/User/Bookmarks.tsx +++ b/packages/app/src/Components/User/Bookmarks.tsx @@ -1,10 +1,10 @@ -import { useState, useMemo, ChangeEvent } from "react"; -import { FormattedMessage } from "react-intl"; import { HexKey, TaggedNostrEvent } from "@snort/system"; +import { ChangeEvent,useMemo, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { UserCache } from "@/Cache"; import Note from "@/Components/Event/Note"; import useLogin from "@/Hooks/useLogin"; -import { UserCache } from "@/Cache"; import messages from "../messages"; diff --git a/packages/app/src/Components/User/DisplayName.tsx b/packages/app/src/Components/User/DisplayName.tsx index 586e67ff..96c2fbfa 100644 --- a/packages/app/src/Components/User/DisplayName.tsx +++ b/packages/app/src/Components/User/DisplayName.tsx @@ -1,9 +1,11 @@ import "./DisplayName.css"; -import { useMemo } from "react"; + import { HexKey, UserMetadata } from "@snort/system"; -import { getDisplayNameOrPlaceHolder } from "@/Utils"; import { useUserProfile } from "@snort/system-react"; import classNames from "classnames"; +import { useMemo } from "react"; + +import { getDisplayNameOrPlaceHolder } from "@/Utils"; interface DisplayNameProps { pubkey: HexKey; diff --git a/packages/app/src/Components/User/FollowButton.tsx b/packages/app/src/Components/User/FollowButton.tsx index 163bbeac..e6cf49f6 100644 --- a/packages/app/src/Components/User/FollowButton.tsx +++ b/packages/app/src/Components/User/FollowButton.tsx @@ -1,13 +1,13 @@ -import { FormattedMessage } from "react-intl"; import { HexKey } from "@snort/system"; +import { FormattedMessage } from "react-intl"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { parseId } from "@/Utils"; -import useLogin from "@/Hooks/useLogin"; +import { FollowsFeed } from "@/Cache"; import AsyncButton from "@/Components/Button/AsyncButton"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { parseId } from "@/Utils"; import messages from "../messages"; -import { FollowsFeed } from "@/Cache"; export interface FollowButtonProps { pubkey: HexKey; diff --git a/packages/app/src/Components/User/FollowDistanceIndicator.tsx b/packages/app/src/Components/User/FollowDistanceIndicator.tsx index 1a839357..43967ff6 100644 --- a/packages/app/src/Components/User/FollowDistanceIndicator.tsx +++ b/packages/app/src/Components/User/FollowDistanceIndicator.tsx @@ -1,7 +1,8 @@ -import React from "react"; import { HexKey, socialGraphInstance } from "@snort/system"; -import Icon from "@/Components/Icons/Icon"; import classNames from "classnames"; +import React from "react"; + +import Icon from "@/Components/Icons/Icon"; interface FollowDistanceIndicatorProps { pubkey: HexKey; diff --git a/packages/app/src/Components/User/FollowListBase.tsx b/packages/app/src/Components/User/FollowListBase.tsx index cf7bb36c..0f83c095 100644 --- a/packages/app/src/Components/User/FollowListBase.tsx +++ b/packages/app/src/Components/User/FollowListBase.tsx @@ -1,17 +1,17 @@ +import { dedupe } from "@snort/shared"; +import { HexKey } from "@snort/system"; import { ReactNode } from "react"; import { FormattedMessage } from "react-intl"; -import { HexKey } from "@snort/system"; -import { dedupe } from "@snort/shared"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import ProfilePreview from "@/Components/User/ProfilePreview"; -import useLogin from "@/Hooks/useLogin"; - -import messages from "../messages"; import { FollowsFeed } from "@/Cache"; -import AsyncButton from "../Button/AsyncButton"; +import ProfilePreview from "@/Components/User/ProfilePreview"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; import { setFollows } from "@/Utils/Login"; +import AsyncButton from "../Button/AsyncButton"; +import messages from "../messages"; + export interface FollowListBaseProps { pubkeys: HexKey[]; title?: ReactNode; diff --git a/packages/app/src/Components/User/FollowedBy.tsx b/packages/app/src/Components/User/FollowedBy.tsx index a5bf209b..6fa9f436 100644 --- a/packages/app/src/Components/User/FollowedBy.tsx +++ b/packages/app/src/Components/User/FollowedBy.tsx @@ -1,10 +1,11 @@ +import { socialGraphInstance } from "@snort/system"; +import { Fragment } from "react"; +import { FormattedMessage } from "react-intl"; + +import DisplayName from "@/Components/User/DisplayName"; import FollowDistanceIndicator from "@/Components/User/FollowDistanceIndicator"; import ProfileImage from "@/Components/User/ProfileImage"; -import { FormattedMessage } from "react-intl"; -import { Fragment } from "react"; import { ProfileLink } from "@/Components/User/ProfileLink"; -import DisplayName from "@/Components/User/DisplayName"; -import { socialGraphInstance } from "@snort/system"; const MAX_FOLLOWED_BY_FRIENDS = 3; diff --git a/packages/app/src/Components/User/Following.tsx b/packages/app/src/Components/User/Following.tsx index c4d5a000..c6d3fe0d 100644 --- a/packages/app/src/Components/User/Following.tsx +++ b/packages/app/src/Components/User/Following.tsx @@ -1,8 +1,9 @@ import "./Following.css"; + import { FormattedMessage } from "react-intl"; -import useLogin from "@/Hooks/useLogin"; import Icon from "@/Components/Icons/Icon"; +import useLogin from "@/Hooks/useLogin"; export function FollowingMark({ pubkey }: { pubkey: string }) { const { follows } = useLogin(s => ({ follows: s.follows })); diff --git a/packages/app/src/Components/User/FollowsYou.tsx b/packages/app/src/Components/User/FollowsYou.tsx index 865fc98e..3391e483 100644 --- a/packages/app/src/Components/User/FollowsYou.tsx +++ b/packages/app/src/Components/User/FollowsYou.tsx @@ -1,4 +1,5 @@ import "./FollowsYou.css"; + import { useIntl } from "react-intl"; import messages from "../messages"; diff --git a/packages/app/src/Components/User/MuteButton.tsx b/packages/app/src/Components/User/MuteButton.tsx index d9a33bfc..2c6cefb1 100644 --- a/packages/app/src/Components/User/MuteButton.tsx +++ b/packages/app/src/Components/User/MuteButton.tsx @@ -1,5 +1,6 @@ -import { FormattedMessage } from "react-intl"; import { HexKey } from "@snort/system"; +import { FormattedMessage } from "react-intl"; + import useModeration from "@/Hooks/useModeration"; import messages from "../messages"; diff --git a/packages/app/src/Components/User/MutedList.tsx b/packages/app/src/Components/User/MutedList.tsx index 3d11d715..5487b37b 100644 --- a/packages/app/src/Components/User/MutedList.tsx +++ b/packages/app/src/Components/User/MutedList.tsx @@ -1,5 +1,6 @@ -import { FormattedMessage } from "react-intl"; import { HexKey } from "@snort/system"; +import { FormattedMessage } from "react-intl"; + import MuteButton from "@/Components/User/MuteButton"; import ProfilePreview from "@/Components/User/ProfilePreview"; import useModeration from "@/Hooks/useModeration"; diff --git a/packages/app/src/Components/User/Nip05.tsx b/packages/app/src/Components/User/Nip05.tsx index be43cee5..04fa94b4 100644 --- a/packages/app/src/Components/User/Nip05.tsx +++ b/packages/app/src/Components/User/Nip05.tsx @@ -1,4 +1,5 @@ import "./Nip05.css"; + import { HexKey } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; diff --git a/packages/app/src/Components/User/NoteToSelf.tsx b/packages/app/src/Components/User/NoteToSelf.tsx index 20be5073..739e92e0 100644 --- a/packages/app/src/Components/User/NoteToSelf.tsx +++ b/packages/app/src/Components/User/NoteToSelf.tsx @@ -1,6 +1,8 @@ import "./NoteToSelf.css"; + import classNames from "classnames"; import { FormattedMessage } from "react-intl"; + import Icon from "@/Components/Icons/Icon"; import messages from "../messages"; diff --git a/packages/app/src/Components/User/ProfileCard.tsx b/packages/app/src/Components/User/ProfileCard.tsx index 4998f315..8fa0e6ea 100644 --- a/packages/app/src/Components/User/ProfileCard.tsx +++ b/packages/app/src/Components/User/ProfileCard.tsx @@ -1,15 +1,16 @@ import "./ProfileCard.css"; -import { ControlledMenu } from "@szhsin/react-menu"; import { UserMetadata } from "@snort/system"; +import { ControlledMenu } from "@szhsin/react-menu"; +import { useEffect, useState } from "react"; +import Text from "@/Components/Text/Text"; +import FollowedBy from "@/Components/User/FollowedBy"; + +import useLogin from "../../Hooks/useLogin"; import FollowButton from "./FollowButton"; import ProfileImage from "./ProfileImage"; import { UserWebsiteLink } from "./UserWebsiteLink"; -import Text from "@/Components/Text/Text"; -import { useEffect, useState } from "react"; -import useLogin from "../../Hooks/useLogin"; -import FollowedBy from "@/Components/User/FollowedBy"; export function ProfileCard({ pubkey, diff --git a/packages/app/src/Components/User/ProfileImage.tsx b/packages/app/src/Components/User/ProfileImage.tsx index 1a054ffa..ff5c21c4 100644 --- a/packages/app/src/Components/User/ProfileImage.tsx +++ b/packages/app/src/Components/User/ProfileImage.tsx @@ -1,17 +1,18 @@ import "./ProfileImage.css"; -import React, { ReactNode, useCallback, useRef, useState } from "react"; import { HexKey, UserMetadata } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; import classNames from "classnames"; +import React, { ReactNode, useCallback, useRef, useState } from "react"; +import { LeaderBadge } from "@/Components/CommunityLeaders/LeaderBadge"; import Avatar from "@/Components/User/Avatar"; -import DisplayName from "./DisplayName"; -import { ProfileLink } from "./ProfileLink"; -import { ProfileCard } from "./ProfileCard"; import FollowDistanceIndicator from "@/Components/User/FollowDistanceIndicator"; import { useCommunityLeader } from "@/Hooks/useCommunityLeaders"; -import { LeaderBadge } from "@/Components/CommunityLeaders/LeaderBadge"; + +import DisplayName from "./DisplayName"; +import { ProfileCard } from "./ProfileCard"; +import { ProfileLink } from "./ProfileLink"; export interface ProfileImageProps { pubkey: HexKey; diff --git a/packages/app/src/Components/User/ProfileLink.tsx b/packages/app/src/Components/User/ProfileLink.tsx index c56908c8..83026d8b 100644 --- a/packages/app/src/Components/User/ProfileLink.tsx +++ b/packages/app/src/Components/User/ProfileLink.tsx @@ -1,7 +1,8 @@ +import { MetadataCache,NostrLink, NostrPrefix, UserMetadata } from "@snort/system"; +import { SnortContext } from "@snort/system-react"; import { ReactNode, useContext } from "react"; import { Link, LinkProps } from "react-router-dom"; -import { UserMetadata, NostrLink, NostrPrefix, MetadataCache } from "@snort/system"; -import { SnortContext } from "@snort/system-react"; + import { randomSample } from "@/Utils"; export function ProfileLink({ diff --git a/packages/app/src/Components/User/ProfilePreview.tsx b/packages/app/src/Components/User/ProfilePreview.tsx index ba0c7fcf..083551e4 100644 --- a/packages/app/src/Components/User/ProfilePreview.tsx +++ b/packages/app/src/Components/User/ProfilePreview.tsx @@ -1,11 +1,12 @@ import "./ProfilePreview.css"; -import { ReactNode } from "react"; + import { HexKey, UserMetadata } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; +import { ReactNode } from "react"; import { useInView } from "react-intersection-observer"; -import ProfileImage from "@/Components/User/ProfileImage"; import FollowButton from "@/Components/User/FollowButton"; +import ProfileImage from "@/Components/User/ProfileImage"; export interface ProfilePreviewProps { pubkey: HexKey; diff --git a/packages/app/src/Components/User/UserWebsiteLink.tsx b/packages/app/src/Components/User/UserWebsiteLink.tsx index f483cece..e35d1e5c 100644 --- a/packages/app/src/Components/User/UserWebsiteLink.tsx +++ b/packages/app/src/Components/User/UserWebsiteLink.tsx @@ -1,5 +1,7 @@ import "./UserWebsiteLink.css"; + import { MetadataCache, UserMetadata } from "@snort/system"; + import Icon from "@/Components/Icons/Icon"; export function UserWebsiteLink({ user }: { user?: MetadataCache | UserMetadata }) { diff --git a/packages/app/src/Components/User/Username.tsx b/packages/app/src/Components/User/Username.tsx index cf83257c..4d083f97 100644 --- a/packages/app/src/Components/User/Username.tsx +++ b/packages/app/src/Components/User/Username.tsx @@ -1,8 +1,8 @@ import { HexKey } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; -import { ProfileLink } from "./ProfileLink"; import DisplayName from "./DisplayName"; +import { ProfileLink } from "./ProfileLink"; export default function Username({ pubkey, onLinkVisit }: { pubkey: HexKey; onLinkVisit(): void }) { const user = useUserProfile(pubkey); diff --git a/packages/app/src/Components/WarningNotice/WarningNotice.tsx b/packages/app/src/Components/WarningNotice/WarningNotice.tsx index 7cd6aa2e..6153422d 100644 --- a/packages/app/src/Components/WarningNotice/WarningNotice.tsx +++ b/packages/app/src/Components/WarningNotice/WarningNotice.tsx @@ -1,4 +1,5 @@ import "./WarningNotice.css"; + import Icon from "@/Components/Icons/Icon"; export function WarningNotice({ children, onClick }: { children: React.ReactNode; onClick?: () => void }) { diff --git a/packages/app/src/Db/IndexedDB.ts b/packages/app/src/Db/IndexedDB.ts index 3e4c5f48..05a24f5f 100644 --- a/packages/app/src/Db/IndexedDB.ts +++ b/packages/app/src/Db/IndexedDB.ts @@ -1,7 +1,7 @@ -import Dexie, { Table } from "dexie"; -import { TaggedNostrEvent, ReqFilter as Filter } from "@snort/system"; -import * as Comlink from "comlink"; +import { ReqFilter as Filter,TaggedNostrEvent } from "@snort/system"; import { seenEvents } from "@snort/system"; +import * as Comlink from "comlink"; +import Dexie, { Table } from "dexie"; type Tag = { id: string; diff --git a/packages/app/src/Db/index.ts b/packages/app/src/Db/index.ts index b6e1d38e..82c26235 100644 --- a/packages/app/src/Db/index.ts +++ b/packages/app/src/Db/index.ts @@ -1,5 +1,5 @@ -import Dexie, { Table } from "dexie"; import { HexKey, NostrEvent, TaggedNostrEvent, u256 } from "@snort/system"; +import Dexie, { Table } from "dexie"; export const NAME = "snortDB"; export const VERSION = 16; diff --git a/packages/app/src/External/SnortApi.ts b/packages/app/src/External/SnortApi.ts index 982cde57..9ae46d7a 100644 --- a/packages/app/src/External/SnortApi.ts +++ b/packages/app/src/External/SnortApi.ts @@ -1,7 +1,8 @@ import { throwIfOffline } from "@snort/shared"; import { EventKind, EventPublisher } from "@snort/system"; -import { ApiHost } from "@/Utils/Const"; + import { unwrap } from "@/Utils"; +import { ApiHost } from "@/Utils/Const"; import { SubscriptionType } from "@/Utils/Subscription"; export interface RevenueToday { diff --git a/packages/app/src/Feed/ArticlesFeed.ts b/packages/app/src/Feed/ArticlesFeed.ts index 1a56957a..231819f0 100644 --- a/packages/app/src/Feed/ArticlesFeed.ts +++ b/packages/app/src/Feed/ArticlesFeed.ts @@ -1,8 +1,9 @@ import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; -import useLogin from "@/Hooks/useLogin"; import { useMemo } from "react"; +import useLogin from "@/Hooks/useLogin"; + export function useArticles() { const { publicKey, follows } = useLogin(); diff --git a/packages/app/src/Feed/BadgesFeed.ts b/packages/app/src/Feed/BadgesFeed.ts index ba42f219..6abc4f19 100644 --- a/packages/app/src/Feed/BadgesFeed.ts +++ b/packages/app/src/Feed/BadgesFeed.ts @@ -1,8 +1,8 @@ -import { useMemo } from "react"; -import { EventKind, HexKey, RequestBuilder, ReplaceableNoteStore, NoteCollection } from "@snort/system"; +import { EventKind, HexKey, NoteCollection,ReplaceableNoteStore, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; -import { unwrap, findTag, chunks } from "@/Utils"; +import { chunks,findTag, unwrap } from "@/Utils"; type BadgeAwards = { pubkeys: string[]; diff --git a/packages/app/src/Feed/FollowersFeed.ts b/packages/app/src/Feed/FollowersFeed.ts index 19e8fb4d..f2793f5f 100644 --- a/packages/app/src/Feed/FollowersFeed.ts +++ b/packages/app/src/Feed/FollowersFeed.ts @@ -1,6 +1,6 @@ -import { useMemo } from "react"; -import { HexKey, EventKind, NoteCollection, RequestBuilder, socialGraphInstance } from "@snort/system"; +import { EventKind, HexKey, NoteCollection, RequestBuilder, socialGraphInstance } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; export default function useFollowersFeed(pubkey?: HexKey) { const sub = useMemo(() => { diff --git a/packages/app/src/Feed/FollowsFeed.ts b/packages/app/src/Feed/FollowsFeed.ts index d6c735fd..6c2cfe61 100644 --- a/packages/app/src/Feed/FollowsFeed.ts +++ b/packages/app/src/Feed/FollowsFeed.ts @@ -1,6 +1,6 @@ -import { useMemo } from "react"; -import { HexKey, TaggedNostrEvent, EventKind, NoteCollection, RequestBuilder } from "@snort/system"; +import { EventKind, HexKey, NoteCollection, RequestBuilder,TaggedNostrEvent } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; import useLogin from "@/Hooks/useLogin"; diff --git a/packages/app/src/Feed/HashtagsFeed.ts b/packages/app/src/Feed/HashtagsFeed.ts index 9cc87d25..e68cf38d 100644 --- a/packages/app/src/Feed/HashtagsFeed.ts +++ b/packages/app/src/Feed/HashtagsFeed.ts @@ -1,7 +1,7 @@ -import { useMemo } from "react"; -import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { unixNow } from "@snort/shared"; +import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; import useLogin from "@/Hooks/useLogin"; import { Hour } from "@/Utils/Const"; diff --git a/packages/app/src/Feed/LoginFeed.ts b/packages/app/src/Feed/LoginFeed.ts index 989518d1..f3f86fd4 100644 --- a/packages/app/src/Feed/LoginFeed.ts +++ b/packages/app/src/Feed/LoginFeed.ts @@ -1,14 +1,19 @@ -import { useEffect, useMemo } from "react"; -import { TaggedNostrEvent, EventKind, RequestBuilder, NoteCollection, NostrLink, parseRelayTags } from "@snort/system"; +import { EventKind, NostrLink, NoteCollection, parseRelayTags,RequestBuilder, TaggedNostrEvent } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { usePrevious } from "@uidotdev/usehooks"; +import { useEffect, useMemo } from "react"; -import { bech32ToHex, debounce, getNewest, getNewestEventTagsByKey, unwrap } from "@/Utils"; +import { FollowLists, FollowsFeed, GiftsCache, Notifications, UserRelays } from "@/Cache"; +import { Nip4Chats,Nip28Chats } from "@/chat"; +import { Nip28ChatSystem } from "@/chat/nip28"; import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; +import { useRefreshFeedCache } from "@/Hooks/useRefreshFeedcache"; +import { bech32ToHex, debounce, getNewest, getNewestEventTagsByKey, unwrap } from "@/Utils"; +import { SnortPubKey } from "@/Utils/Const"; import { - LoginStore, - SnortAppData, addSubscription, + LoginStore, setAppData, setBlocked, setBookmarked, @@ -17,14 +22,9 @@ import { setPinned, setRelays, setTags, + SnortAppData, } from "@/Utils/Login"; -import { SnortPubKey } from "@/Utils/Const"; import { SubscriptionEvent } from "@/Utils/Subscription"; -import { FollowLists, FollowsFeed, GiftsCache, Notifications, UserRelays } from "@/Cache"; -import { Nip28Chats, Nip4Chats } from "@/chat"; -import { useRefreshFeedCache } from "@/Hooks/useRefreshFeedcache"; -import { usePrevious } from "@uidotdev/usehooks"; -import { Nip28ChatSystem } from "@/chat/nip28"; /** * Managed loading data for the current logged in user diff --git a/packages/app/src/Feed/RelayState.ts b/packages/app/src/Feed/RelayState.ts index 9af0f454..f6b257ad 100644 --- a/packages/app/src/Feed/RelayState.ts +++ b/packages/app/src/Feed/RelayState.ts @@ -1,5 +1,5 @@ -import { useContext } from "react"; import { SnortContext } from "@snort/system-react"; +import { useContext } from "react"; export default function useRelayState(addr: string) { const system = useContext(SnortContext); diff --git a/packages/app/src/Feed/RelaysFeed.tsx b/packages/app/src/Feed/RelaysFeed.tsx index a973fe2d..39a65d79 100644 --- a/packages/app/src/Feed/RelaysFeed.tsx +++ b/packages/app/src/Feed/RelaysFeed.tsx @@ -1,6 +1,6 @@ -import { useMemo } from "react"; -import { HexKey, EventKind, RequestBuilder, ReplaceableNoteStore, parseRelayTags } from "@snort/system"; +import { EventKind, HexKey, parseRelayTags,ReplaceableNoteStore, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; export default function useRelaysFeed(pubkey?: HexKey) { const sub = useMemo(() => { diff --git a/packages/app/src/Feed/StatusFeed.ts b/packages/app/src/Feed/StatusFeed.ts index 03a4872e..ff96180b 100644 --- a/packages/app/src/Feed/StatusFeed.ts +++ b/packages/app/src/Feed/StatusFeed.ts @@ -1,9 +1,10 @@ import { unixNow } from "@snort/shared"; import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; -import { findTag } from "@/Utils"; import { useMemo } from "react"; +import { findTag } from "@/Utils"; + export function useStatusFeed(id?: string, leaveOpen = false) { const sub = useMemo(() => { if (!id) return null; diff --git a/packages/app/src/Feed/ThreadFeed.ts b/packages/app/src/Feed/ThreadFeed.ts index 91c1a91d..28327a81 100644 --- a/packages/app/src/Feed/ThreadFeed.ts +++ b/packages/app/src/Feed/ThreadFeed.ts @@ -1,6 +1,6 @@ -import { useEffect, useMemo, useState } from "react"; -import { EventKind, NostrLink, RequestBuilder, NoteCollection, EventExt } from "@snort/system"; +import { EventExt,EventKind, NostrLink, NoteCollection, RequestBuilder } from "@snort/system"; import { useReactions, useRequestBuilder } from "@snort/system-react"; +import { useEffect, useMemo, useState } from "react"; export default function useThreadFeed(link: NostrLink) { const [root, setRoot] = useState(); diff --git a/packages/app/src/Feed/TimelineFeed.ts b/packages/app/src/Feed/TimelineFeed.ts index d330b44d..9e4a5d1b 100644 --- a/packages/app/src/Feed/TimelineFeed.ts +++ b/packages/app/src/Feed/TimelineFeed.ts @@ -1,10 +1,10 @@ -import { useCallback, useMemo } from "react"; +import { unixNow } from "@snort/shared"; import { EventKind, NostrLink, NoteCollection, RequestBuilder } from "@snort/system"; import { useReactions, useRequestBuilder } from "@snort/system-react"; -import { unixNow } from "@snort/shared"; +import { useCallback, useMemo } from "react"; -import useTimelineWindow from "@/Hooks/useTimelineWindow"; import useLogin from "@/Hooks/useLogin"; +import useTimelineWindow from "@/Hooks/useTimelineWindow"; import { SearchRelays } from "@/Utils/Const"; export interface TimelineFeedOptions { diff --git a/packages/app/src/Feed/ZapsFeed.ts b/packages/app/src/Feed/ZapsFeed.ts index 95728f34..b1360db8 100644 --- a/packages/app/src/Feed/ZapsFeed.ts +++ b/packages/app/src/Feed/ZapsFeed.ts @@ -1,6 +1,6 @@ -import { useMemo } from "react"; -import { EventKind, RequestBuilder, parseZap, NostrLink, NoteCollection } from "@snort/system"; +import { EventKind, NostrLink, NoteCollection,parseZap, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import { useMemo } from "react"; export default function useZapsFeed(link?: NostrLink) { const sub = useMemo(() => { diff --git a/packages/app/src/Hooks/useCommunityLeaders.tsx b/packages/app/src/Hooks/useCommunityLeaders.tsx index 9558a35d..6860de52 100644 --- a/packages/app/src/Hooks/useCommunityLeaders.tsx +++ b/packages/app/src/Hooks/useCommunityLeaders.tsx @@ -1,8 +1,9 @@ import { ExternalStore, unwrap } from "@snort/shared"; import { EventKind, parseNostrLink } from "@snort/system"; -import { useLinkList } from "./useLists"; import { useEffect, useSyncExternalStore } from "react"; +import { useLinkList } from "./useLists"; + class CommunityLeadersStore extends ExternalStore> { #leaders: Array = []; diff --git a/packages/app/src/Hooks/useEventPublisher.tsx b/packages/app/src/Hooks/useEventPublisher.tsx index ee1b7782..efe90c12 100644 --- a/packages/app/src/Hooks/useEventPublisher.tsx +++ b/packages/app/src/Hooks/useEventPublisher.tsx @@ -1,7 +1,8 @@ -import { useContext } from "react"; import { SnortContext } from "@snort/system-react"; +import { useContext } from "react"; + import useLogin from "@/Hooks/useLogin"; -import { LoginStore, createPublisher, sessionNeedsPin } from "@/Utils/Login"; +import { createPublisher, LoginStore, sessionNeedsPin } from "@/Utils/Login"; export default function useEventPublisher() { const login = useLogin(); diff --git a/packages/app/src/Hooks/useHorizontalScroll.tsx b/packages/app/src/Hooks/useHorizontalScroll.tsx index 8af753c5..34f938dc 100644 --- a/packages/app/src/Hooks/useHorizontalScroll.tsx +++ b/packages/app/src/Hooks/useHorizontalScroll.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, LegacyRef } from "react"; +import { LegacyRef,useEffect, useRef } from "react"; function useHorizontalScroll() { const elRef = useRef(); diff --git a/packages/app/src/Hooks/useImgProxy.ts b/packages/app/src/Hooks/useImgProxy.ts index 4e5c2a43..ec0a9247 100644 --- a/packages/app/src/Hooks/useImgProxy.ts +++ b/packages/app/src/Hooks/useImgProxy.ts @@ -1,7 +1,8 @@ import * as utils from "@noble/curves/abstract/utils"; import { base64 } from "@scure/base"; -import { hmacSha256, unwrap } from "@/Utils"; + import useLogin from "@/Hooks/useLogin"; +import { hmacSha256, unwrap } from "@/Utils"; export interface ImgProxySettings { url: string; diff --git a/packages/app/src/Hooks/useInteractionCache.tsx b/packages/app/src/Hooks/useInteractionCache.tsx index c288b524..0bf64952 100644 --- a/packages/app/src/Hooks/useInteractionCache.tsx +++ b/packages/app/src/Hooks/useInteractionCache.tsx @@ -1,5 +1,5 @@ -import { useSyncExternalStore } from "react"; import { HexKey, u256 } from "@snort/system"; +import { useSyncExternalStore } from "react"; import { InteractionCache } from "@/Cache"; import { EventInteraction } from "@/Db"; diff --git a/packages/app/src/Hooks/useLogin.tsx b/packages/app/src/Hooks/useLogin.tsx index 132359c2..b84e19e1 100644 --- a/packages/app/src/Hooks/useLogin.tsx +++ b/packages/app/src/Hooks/useLogin.tsx @@ -1,6 +1,7 @@ -import { LoginSession, LoginStore } from "@/Utils/Login"; import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector"; +import { LoginSession, LoginStore } from "@/Utils/Login"; + export default function useLogin(selector?: (v: LoginSession) => T) { const defaultSelector = (v: LoginSession) => v as unknown as T; diff --git a/packages/app/src/Hooks/useLoginHandler.tsx b/packages/app/src/Hooks/useLoginHandler.tsx index fb1e65cd..d8e7ff7b 100644 --- a/packages/app/src/Hooks/useLoginHandler.tsx +++ b/packages/app/src/Hooks/useLoginHandler.tsx @@ -1,11 +1,11 @@ -import { useIntl } from "react-intl"; -import { Nip46Signer, KeyStorage } from "@snort/system"; import { fetchNip05Pubkey, unwrap } from "@snort/shared"; +import { KeyStorage,Nip46Signer } from "@snort/system"; +import { useIntl } from "react-intl"; +import { bech32ToHex } from "@/Utils"; import { EmailRegex, MnemonicRegex } from "@/Utils/Const"; import { LoginSessionType, LoginStore } from "@/Utils/Login"; -import { generateBip39Entropy, entropyToPrivateKey } from "@/Utils/nip6"; -import { bech32ToHex } from "@/Utils"; +import { entropyToPrivateKey,generateBip39Entropy } from "@/Utils/nip6"; export default function useLoginHandler() { const { formatMessage } = useIntl(); diff --git a/packages/app/src/Hooks/useLoginRelays.tsx b/packages/app/src/Hooks/useLoginRelays.tsx index b60d3b4e..0438fa49 100644 --- a/packages/app/src/Hooks/useLoginRelays.tsx +++ b/packages/app/src/Hooks/useLoginRelays.tsx @@ -1,7 +1,8 @@ -import { useEffect } from "react"; -import useLogin from "./useLogin"; -import useEventPublisher from "./useEventPublisher"; import { RelaySettings, SystemInterface } from "@snort/system"; +import { useEffect } from "react"; + +import useEventPublisher from "./useEventPublisher"; +import useLogin from "./useLogin"; export function useLoginRelays() { const { relays } = useLogin(); diff --git a/packages/app/src/Hooks/useModeration.tsx b/packages/app/src/Hooks/useModeration.tsx index 2aea7c4a..ac66a2e1 100644 --- a/packages/app/src/Hooks/useModeration.tsx +++ b/packages/app/src/Hooks/useModeration.tsx @@ -1,8 +1,9 @@ import { HexKey, NostrEvent, TaggedNostrEvent } from "@snort/system"; + import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; -import { setBlocked, setMuted } from "@/Utils/Login"; import { appendDedupe } from "@/Utils"; +import { setBlocked, setMuted } from "@/Utils/Login"; export default function useModeration() { const login = useLogin(); diff --git a/packages/app/src/Hooks/usePageWidth.tsx b/packages/app/src/Hooks/usePageWidth.tsx index e3433ede..c84de0bf 100644 --- a/packages/app/src/Hooks/usePageWidth.tsx +++ b/packages/app/src/Hooks/usePageWidth.tsx @@ -1,4 +1,4 @@ -import { useRef, useState, useEffect } from "react"; +import { useEffect,useRef, useState } from "react"; export default function usePageWidth() { const ref = useRef(document.querySelector("#root")); diff --git a/packages/app/src/Hooks/useRefreshFeedcache.tsx b/packages/app/src/Hooks/useRefreshFeedcache.tsx index fbcc13ec..58e0c1fe 100644 --- a/packages/app/src/Hooks/useRefreshFeedcache.tsx +++ b/packages/app/src/Hooks/useRefreshFeedcache.tsx @@ -1,10 +1,11 @@ -import { useEffect, useMemo } from "react"; +import { unwrap } from "@snort/shared"; import { NoopStore, RequestBuilder, TaggedNostrEvent } from "@snort/system"; +import { useEffect, useMemo } from "react"; import { RefreshFeedCache } from "@/Cache/RefreshFeedCache"; -import useLogin from "./useLogin"; + import useEventPublisher from "./useEventPublisher"; -import { unwrap } from "@snort/shared"; +import useLogin from "./useLogin"; export function useRefreshFeedCache(c: RefreshFeedCache, leaveOpen = false) { const login = useLogin(); diff --git a/packages/app/src/Hooks/useTheme.tsx b/packages/app/src/Hooks/useTheme.tsx index 0f44d671..526db0e6 100644 --- a/packages/app/src/Hooks/useTheme.tsx +++ b/packages/app/src/Hooks/useTheme.tsx @@ -1,4 +1,5 @@ import { useEffect } from "react"; + import useLogin from "./useLogin"; export function useTheme() { diff --git a/packages/app/src/Hooks/useThreadContext.tsx b/packages/app/src/Hooks/useThreadContext.tsx index fd81927d..1c33bb1b 100644 --- a/packages/app/src/Hooks/useThreadContext.tsx +++ b/packages/app/src/Hooks/useThreadContext.tsx @@ -1,9 +1,11 @@ /* eslint-disable no-debugger */ import { unwrap } from "@snort/shared"; import { EventExt, NostrLink, TaggedNostrEvent, u256 } from "@snort/system"; -import useThreadFeed from "@/Feed/ThreadFeed"; -import { ReactNode, createContext, useMemo, useState } from "react"; +import { createContext, ReactNode, useMemo, useState } from "react"; import { useLocation } from "react-router-dom"; + +import useThreadFeed from "@/Feed/ThreadFeed"; + import useModeration from "./useModeration"; export interface ThreadContext { diff --git a/packages/app/src/IntlProvider.tsx b/packages/app/src/IntlProvider.tsx index eddb4bd6..542e665a 100644 --- a/packages/app/src/IntlProvider.tsx +++ b/packages/app/src/IntlProvider.tsx @@ -1,9 +1,9 @@ -import { useEffect, useState, type ReactNode, useSyncExternalStore } from "react"; +import { ExternalStore } from "@snort/shared"; +import { type ReactNode, useEffect, useState, useSyncExternalStore } from "react"; import { IntlProvider as ReactIntlProvider } from "react-intl"; -import enMessages from "@/translations/en.json"; import useLogin from "@/Hooks/useLogin"; -import { ExternalStore } from "@snort/shared"; +import enMessages from "@/translations/en.json"; const DefaultLocale = "en-US"; diff --git a/packages/app/src/Pages/About.tsx b/packages/app/src/Pages/About.tsx index 9a3cdab9..0c57cf2c 100644 --- a/packages/app/src/Pages/About.tsx +++ b/packages/app/src/Pages/About.tsx @@ -1,6 +1,7 @@ -import Changelog from "@/../CHANGELOG.md"; -import { FormattedMessage } from "react-intl"; import { useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; + +import Changelog from "@/../CHANGELOG.md"; import { Markdown } from "@/Components/Event/Markdown"; export function AboutPage() { diff --git a/packages/app/src/Pages/DeckLayout.tsx b/packages/app/src/Pages/DeckLayout.tsx index 2eca9d38..00b85abc 100644 --- a/packages/app/src/Pages/DeckLayout.tsx +++ b/packages/app/src/Pages/DeckLayout.tsx @@ -1,27 +1,29 @@ import "./Deck.css"; -import { createContext, useEffect, useState } from "react"; -import { Link, Outlet, useNavigate } from "react-router-dom"; -import { FormattedMessage } from "react-intl"; -import { NostrLink, TaggedNostrEvent } from "@snort/system"; -import useLoginFeed from "@/Feed/LoginFeed"; -import { useLoginRelays } from "@/Hooks/useLoginRelays"; -import { useTheme } from "@/Hooks/useTheme"; -import Articles from "@/Components/Feed/Articles"; -import TimelineFollows from "@/Components/Feed/TimelineFollows"; -import { transformTextCached } from "@/Hooks/useTextTransformCache"; -import Icon from "@/Components/Icons/Icon"; -import NotificationsPage from "./Notifications/Notifications"; -import Modal from "@/Components/Modal/Modal"; -import { RootTabs } from "@/Components/Feed/RootTabs"; -import Toaster from "@/Components/Toaster/Toaster"; -import useLogin from "@/Hooks/useLogin"; -import { LongFormText } from "@/Components/Event/LongFormText"; -import NavSidebar from "@/Pages/Layout/NavSidebar"; +import { NostrLink, TaggedNostrEvent } from "@snort/system"; +import { createContext, useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { Link, Outlet, useNavigate } from "react-router-dom"; + import ErrorBoundary from "@/Components/ErrorBoundary"; -import { getCurrentSubscription } from "@/Utils/Subscription"; -import { mapPlanName } from "./subscribe"; +import { LongFormText } from "@/Components/Event/LongFormText"; +import Articles from "@/Components/Feed/Articles"; +import { RootTabs } from "@/Components/Feed/RootTabs"; +import TimelineFollows from "@/Components/Feed/TimelineFollows"; +import Icon from "@/Components/Icons/Icon"; +import Modal from "@/Components/Modal/Modal"; import { SpotlightThreadModal } from "@/Components/Spotlight/SpotlightThreadModal"; +import Toaster from "@/Components/Toaster/Toaster"; +import useLoginFeed from "@/Feed/LoginFeed"; +import useLogin from "@/Hooks/useLogin"; +import { useLoginRelays } from "@/Hooks/useLoginRelays"; +import { transformTextCached } from "@/Hooks/useTextTransformCache"; +import { useTheme } from "@/Hooks/useTheme"; +import NavSidebar from "@/Pages/Layout/NavSidebar"; +import { getCurrentSubscription } from "@/Utils/Subscription"; + +import NotificationsPage from "./Notifications/Notifications"; +import { mapPlanName } from "./subscribe"; type Cols = "notes" | "articles" | "media" | "streams" | "notifications"; diff --git a/packages/app/src/Pages/Discover.tsx b/packages/app/src/Pages/Discover.tsx index 43081b7b..022cc7dd 100644 --- a/packages/app/src/Pages/Discover.tsx +++ b/packages/app/src/Pages/Discover.tsx @@ -1,9 +1,10 @@ +import { useState } from "react"; +import { useIntl } from "react-intl"; + import SuggestedProfiles from "@/Components/SuggestedProfiles"; import { Tab, TabElement } from "@/Components/Tabs/Tabs"; import TrendingNotes from "@/Components/Trending/TrendingPosts"; import TrendingUsers from "@/Components/Trending/TrendingUsers"; -import { useState } from "react"; -import { useIntl } from "react-intl"; export default function Discover() { const { formatMessage } = useIntl(); diff --git a/packages/app/src/Pages/DonatePage.tsx b/packages/app/src/Pages/DonatePage.tsx index 86e390f3..344bd04d 100644 --- a/packages/app/src/Pages/DonatePage.tsx +++ b/packages/app/src/Pages/DonatePage.tsx @@ -1,18 +1,19 @@ +import { HexKey } from "@snort/system"; import { useEffect, useState, useSyncExternalStore } from "react"; import { FormattedMessage } from "react-intl"; -import { HexKey } from "@snort/system"; - -import { ApiHost, DeveloperAccounts, SnortPubKey } from "@/Utils/Const"; -import ProfilePreview from "@/Components/User/ProfilePreview"; -import ZapButton from "@/Components/Event/ZapButton"; -import { bech32ToHex, unwrap } from "@/Utils"; -import SnortApi, { RevenueSplit, RevenueToday } from "@/External/SnortApi"; -import Modal from "@/Components/Modal/Modal"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import QrCode from "@/Components/QrCode"; -import Copy from "@/Components/Copy/Copy"; import { Link } from "react-router-dom"; + +import AsyncButton from "@/Components/Button/AsyncButton"; +import Copy from "@/Components/Copy/Copy"; +import ZapButton from "@/Components/Event/ZapButton"; +import Modal from "@/Components/Modal/Modal"; +import QrCode from "@/Components/QrCode"; +import ProfilePreview from "@/Components/User/ProfilePreview"; +import SnortApi, { RevenueSplit, RevenueToday } from "@/External/SnortApi"; +import { bech32ToHex, unwrap } from "@/Utils"; +import { ApiHost, DeveloperAccounts, SnortPubKey } from "@/Utils/Const"; import { ZapPoolController, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; + import { ZapPoolTarget } from "./ZapPool"; const Contributors = [ diff --git a/packages/app/src/Pages/ErrorPage.tsx b/packages/app/src/Pages/ErrorPage.tsx index 279048f1..2a1030e0 100644 --- a/packages/app/src/Pages/ErrorPage.tsx +++ b/packages/app/src/Pages/ErrorPage.tsx @@ -1,8 +1,9 @@ -import { db } from "@/Db"; -import AsyncButton from "@/Components/Button/AsyncButton"; import { FormattedMessage } from "react-intl"; import { useRouteError } from "react-router-dom"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import { db } from "@/Db"; + const ErrorPage = () => { const error = useRouteError(); diff --git a/packages/app/src/Pages/FreeNostrAddressPage.tsx b/packages/app/src/Pages/FreeNostrAddressPage.tsx index 67737924..5cffb20a 100644 --- a/packages/app/src/Pages/FreeNostrAddressPage.tsx +++ b/packages/app/src/Pages/FreeNostrAddressPage.tsx @@ -1,4 +1,5 @@ import { FormattedMessage } from "react-intl"; + import IrisAccount from "@/Components/IrisAccount/IrisAccount"; import messages from "./messages"; diff --git a/packages/app/src/Pages/HashTagsPage.tsx b/packages/app/src/Pages/HashTagsPage.tsx index 01d3badd..4f782c4e 100644 --- a/packages/app/src/Pages/HashTagsPage.tsx +++ b/packages/app/src/Pages/HashTagsPage.tsx @@ -1,17 +1,17 @@ -import { useMemo } from "react"; -import { Link, useParams } from "react-router-dom"; -import { FormattedMessage, FormattedNumber } from "react-intl"; -import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { dedupe } from "@snort/shared"; +import { EventKind, NoteCollection, RequestBuilder } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; +import classNames from "classnames"; +import { useMemo } from "react"; +import { FormattedMessage, FormattedNumber } from "react-intl"; +import { Link, useParams } from "react-router-dom"; +import AsyncButton from "@/Components/Button/AsyncButton"; import Timeline from "@/Components/Feed/Timeline"; +import ProfileImage from "@/Components/User/ProfileImage"; import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; import { setTags } from "@/Utils/Login"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import ProfileImage from "@/Components/User/ProfileImage"; -import classNames from "classnames"; import { formatShort } from "@/Utils/Number"; const HashTagsPage = () => { diff --git a/packages/app/src/Pages/HelpPage.tsx b/packages/app/src/Pages/HelpPage.tsx index 3eba4834..c6afbed1 100644 --- a/packages/app/src/Pages/HelpPage.tsx +++ b/packages/app/src/Pages/HelpPage.tsx @@ -1,8 +1,9 @@ -import { Link } from "react-router-dom"; -import { KieranPubKey } from "@/Utils/Const"; +import { encodeTLVEntries, NostrPrefix,TLVEntryType } from "@snort/system"; import { FormattedMessage } from "react-intl"; -import { TLVEntryType, encodeTLVEntries, NostrPrefix } from "@snort/system"; +import { Link } from "react-router-dom"; + import { bech32ToHex } from "@/Utils"; +import { KieranPubKey } from "@/Utils/Const"; export default function HelpPage() { return ( diff --git a/packages/app/src/Pages/Layout/Footer.tsx b/packages/app/src/Pages/Layout/Footer.tsx index 7516786a..f964d70c 100644 --- a/packages/app/src/Pages/Layout/Footer.tsx +++ b/packages/app/src/Pages/Layout/Footer.tsx @@ -1,14 +1,15 @@ -import React, { useState } from "react"; -import NavLink from "@/Components/Button/NavLink"; -import useLogin from "@/Hooks/useLogin"; -import Icon from "@/Components/Icons/Icon"; -import { ProfileLink } from "@/Components/User/ProfileLink"; -import { NoteCreatorButton } from "@/Components/Event/Create/NoteCreatorButton"; -import classNames from "classnames"; import { useUserProfile } from "@snort/system-react"; -import Avatar from "@/Components/User/Avatar"; +import classNames from "classnames"; +import React, { useState } from "react"; import { useIntl } from "react-intl"; +import NavLink from "@/Components/Button/NavLink"; +import { NoteCreatorButton } from "@/Components/Event/Create/NoteCreatorButton"; +import Icon from "@/Components/Icons/Icon"; +import Avatar from "@/Components/User/Avatar"; +import { ProfileLink } from "@/Components/User/ProfileLink"; +import useLogin from "@/Hooks/useLogin"; + type MenuItem = { label?: string; icon?: string; diff --git a/packages/app/src/Pages/Layout/HasNotificationsMarker.tsx b/packages/app/src/Pages/Layout/HasNotificationsMarker.tsx index 35d71cc3..df30263a 100644 --- a/packages/app/src/Pages/Layout/HasNotificationsMarker.tsx +++ b/packages/app/src/Pages/Layout/HasNotificationsMarker.tsx @@ -1,6 +1,7 @@ -import useLogin from "@/Hooks/useLogin"; import { useMemo, useSyncExternalStore } from "react"; + import { Notifications } from "@/Cache"; +import useLogin from "@/Hooks/useLogin"; export function HasNotificationsMarker() { const readNotifications = useLogin(s => s.readNotifications); diff --git a/packages/app/src/Pages/Layout/Header.tsx b/packages/app/src/Pages/Layout/Header.tsx index a8e0511b..826a3d9a 100644 --- a/packages/app/src/Pages/Layout/Header.tsx +++ b/packages/app/src/Pages/Layout/Header.tsx @@ -1,16 +1,17 @@ -import { useLocation, useNavigate } from "react-router-dom"; -import React, { useCallback, useMemo } from "react"; -import classNames from "classnames"; -import { LogoHeader } from "@/Pages/Layout/LogoHeader"; -import { rootTabItems, RootTabs } from "@/Components/Feed/RootTabs"; -import NotificationsHeader from "@/Pages/Layout/NotificationsHeader"; import { NostrLink, NostrPrefix, parseNostrLink } from "@snort/system"; -import { bech32ToHex } from "@/Utils"; import { useEventFeed } from "@snort/system-react"; +import classNames from "classnames"; +import React, { useCallback, useMemo } from "react"; import { FormattedMessage } from "react-intl"; +import { useLocation, useNavigate } from "react-router-dom"; + +import { rootTabItems, RootTabs } from "@/Components/Feed/RootTabs"; +import Icon from "@/Components/Icons/Icon"; import DisplayName from "@/Components/User/DisplayName"; import useLogin from "@/Hooks/useLogin"; -import Icon from "@/Components/Icons/Icon"; +import { LogoHeader } from "@/Pages/Layout/LogoHeader"; +import NotificationsHeader from "@/Pages/Layout/NotificationsHeader"; +import { bech32ToHex } from "@/Utils"; export function Header() { const navigate = useNavigate(); diff --git a/packages/app/src/Pages/Layout/LogoHeader.tsx b/packages/app/src/Pages/Layout/LogoHeader.tsx index 5f9b9bb0..16f9803d 100644 --- a/packages/app/src/Pages/Layout/LogoHeader.tsx +++ b/packages/app/src/Pages/Layout/LogoHeader.tsx @@ -1,12 +1,14 @@ -import useLogin from "../../Hooks/useLogin"; -import { getCurrentSubscription } from "../../Utils/Subscription"; -import { isBirthday, isChristmas, isHalloween, isStPatricksDay } from "../../Utils"; -import { Link } from "react-router-dom"; -import { mapPlanName } from "../subscribe"; -import Icon from "@/Components/Icons/Icon"; import { unixNowMs } from "@snort/shared"; +import { Link } from "react-router-dom"; + +import Icon from "@/Components/Icons/Icon"; import { Birthday, Day } from "@/Utils/Const"; +import useLogin from "../../Hooks/useLogin"; +import { isBirthday, isChristmas, isHalloween, isStPatricksDay } from "../../Utils"; +import { getCurrentSubscription } from "../../Utils/Subscription"; +import { mapPlanName } from "../subscribe"; + const getExtra = () => { if (isBirthday()) { const age = (unixNowMs() - Birthday.getTime()) / (Day * 365_000); diff --git a/packages/app/src/Pages/Layout/NavSidebar.tsx b/packages/app/src/Pages/Layout/NavSidebar.tsx index e5ac27fd..502a872e 100644 --- a/packages/app/src/Pages/Layout/NavSidebar.tsx +++ b/packages/app/src/Pages/Layout/NavSidebar.tsx @@ -1,21 +1,23 @@ -import { LogoHeader } from "./LogoHeader"; -import { Link, useNavigate } from "react-router-dom"; -import Icon from "@/Components/Icons/Icon"; -import { ProfileLink } from "@/Components/User/ProfileLink"; -import Avatar from "@/Components/User/Avatar"; -import useLogin from "../../Hooks/useLogin"; import { useUserProfile } from "@snort/system-react"; -import { NoteCreatorButton } from "@/Components/Event/Create/NoteCreatorButton"; -import { FormattedMessage, FormattedNumber, useIntl } from "react-intl"; import classNames from "classnames"; -import { getCurrentSubscription } from "@/Utils/Subscription"; -import { HasNotificationsMarker } from "@/Pages/Layout/HasNotificationsMarker"; -import NavLink from "@/Components/Button/NavLink"; -import { subscribeToNotifications } from "@/Utils/Notifications"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { Sats, useWallet } from "@/Wallet"; import { useEffect, useState } from "react"; +import { FormattedMessage, FormattedNumber, useIntl } from "react-intl"; +import { Link, useNavigate } from "react-router-dom"; + +import NavLink from "@/Components/Button/NavLink"; +import { NoteCreatorButton } from "@/Components/Event/Create/NoteCreatorButton"; +import Icon from "@/Components/Icons/Icon"; +import Avatar from "@/Components/User/Avatar"; +import { ProfileLink } from "@/Components/User/ProfileLink"; +import useEventPublisher from "@/Hooks/useEventPublisher"; import { useRates } from "@/Hooks/useRates"; +import { HasNotificationsMarker } from "@/Pages/Layout/HasNotificationsMarker"; +import { subscribeToNotifications } from "@/Utils/Notifications"; +import { getCurrentSubscription } from "@/Utils/Subscription"; +import { Sats, useWallet } from "@/Wallet"; + +import useLogin from "../../Hooks/useLogin"; +import { LogoHeader } from "./LogoHeader"; const MENU_ITEMS = [ { diff --git a/packages/app/src/Pages/Layout/NotificationsHeader.tsx b/packages/app/src/Pages/Layout/NotificationsHeader.tsx index 2ad07dbf..fbefb1d8 100644 --- a/packages/app/src/Pages/Layout/NotificationsHeader.tsx +++ b/packages/app/src/Pages/Layout/NotificationsHeader.tsx @@ -1,12 +1,13 @@ -import { useNavigate } from "react-router-dom"; -import Icon from "@/Components/Icons/Icon"; -import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; -import { isFormElement } from "@/Utils"; -import useLogin from "@/Hooks/useLogin"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { HasNotificationsMarker } from "@/Pages/Layout/HasNotificationsMarker"; -import NavLink from "@/Components/Button/NavLink"; import classNames from "classnames"; +import { useNavigate } from "react-router-dom"; + +import NavLink from "@/Components/Button/NavLink"; +import Icon from "@/Components/Icons/Icon"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; +import useLogin from "@/Hooks/useLogin"; +import { HasNotificationsMarker } from "@/Pages/Layout/HasNotificationsMarker"; +import { isFormElement } from "@/Utils"; import { subscribeToNotifications } from "@/Utils/Notifications"; const NotificationsHeader = () => { diff --git a/packages/app/src/Pages/Layout/RightColumn.tsx b/packages/app/src/Pages/Layout/RightColumn.tsx index 94975637..d4f48844 100644 --- a/packages/app/src/Pages/Layout/RightColumn.tsx +++ b/packages/app/src/Pages/Layout/RightColumn.tsx @@ -1,8 +1,9 @@ -import SearchBox from "@/Components/SearchBox/SearchBox"; -import TrendingNotes from "@/Components/Trending/TrendingPosts"; -import TrendingHashtags from "@/Components/Trending/TrendingHashtags"; -import { FormattedMessage } from "react-intl"; import classNames from "classnames"; +import { FormattedMessage } from "react-intl"; + +import SearchBox from "@/Components/SearchBox/SearchBox"; +import TrendingHashtags from "@/Components/Trending/TrendingHashtags"; +import TrendingNotes from "@/Components/Trending/TrendingPosts"; import useLogin from "@/Hooks/useLogin"; export default function RightColumn() { diff --git a/packages/app/src/Pages/Layout/index.tsx b/packages/app/src/Pages/Layout/index.tsx index d258ddac..d6921ebe 100644 --- a/packages/app/src/Pages/Layout/index.tsx +++ b/packages/app/src/Pages/Layout/index.tsx @@ -1,23 +1,25 @@ import "./Layout.css"; + import { useCallback } from "react"; import { Outlet, useLocation } from "react-router-dom"; -import useLogin from "@/Hooks/useLogin"; -import { isFormElement } from "@/Utils"; -import Toaster from "@/Components/Toaster/Toaster"; -import { useTheme } from "@/Hooks/useTheme"; -import { useLoginRelays } from "@/Hooks/useLoginRelays"; -import { LoginUnlock } from "@/Components/PinPrompt/PinPrompt"; -import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; -import { LoginStore } from "@/Utils/Login"; -import NavSidebar from "./NavSidebar"; -import RightColumn from "./RightColumn"; -import useLoginFeed from "@/Feed/LoginFeed"; +import CloseButton from "@/Components/Button/CloseButton"; import ErrorBoundary from "@/Components/ErrorBoundary"; +import { LoginUnlock } from "@/Components/PinPrompt/PinPrompt"; +import Toaster from "@/Components/Toaster/Toaster"; +import useLoginFeed from "@/Feed/LoginFeed"; +import { useCommunityLeaders } from "@/Hooks/useCommunityLeaders"; +import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; +import useLogin from "@/Hooks/useLogin"; +import { useLoginRelays } from "@/Hooks/useLoginRelays"; +import { useTheme } from "@/Hooks/useTheme"; import Footer from "@/Pages/Layout/Footer"; import { Header } from "@/Pages/Layout/Header"; -import CloseButton from "@/Components/Button/CloseButton"; -import { useCommunityLeaders } from "@/Hooks/useCommunityLeaders"; +import { isFormElement } from "@/Utils"; +import { LoginStore } from "@/Utils/Login"; + +import NavSidebar from "./NavSidebar"; +import RightColumn from "./RightColumn"; export default function Index() { const location = useLocation(); diff --git a/packages/app/src/Pages/ListFeedPage.tsx b/packages/app/src/Pages/ListFeedPage.tsx index 930f27ca..b9fd6793 100644 --- a/packages/app/src/Pages/ListFeedPage.tsx +++ b/packages/app/src/Pages/ListFeedPage.tsx @@ -4,9 +4,9 @@ import { useEventFeed } from "@snort/system-react"; import { FormattedMessage } from "react-intl"; import { useParams } from "react-router-dom"; -import { Hour } from "@/Utils/Const"; import Timeline from "@/Components/Feed/Timeline"; import PageSpinner from "@/Components/PageSpinner"; +import { Hour } from "@/Utils/Const"; export function ListFeedPage() { const { id } = useParams(); diff --git a/packages/app/src/Pages/Messages/DM.tsx b/packages/app/src/Pages/Messages/DM.tsx index 82ed011b..45fe07fc 100644 --- a/packages/app/src/Pages/Messages/DM.tsx +++ b/packages/app/src/Pages/Messages/DM.tsx @@ -1,17 +1,16 @@ import "./DM.css"; import { useEffect, useState } from "react"; -import { FormattedMessage, useIntl } from "react-intl"; import { useInView } from "react-intersection-observer"; +import { FormattedMessage, useIntl } from "react-intl"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import NoteTime from "@/Components/Event/NoteTime"; -import Text from "@/Components/Text/Text"; -import useLogin from "@/Hooks/useLogin"; import { Chat, ChatMessage, ChatType, setLastReadIn } from "@/chat"; -import ProfileImage from "@/Components/User/ProfileImage"; - +import NoteTime from "@/Components/Event/NoteTime"; import messages from "@/Components/messages"; +import Text from "@/Components/Text/Text"; +import ProfileImage from "@/Components/User/ProfileImage"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; export interface DMProps { chat: Chat; diff --git a/packages/app/src/Pages/Messages/DmWindow.tsx b/packages/app/src/Pages/Messages/DmWindow.tsx index 19ff7b01..8c65e1a3 100644 --- a/packages/app/src/Pages/Messages/DmWindow.tsx +++ b/packages/app/src/Pages/Messages/DmWindow.tsx @@ -1,10 +1,12 @@ import { useEffect, useMemo, useRef } from "react"; -import ProfileImage from "@/Components/User/ProfileImage"; -import DM from "@/Pages/Messages/DM"; -import useLogin from "@/Hooks/useLogin"; -import WriteMessage from "@/Pages/Messages/WriteMessage"; -import { Chat, createEmptyChatObject, useChatSystem } from "@/chat"; import { FormattedMessage } from "react-intl"; + +import { Chat, createEmptyChatObject, useChatSystem } from "@/chat"; +import ProfileImage from "@/Components/User/ProfileImage"; +import useLogin from "@/Hooks/useLogin"; +import DM from "@/Pages/Messages/DM"; +import WriteMessage from "@/Pages/Messages/WriteMessage"; + import { ChatParticipantProfile } from "./ChatParticipant"; export default function DmWindow({ id }: { id: string }) { diff --git a/packages/app/src/Pages/Messages/MessagesPage.tsx b/packages/app/src/Pages/Messages/MessagesPage.tsx index 771347a0..95f3a7c6 100644 --- a/packages/app/src/Pages/Messages/MessagesPage.tsx +++ b/packages/app/src/Pages/Messages/MessagesPage.tsx @@ -1,19 +1,19 @@ +import classNames from "classnames"; import React, { useEffect, useMemo, useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { useNavigate, useParams } from "react-router-dom"; -import UnreadCount from "@/Pages/Messages/UnreadCount"; -import ProfileImage from "@/Components/User/ProfileImage"; -import { parseId } from "@/Utils"; +import { Chat, ChatType, useChatSystem } from "@/chat"; +import NoteTime from "@/Components/Event/NoteTime"; import NoteToSelf from "@/Components/User/NoteToSelf"; +import ProfileImage from "@/Components/User/ProfileImage"; import useLogin from "@/Hooks/useLogin"; import usePageWidth from "@/Hooks/usePageWidth"; -import NoteTime from "@/Components/Event/NoteTime"; -import DmWindow from "@/Pages/Messages/DmWindow"; -import { Chat, ChatType, useChatSystem } from "@/chat"; import { ChatParticipantProfile } from "@/Pages/Messages/ChatParticipant"; -import classNames from "classnames"; +import DmWindow from "@/Pages/Messages/DmWindow"; import NewChatWindow from "@/Pages/Messages/NewChatWindow"; +import UnreadCount from "@/Pages/Messages/UnreadCount"; +import { parseId } from "@/Utils"; const TwoCol = 768; diff --git a/packages/app/src/Pages/Messages/NewChatWindow.tsx b/packages/app/src/Pages/Messages/NewChatWindow.tsx index 39d90a03..d65f9dc5 100644 --- a/packages/app/src/Pages/Messages/NewChatWindow.tsx +++ b/packages/app/src/Pages/Messages/NewChatWindow.tsx @@ -1,19 +1,20 @@ -import React, { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { decodeTLV, EventKind } from "@snort/system"; import { useUserSearch } from "@snort/system-react"; -import useLogin from "@/Hooks/useLogin"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { appendDedupe, debounce } from "@/Utils"; +import React, { useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { useNavigate } from "react-router-dom"; + import { ChatType, createChatLink } from "@/chat"; +import { Nip28ChatSystem } from "@/chat/nip28"; import Icon from "@/Components/Icons/Icon"; import Modal from "@/Components/Modal/Modal"; -import { FormattedMessage } from "react-intl"; import ProfileImage from "@/Components/User/ProfileImage"; import ProfilePreview from "@/Components/User/ProfilePreview"; -import { Nip28ChatSystem } from "@/chat/nip28"; -import { LoginSession, LoginStore } from "@/Utils/Login"; -import { decodeTLV, EventKind } from "@snort/system"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; import Nip28ChatProfile from "@/Pages/Messages/Nip28ChatProfile"; +import { appendDedupe, debounce } from "@/Utils"; +import { LoginSession, LoginStore } from "@/Utils/Login"; export default function NewChatWindow() { const [show, setShow] = useState(false); diff --git a/packages/app/src/Pages/Messages/Nip28ChatProfile.tsx b/packages/app/src/Pages/Messages/Nip28ChatProfile.tsx index e0ec2760..d8345d77 100644 --- a/packages/app/src/Pages/Messages/Nip28ChatProfile.tsx +++ b/packages/app/src/Pages/Messages/Nip28ChatProfile.tsx @@ -1,8 +1,9 @@ -import { useEventFeed } from "@snort/system-react"; import { NostrLink, UserMetadata } from "@snort/system"; -import ProfilePreview from "@/Components/User/ProfilePreview"; +import { useEventFeed } from "@snort/system-react"; import React from "react"; +import ProfilePreview from "@/Components/User/ProfilePreview"; + export default function Nip28ChatProfile({ id, onClick }: { id: string; onClick: (id: string) => void }) { const channel = useEventFeed(new NostrLink(CONFIG.eventLinkPrefix, id, 40)); if (channel?.data) { diff --git a/packages/app/src/Pages/Messages/WriteMessage.tsx b/packages/app/src/Pages/Messages/WriteMessage.tsx index c82ed4f8..1c270837 100644 --- a/packages/app/src/Pages/Messages/WriteMessage.tsx +++ b/packages/app/src/Pages/Messages/WriteMessage.tsx @@ -1,8 +1,9 @@ import { useState } from "react"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import Textarea from "@/Components/Textarea/Textarea"; + import { Chat } from "@/chat"; import { AsyncIcon } from "@/Components/Button/AsyncIcon"; +import Textarea from "@/Components/Textarea/Textarea"; +import useEventPublisher from "@/Hooks/useEventPublisher"; export default function WriteMessage({ chat }: { chat: Chat }) { const [msg, setMsg] = useState(""); diff --git a/packages/app/src/Pages/NetworkGraph.tsx b/packages/app/src/Pages/NetworkGraph.tsx index ddc672f2..1728cbe1 100644 --- a/packages/app/src/Pages/NetworkGraph.tsx +++ b/packages/app/src/Pages/NetworkGraph.tsx @@ -1,12 +1,14 @@ -import { NodeObject } from "react-force-graph-3d"; -import { useContext, useEffect, useState } from "react"; import { MetadataCache, socialGraphInstance, STR, UID } from "@snort/system"; import { SnortContext } from "@snort/system-react"; -import { defaultAvatar } from "../Utils"; +import { useContext, useEffect, useState } from "react"; +import { NodeObject } from "react-force-graph-3d"; +import { FormattedMessage } from "react-intl"; + +import Icon from "@/Components/Icons/Icon"; import { proxyImg } from "@/Hooks/useImgProxy"; import { LoginStore } from "@/Utils/Login"; -import { FormattedMessage } from "react-intl"; -import Icon from "@/Components/Icons/Icon"; + +import { defaultAvatar } from "../Utils"; interface GraphNode { id: UID; diff --git a/packages/app/src/Pages/NostrAddressPage.tsx b/packages/app/src/Pages/NostrAddressPage.tsx index 7da6fca7..dfbbb598 100644 --- a/packages/app/src/Pages/NostrAddressPage.tsx +++ b/packages/app/src/Pages/NostrAddressPage.tsx @@ -1,7 +1,7 @@ import { FormattedMessage } from "react-intl"; -import { ApiHost } from "@/Utils/Const"; import Nip5Service from "@/Components/Nip5Service"; +import { ApiHost } from "@/Utils/Const"; import messages from "./messages"; diff --git a/packages/app/src/Pages/NostrLinkHandler.tsx b/packages/app/src/Pages/NostrLinkHandler.tsx index 30fc7f67..2c4e6b0d 100644 --- a/packages/app/src/Pages/NostrLinkHandler.tsx +++ b/packages/app/src/Pages/NostrLinkHandler.tsx @@ -1,12 +1,13 @@ -import React, { useEffect, useState } from "react"; -import { useParams, useLocation } from "react-router-dom"; import { fetchNip05Pubkey } from "@snort/shared"; -import Spinner from "@/Components/Icons/Spinner"; -import ProfilePage from "@/Pages/Profile/ProfilePage"; +import { NostrPrefix, tryParseNostrLink } from "@snort/system"; +import React, { useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { useLocation,useParams } from "react-router-dom"; + import { ThreadRoute } from "@/Components/Event/Thread"; import { GenericFeed } from "@/Components/Feed/Generic"; -import { NostrPrefix, tryParseNostrLink } from "@snort/system"; -import { FormattedMessage } from "react-intl"; +import Spinner from "@/Components/Icons/Spinner"; +import ProfilePage from "@/Pages/Profile/ProfilePage"; export default function NostrLinkHandler() { const { state } = useLocation(); diff --git a/packages/app/src/Pages/Notifications/NotificationChart.tsx b/packages/app/src/Pages/Notifications/NotificationChart.tsx index ce77c445..5250787f 100644 --- a/packages/app/src/Pages/Notifications/NotificationChart.tsx +++ b/packages/app/src/Pages/Notifications/NotificationChart.tsx @@ -1,16 +1,17 @@ -import { Day } from "@/Utils/Const"; -import Icon from "@/Components/Icons/Icon"; -import { formatShort } from "@/Utils/Number"; -import { orderAscending } from "@/Utils"; import { unixNow, unwrap } from "@snort/shared"; -import { TaggedNostrEvent, EventKind } from "@snort/system"; +import { EventKind,TaggedNostrEvent } from "@snort/system"; import classNames from "classnames"; -import { useState, useMemo } from "react"; +import { useMemo,useState } from "react"; import { FormattedMessage } from "react-intl"; -import { AsyncIcon } from "@/Components/Button/AsyncIcon"; -import Tabs, { Tab } from "@/Components/Tabs/Tabs"; import { Bar, BarChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from "recharts"; +import { AsyncIcon } from "@/Components/Button/AsyncIcon"; +import Icon from "@/Components/Icons/Icon"; +import Tabs, { Tab } from "@/Components/Tabs/Tabs"; +import { orderAscending } from "@/Utils"; +import { Day } from "@/Utils/Const"; +import { formatShort } from "@/Utils/Number"; + interface StatSlot { time: string; reactions: number; diff --git a/packages/app/src/Pages/Notifications/Notifications.tsx b/packages/app/src/Pages/Notifications/Notifications.tsx index cfa55e0d..9afa4307 100644 --- a/packages/app/src/Pages/Notifications/Notifications.tsx +++ b/packages/app/src/Pages/Notifications/Notifications.tsx @@ -1,25 +1,26 @@ import "./Notifications.css"; -import { Suspense, lazy, useEffect, useMemo, useState, useSyncExternalStore } from "react"; -import { EventExt, EventKind, NostrEvent, NostrLink, NostrPrefix, TaggedNostrEvent, parseZap } from "@snort/system"; + import { unwrap } from "@snort/shared"; +import { EventExt, EventKind, NostrEvent, NostrLink, NostrPrefix, parseZap,TaggedNostrEvent } from "@snort/system"; import { useEventFeed, useUserProfile } from "@snort/system-react"; +import { lazy, Suspense, useEffect, useMemo, useState, useSyncExternalStore } from "react"; import { useInView } from "react-intersection-observer"; import { FormattedMessage, useIntl } from "react-intl"; import { useNavigate } from "react-router-dom"; -import useLogin from "@/Hooks/useLogin"; -import { markNotificationsRead } from "@/Utils/Login"; import { Notifications } from "@/Cache"; -import { dedupe, orderDescending, getDisplayName } from "@/Utils"; -import Icon from "@/Components/Icons/Icon"; -import ProfileImage from "@/Components/User/ProfileImage"; -import useModeration from "@/Hooks/useModeration"; -import Text from "@/Components/Text/Text"; -import { formatShort } from "@/Utils/Number"; -import { LiveEvent } from "@/Components/LiveStream/LiveEvent"; -import ProfilePreview from "@/Components/User/ProfilePreview"; import { ShowMoreInView } from "@/Components/Event/ShowMore"; +import Icon from "@/Components/Icons/Icon"; +import { LiveEvent } from "@/Components/LiveStream/LiveEvent"; import PageSpinner from "@/Components/PageSpinner"; +import Text from "@/Components/Text/Text"; +import ProfileImage from "@/Components/User/ProfileImage"; +import ProfilePreview from "@/Components/User/ProfilePreview"; +import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; +import { dedupe, getDisplayName,orderDescending } from "@/Utils"; +import { markNotificationsRead } from "@/Utils/Login"; +import { formatShort } from "@/Utils/Number"; const NotificationGraph = lazy(() => import("@/Pages/Notifications/NotificationChart")); function notificationContext(ev: TaggedNostrEvent) { diff --git a/packages/app/src/Pages/Profile/ProfilePage.tsx b/packages/app/src/Pages/Profile/ProfilePage.tsx index 5b301de9..f0b85b38 100644 --- a/packages/app/src/Pages/Profile/ProfilePage.tsx +++ b/packages/app/src/Pages/Profile/ProfilePage.tsx @@ -1,7 +1,6 @@ import "./ProfilePage.css"; -import { useEffect, useState } from "react"; -import { FormattedMessage } from "react-intl"; -import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; + +import { fetchNip05Pubkey, LNURL } from "@snort/shared"; import { encodeTLVEntries, EventKind, @@ -11,39 +10,42 @@ import { TLVEntryType, tryParseNostrLink, } from "@snort/system"; -import { fetchNip05Pubkey, LNURL } from "@snort/shared"; import { useUserProfile } from "@snort/system-react"; +import { useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; -import { findTag, getLinkReactions, hexToBech32, parseId, unwrap } from "@/Utils"; -import Note from "@/Components/Event/Note"; -import { Tab, TabElement } from "@/Components/Tabs/Tabs"; -import Icon from "@/Components/Icons/Icon"; -import useFollowsFeed from "@/Feed/FollowsFeed"; -import useProfileBadges from "@/Feed/BadgesFeed"; -import useModeration from "@/Hooks/useModeration"; -import FollowButton from "@/Components/User/FollowButton"; -import Avatar from "@/Components/User/Avatar"; -import Timeline from "@/Components/Feed/Timeline"; -import Text from "@/Components/Text/Text"; -import SendSats from "@/Components/SendSats/SendSats"; -import Nip05 from "@/Components/User/Nip05"; -import Copy from "@/Components/Copy/Copy"; -import ProfileImage from "@/Components/User/ProfileImage"; -import BlockList from "@/Components/User/BlockList"; -import MutedList from "@/Components/User/MutedList"; -import FollowsList from "@/Components/User/FollowListBase"; import IconButton from "@/Components/Button/IconButton"; -import FollowsYou from "@/Components/User/FollowsYou"; -import QrCode from "@/Components/QrCode"; +import Copy from "@/Components/Copy/Copy"; +import Note from "@/Components/Event/Note"; +import Timeline from "@/Components/Feed/Timeline"; +import Icon from "@/Components/Icons/Icon"; import Modal from "@/Components/Modal/Modal"; -import BadgeList from "@/Components/User/BadgeList"; import { ProxyImg } from "@/Components/ProxyImg"; -import useHorizontalScroll from "@/Hooks/useHorizontalScroll"; -import { EmailRegex } from "@/Utils/Const"; -import useLogin from "@/Hooks/useLogin"; -import { ZapTarget } from "@/Utils/Zapper"; -import { useStatusFeed } from "@/Feed/StatusFeed"; +import QrCode from "@/Components/QrCode"; +import SendSats from "@/Components/SendSats/SendSats"; import { SpotlightMediaModal } from "@/Components/Spotlight/SpotlightMedia"; +import { Tab, TabElement } from "@/Components/Tabs/Tabs"; +import Text from "@/Components/Text/Text"; +import Avatar from "@/Components/User/Avatar"; +import BadgeList from "@/Components/User/BadgeList"; +import BlockList from "@/Components/User/BlockList"; +import DisplayName from "@/Components/User/DisplayName"; +import FollowButton from "@/Components/User/FollowButton"; +import FollowedBy from "@/Components/User/FollowedBy"; +import FollowsList from "@/Components/User/FollowListBase"; +import FollowsYou from "@/Components/User/FollowsYou"; +import MutedList from "@/Components/User/MutedList"; +import Nip05 from "@/Components/User/Nip05"; +import ProfileImage from "@/Components/User/ProfileImage"; +import { UserWebsiteLink } from "@/Components/User/UserWebsiteLink"; +import useProfileBadges from "@/Feed/BadgesFeed"; +import useFollowsFeed from "@/Feed/FollowsFeed"; +import { useStatusFeed } from "@/Feed/StatusFeed"; +import useHorizontalScroll from "@/Hooks/useHorizontalScroll"; +import { useMuteList, usePinList } from "@/Hooks/useLists"; +import useLogin from "@/Hooks/useLogin"; +import useModeration from "@/Hooks/useModeration"; import ProfileTab, { BookMarksTab, FollowersTab, @@ -52,10 +54,9 @@ import ProfileTab, { RelaysTab, ZapsProfileTab, } from "@/Pages/Profile/ProfileTab"; -import DisplayName from "@/Components/User/DisplayName"; -import { UserWebsiteLink } from "@/Components/User/UserWebsiteLink"; -import { useMuteList, usePinList } from "@/Hooks/useLists"; -import FollowedBy from "@/Components/User/FollowedBy"; +import { findTag, getLinkReactions, hexToBech32, parseId, unwrap } from "@/Utils"; +import { EmailRegex } from "@/Utils/Const"; +import { ZapTarget } from "@/Utils/Zapper"; interface ProfilePageProps { id?: string; diff --git a/packages/app/src/Pages/Profile/ProfileTab.tsx b/packages/app/src/Pages/Profile/ProfileTab.tsx index 03c65cd1..b733cdd4 100644 --- a/packages/app/src/Pages/Profile/ProfileTab.tsx +++ b/packages/app/src/Pages/Profile/ProfileTab.tsx @@ -1,19 +1,19 @@ -import { FormattedMessage } from "react-intl"; import { HexKey, NostrLink, NostrPrefix } from "@snort/system"; import { useReactions } from "@snort/system-react"; +import { FormattedMessage } from "react-intl"; -import useZapsFeed from "@/Feed/ZapsFeed"; -import { formatShort } from "@/Utils/Number"; -import useFollowersFeed from "@/Feed/FollowersFeed"; +import { default as ZapElement } from "@/Components/Event/Zap"; +import Icon from "@/Components/Icons/Icon"; +import RelaysMetadata from "@/Components/Relay/RelaysMetadata"; +import { Tab } from "@/Components/Tabs/Tabs"; +import Bookmarks from "@/Components/User/Bookmarks"; import FollowsList from "@/Components/User/FollowListBase"; +import useFollowersFeed from "@/Feed/FollowersFeed"; import useFollowsFeed from "@/Feed/FollowsFeed"; import useRelaysFeed from "@/Feed/RelaysFeed"; -import RelaysMetadata from "@/Components/Relay/RelaysMetadata"; -import Bookmarks from "@/Components/User/Bookmarks"; -import Icon from "@/Components/Icons/Icon"; -import { Tab } from "@/Components/Tabs/Tabs"; -import { default as ZapElement } from "@/Components/Event/Zap"; +import useZapsFeed from "@/Feed/ZapsFeed"; import { useBookmarkList } from "@/Hooks/useLists"; +import { formatShort } from "@/Utils/Number"; import messages from "../messages"; diff --git a/packages/app/src/Pages/Root.tsx b/packages/app/src/Pages/Root.tsx index 78234d2f..0a316e0f 100644 --- a/packages/app/src/Pages/Root.tsx +++ b/packages/app/src/Pages/Root.tsx @@ -1,28 +1,30 @@ -import { lazy, useContext, useEffect, useState } from "react"; -import { Link, Outlet, RouteObject, useParams } from "react-router-dom"; -import { FormattedMessage } from "react-intl"; import { unixNow } from "@snort/shared"; import { NostrLink } from "@snort/system"; import { SnortContext } from "@snort/system-react"; +import { lazy, useContext, useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import { Link, Outlet, RouteObject, useParams } from "react-router-dom"; import Timeline from "@/Components/Feed/Timeline"; -import { TimelineSubject } from "@/Feed/TimelineFeed"; -import { debounce, getCurrentRefCode, getRelayName, sha256 } from "@/Utils"; -import useLogin from "@/Hooks/useLogin"; -import Discover from "@/Pages/Discover"; -import TrendingNotes from "@/Components/Trending/TrendingPosts"; -import HashTagsPage from "@/Pages/HashTagsPage"; +import TimelineFollows from "@/Components/Feed/TimelineFollows"; import SuggestedProfiles from "@/Components/SuggestedProfiles"; import { TaskList } from "@/Components/Tasks/TaskList"; -import TimelineFollows from "@/Components/Feed/TimelineFollows"; -import { DeckContext } from "@/Pages/DeckLayout"; -import { TopicsPage } from "./TopicsPage"; import TrendingHashtags from "@/Components/Trending/TrendingHashtags"; +import TrendingNotes from "@/Components/Trending/TrendingPosts"; +import { TimelineSubject } from "@/Feed/TimelineFeed"; +import useLogin from "@/Hooks/useLogin"; +import { DeckContext } from "@/Pages/DeckLayout"; +import Discover from "@/Pages/Discover"; +import HashTagsPage from "@/Pages/HashTagsPage"; +import { debounce, getCurrentRefCode, getRelayName, sha256 } from "@/Utils"; + +import { TopicsPage } from "./TopicsPage"; const InviteModal = lazy(() => import("@/Components/Invite")); -import messages from "./messages"; import useHistoryState from "@/Hooks/useHistoryState"; +import messages from "./messages"; + interface RelayOption { url: string; paid: boolean; diff --git a/packages/app/src/Pages/SearchPage.tsx b/packages/app/src/Pages/SearchPage.tsx index b2254f79..f39936a5 100644 --- a/packages/app/src/Pages/SearchPage.tsx +++ b/packages/app/src/Pages/SearchPage.tsx @@ -1,14 +1,14 @@ -import { useIntl, FormattedMessage } from "react-intl"; -import { useParams } from "react-router-dom"; -import Timeline from "@/Components/Feed/Timeline"; -import Tabs, { Tab } from "@/Components/Tabs/Tabs"; import { useEffect, useState } from "react"; -import { debounce } from "@/Utils"; -import { router } from "@/index"; -import TrendingUsers from "@/Components/Trending/TrendingUsers"; +import { FormattedMessage,useIntl } from "react-intl"; +import { useParams } from "react-router-dom"; -import TrendingNotes from "@/Components/Trending/TrendingPosts"; +import Timeline from "@/Components/Feed/Timeline"; import UsersFeed from "@/Components/Feed/UsersFeed"; +import Tabs, { Tab } from "@/Components/Tabs/Tabs"; +import TrendingNotes from "@/Components/Trending/TrendingPosts"; +import TrendingUsers from "@/Components/Trending/TrendingUsers"; +import { router } from "@/index"; +import { debounce } from "@/Utils"; const NOTES = 0; const PROFILES = 1; diff --git a/packages/app/src/Pages/ZapPool.tsx b/packages/app/src/Pages/ZapPool.tsx index ebe2fe3d..a63720e1 100644 --- a/packages/app/src/Pages/ZapPool.tsx +++ b/packages/app/src/Pages/ZapPool.tsx @@ -1,18 +1,18 @@ import "./ZapPool.css"; +import { useUserProfile } from "@snort/system-react"; import { useMemo, useSyncExternalStore } from "react"; import { FormattedMessage, FormattedNumber } from "react-intl"; -import { useUserProfile } from "@snort/system-react"; -import { SnortPubKey } from "@/Utils/Const"; -import ProfilePreview from "@/Components/User/ProfilePreview"; -import useLogin from "@/Hooks/useLogin"; -import { UploaderServices } from "@/Utils/Upload"; -import { bech32ToHex, getRelayName, trackEvent, unwrap } from "@/Utils"; -import { ZapPoolController, ZapPoolRecipient, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; import AsyncButton from "@/Components/Button/AsyncButton"; -import { useWallet } from "@/Wallet"; +import ProfilePreview from "@/Components/User/ProfilePreview"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { bech32ToHex, getRelayName, trackEvent, unwrap } from "@/Utils"; +import { SnortPubKey } from "@/Utils/Const"; +import { UploaderServices } from "@/Utils/Upload"; +import { ZapPoolController, ZapPoolRecipient, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; +import { useWallet } from "@/Wallet"; const DataProviders = [ { diff --git a/packages/app/src/Pages/onboarding/discover.tsx b/packages/app/src/Pages/onboarding/discover.tsx index c29bde35..c3f9396b 100644 --- a/packages/app/src/Pages/onboarding/discover.tsx +++ b/packages/app/src/Pages/onboarding/discover.tsx @@ -1,9 +1,11 @@ import { FormattedMessage } from "react-intl"; import { useLocation, useNavigate } from "react-router-dom"; + import AsyncButton from "@/Components/Button/AsyncButton"; -import { NewUserState } from "."; import TrendingUsers from "@/Components/Trending/TrendingUsers"; +import { NewUserState } from "."; + export function Discover() { const location = useLocation(); const navigate = useNavigate(); diff --git a/packages/app/src/Pages/onboarding/index.tsx b/packages/app/src/Pages/onboarding/index.tsx index 7aa2f930..8bbcd196 100644 --- a/packages/app/src/Pages/onboarding/index.tsx +++ b/packages/app/src/Pages/onboarding/index.tsx @@ -1,13 +1,16 @@ import "./index.css"; + import { Outlet, RouteObject } from "react-router-dom"; -import { SignIn, SignUp } from "./start"; -import { AllLanguageCodes } from "@/Pages/settings/Preferences"; + import Icon from "@/Components/Icons/Icon"; -import { Profile } from "./profile"; -import { Topics } from "./topics"; -import { Discover } from "./discover"; import { useLocale } from "@/IntlProvider"; +import { AllLanguageCodes } from "@/Pages/settings/Preferences"; + +import { Discover } from "./discover"; import { Moderation } from "./moderation"; +import { Profile } from "./profile"; +import { SignIn, SignUp } from "./start"; +import { Topics } from "./topics"; export interface NewUserState { name?: string; diff --git a/packages/app/src/Pages/onboarding/moderation.tsx b/packages/app/src/Pages/onboarding/moderation.tsx index 288ec7e9..d5470404 100644 --- a/packages/app/src/Pages/onboarding/moderation.tsx +++ b/packages/app/src/Pages/onboarding/moderation.tsx @@ -1,13 +1,13 @@ +import { unixNowMs } from "@snort/shared"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; -import { unixNowMs } from "@snort/shared"; import AsyncButton from "@/Components/Button/AsyncButton"; -import { appendDedupe } from "@/Utils"; import { ToggleSwitch } from "@/Components/Icons/Toggle"; -import { updateAppData } from "@/Utils/Login"; import useLogin from "@/Hooks/useLogin"; +import { appendDedupe } from "@/Utils"; +import { updateAppData } from "@/Utils/Login"; export const FixedModeration = { /*hateSpeech: { diff --git a/packages/app/src/Pages/onboarding/profile.tsx b/packages/app/src/Pages/onboarding/profile.tsx index 587d62f1..3dc0d614 100644 --- a/packages/app/src/Pages/onboarding/profile.tsx +++ b/packages/app/src/Pages/onboarding/profile.tsx @@ -1,13 +1,15 @@ -import AsyncButton from "@/Components/Button/AsyncButton"; -import AvatarEditor from "@/Components/User/AvatarEditor"; +import { NotEncrypted } from "@snort/system"; +import { SnortContext } from "@snort/system-react"; import { useContext, useState } from "react"; import { FormattedMessage } from "react-intl"; import { useLocation, useNavigate } from "react-router-dom"; -import { generateNewLogin } from "@/Utils/Login"; -import { SnortContext } from "@snort/system-react"; -import { NotEncrypted } from "@snort/system"; -import { NewUserState } from "."; + +import AsyncButton from "@/Components/Button/AsyncButton"; +import AvatarEditor from "@/Components/User/AvatarEditor"; import { trackEvent } from "@/Utils"; +import { generateNewLogin } from "@/Utils/Login"; + +import { NewUserState } from "."; export function Profile() { const system = useContext(SnortContext); diff --git a/packages/app/src/Pages/onboarding/start.tsx b/packages/app/src/Pages/onboarding/start.tsx index a3bebafb..ae36944f 100644 --- a/packages/app/src/Pages/onboarding/start.tsx +++ b/packages/app/src/Pages/onboarding/start.tsx @@ -1,16 +1,17 @@ -import { FormattedMessage, useIntl } from "react-intl"; -import { useState } from "react"; -import { Link, useNavigate } from "react-router-dom"; import { unwrap } from "@snort/shared"; +import { NotEncrypted } from "@snort/system"; +import classNames from "classnames"; +import { useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; +import { Link, useNavigate } from "react-router-dom"; import AsyncButton from "@/Components/Button/AsyncButton"; import Icon from "@/Components/Icons/Icon"; -import { NewUserState } from "."; -import { LoginSessionType, LoginStore } from "@/Utils/Login"; import useLoginHandler from "@/Hooks/useLoginHandler"; -import { NotEncrypted } from "@snort/system"; -import classNames from "classnames"; import { trackEvent } from "@/Utils"; +import { LoginSessionType, LoginStore } from "@/Utils/Login"; + +import { NewUserState } from "."; const NSEC_NPUB_REGEX = /(nsec1|npub1)[a-zA-Z0-9]{20,65}/gi; diff --git a/packages/app/src/Pages/onboarding/topics.tsx b/packages/app/src/Pages/onboarding/topics.tsx index 51f8ac11..16e2f215 100644 --- a/packages/app/src/Pages/onboarding/topics.tsx +++ b/packages/app/src/Pages/onboarding/topics.tsx @@ -1,11 +1,12 @@ +import { EventKind } from "@snort/system"; +import classNames from "classnames"; import { ReactNode, useState } from "react"; import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; + import AsyncButton from "@/Components/Button/AsyncButton"; -import classNames from "classnames"; -import { appendDedupe } from "@/Utils"; import useEventPublisher from "@/Hooks/useEventPublisher"; -import { EventKind } from "@snort/system"; +import { appendDedupe } from "@/Utils"; export const FixedTopics = { life: { diff --git a/packages/app/src/Pages/settings/Cache.tsx b/packages/app/src/Pages/settings/Cache.tsx index 3da68147..4d1a3660 100644 --- a/packages/app/src/Pages/settings/Cache.tsx +++ b/packages/app/src/Pages/settings/Cache.tsx @@ -1,4 +1,7 @@ import { FeedCache } from "@snort/shared"; +import { ReactNode, useSyncExternalStore } from "react"; +import { FormattedMessage, FormattedNumber } from "react-intl"; + import { Chats, FollowLists, @@ -12,8 +15,6 @@ import { UserRelays, } from "@/Cache"; import AsyncButton from "@/Components/Button/AsyncButton"; -import { ReactNode, useSyncExternalStore } from "react"; -import { FormattedMessage, FormattedNumber } from "react-intl"; export function CacheSettings() { return ( diff --git a/packages/app/src/Pages/settings/Keys.tsx b/packages/app/src/Pages/settings/Keys.tsx index 97afc94a..1ffa9557 100644 --- a/packages/app/src/Pages/settings/Keys.tsx +++ b/packages/app/src/Pages/settings/Keys.tsx @@ -1,11 +1,12 @@ import "./Keys.css"; -import { FormattedMessage } from "react-intl"; + import { encodeTLV, KeyStorage, NostrPrefix } from "@snort/system"; +import { FormattedMessage } from "react-intl"; import Copy from "@/Components/Copy/Copy"; import useLogin from "@/Hooks/useLogin"; -import { hexToMnemonic } from "@/Utils/nip6"; import { hexToBech32 } from "@/Utils"; +import { hexToMnemonic } from "@/Utils/nip6"; export default function ExportKeys() { const { publicKey, privateKeyData, generatedEntropy } = useLogin(); diff --git a/packages/app/src/Pages/settings/Menu.tsx b/packages/app/src/Pages/settings/Menu.tsx index 312df03e..39d51c71 100644 --- a/packages/app/src/Pages/settings/Menu.tsx +++ b/packages/app/src/Pages/settings/Menu.tsx @@ -1,10 +1,11 @@ +import classNames from "classnames"; import { ReactNode, useCallback } from "react"; import { FormattedMessage } from "react-intl"; import { Link, useNavigate } from "react-router-dom"; + import Icon from "@/Components/Icons/Icon"; -import { LoginStore, logout } from "@/Utils/Login"; import useLogin from "@/Hooks/useLogin"; -import classNames from "classnames"; +import { LoginStore, logout } from "@/Utils/Login"; import { getCurrentSubscription } from "@/Utils/Subscription"; export type SettingsMenuItems = Array<{ diff --git a/packages/app/src/Pages/settings/Moderation.tsx b/packages/app/src/Pages/settings/Moderation.tsx index be2a0bed..b1c2578e 100644 --- a/packages/app/src/Pages/settings/Moderation.tsx +++ b/packages/app/src/Pages/settings/Moderation.tsx @@ -1,10 +1,11 @@ import { unixNowMs } from "@snort/shared"; -import useLogin from "@/Hooks/useLogin"; -import { SnortAppData, updateAppData } from "@/Utils/Login"; -import { appendDedupe } from "@/Utils"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; +import useLogin from "@/Hooks/useLogin"; +import { appendDedupe } from "@/Utils"; +import { SnortAppData, updateAppData } from "@/Utils/Login"; + export default function ModerationSettingsPage() { const login = useLogin(); const [muteWord, setMuteWord] = useState(""); diff --git a/packages/app/src/Pages/settings/Notifications.tsx b/packages/app/src/Pages/settings/Notifications.tsx index 1ecb3f9d..af23694a 100644 --- a/packages/app/src/Pages/settings/Notifications.tsx +++ b/packages/app/src/Pages/settings/Notifications.tsx @@ -1,9 +1,11 @@ -import { FormattedMessage } from "react-intl"; import { useEffect, useState } from "react"; +import { FormattedMessage } from "react-intl"; + import Icon from "@/Components/Icons/Icon"; +import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; import { subscribeToNotifications } from "@/Utils/Notifications"; -import useEventPublisher from "@/Hooks/useEventPublisher"; + import messages from "./messages"; interface StatusIndicatorProps { diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx index 04bf6f2c..79f37b9b 100644 --- a/packages/app/src/Pages/settings/Preferences.tsx +++ b/packages/app/src/Pages/settings/Preferences.tsx @@ -1,11 +1,12 @@ import "./Preferences.css"; import { FormattedMessage, useIntl } from "react-intl"; + import useLogin from "@/Hooks/useLogin"; -import { updatePreferences, UserPreferences } from "@/Utils/Login"; -import { DefaultImgProxy } from "@/Utils/Const"; -import { unwrap } from "@/Utils"; import { useLocale } from "@/IntlProvider"; +import { unwrap } from "@/Utils"; +import { DefaultImgProxy } from "@/Utils/Const"; +import { updatePreferences, UserPreferences } from "@/Utils/Login"; import messages from "./messages"; diff --git a/packages/app/src/Pages/settings/Profile.tsx b/packages/app/src/Pages/settings/Profile.tsx index df521f87..dbe6688f 100644 --- a/packages/app/src/Pages/settings/Profile.tsx +++ b/packages/app/src/Pages/settings/Profile.tsx @@ -1,22 +1,23 @@ import "./Profile.css"; -import { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; + +import { fetchNip05Pubkey,LNURL } from "@snort/shared"; import { mapEventToProfile } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; - -import useEventPublisher from "@/Hooks/useEventPublisher"; -import { openFile, debounce } from "@/Utils"; -import useFileUpload from "@/Utils/Upload"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import { UserCache } from "@/Cache"; -import useLogin from "@/Hooks/useLogin"; -import Icon from "@/Components/Icons/Icon"; -import Avatar from "@/Components/User/Avatar"; +import { useEffect, useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; + +import { UserCache } from "@/Cache"; +import AsyncButton from "@/Components/Button/AsyncButton"; import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; -import { LNURL, fetchNip05Pubkey } from "@snort/shared"; +import Icon from "@/Components/Icons/Icon"; import messages from "@/Components/messages"; +import Avatar from "@/Components/User/Avatar"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { debounce,openFile } from "@/Utils"; import { MaxAboutLength, MaxUsernameLength } from "@/Utils/Const"; +import useFileUpload from "@/Utils/Upload"; export interface ProfileSettingsProps { avatar?: boolean; diff --git a/packages/app/src/Pages/settings/Referrals.tsx b/packages/app/src/Pages/settings/Referrals.tsx index 5b3dcc05..3174f44c 100644 --- a/packages/app/src/Pages/settings/Referrals.tsx +++ b/packages/app/src/Pages/settings/Referrals.tsx @@ -1,11 +1,12 @@ +import { useEffect, useState } from "react"; +import { FormattedMessage, FormattedNumber } from "react-intl"; +import { Link } from "react-router-dom"; + import AsyncButton from "@/Components/Button/AsyncButton"; import { LeaderBadge } from "@/Components/CommunityLeaders/LeaderBadge"; import Copy from "@/Components/Copy/Copy"; import SnortApi, { RefCodeResponse } from "@/External/SnortApi"; import useEventPublisher from "@/Hooks/useEventPublisher"; -import { useEffect, useState } from "react"; -import { FormattedMessage, FormattedNumber } from "react-intl"; -import { Link } from "react-router-dom"; export function ReferralsPage() { const [refCode, setRefCode] = useState(); diff --git a/packages/app/src/Pages/settings/RelayInfo.tsx b/packages/app/src/Pages/settings/RelayInfo.tsx index d9e6ff09..5bb69aec 100644 --- a/packages/app/src/Pages/settings/RelayInfo.tsx +++ b/packages/app/src/Pages/settings/RelayInfo.tsx @@ -1,13 +1,14 @@ import { FormattedMessage } from "react-intl"; +import { useNavigate, useParams } from "react-router-dom"; + import ProfilePreview from "@/Components/User/ProfilePreview"; import useRelayState from "@/Feed/RelayState"; -import { useNavigate, useParams } from "react-router-dom"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; import { parseId, unwrap } from "@/Utils"; import { removeRelay } from "@/Utils/Login"; -import useLogin from "@/Hooks/useLogin"; import messages from "./messages"; -import useEventPublisher from "@/Hooks/useEventPublisher"; const RelayInfo = () => { const params = useParams(); diff --git a/packages/app/src/Pages/settings/Relays.tsx b/packages/app/src/Pages/settings/Relays.tsx index 547722e5..13bfd27f 100644 --- a/packages/app/src/Pages/settings/Relays.tsx +++ b/packages/app/src/Pages/settings/Relays.tsx @@ -1,17 +1,17 @@ -import { useEffect, useMemo, useState } from "react"; -import { FormattedMessage } from "react-intl"; import { unixNowMs, unwrap } from "@snort/shared"; import { EventPublisher, FullRelaySettings, RelaySettings, SystemInterface } from "@snort/system"; +import { useEffect, useMemo, useState } from "react"; +import { FormattedMessage } from "react-intl"; +import AsyncButton from "@/Components/Button/AsyncButton"; import Relay from "@/Components/Relay/Relay"; +import SnortApi, { RelayDistance } from "@/External/SnortApi"; import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; -import { setRelays } from "@/Utils/Login"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import SnortApi, { RelayDistance } from "@/External/SnortApi"; import { getCountry, getRelayName, sanitizeRelayUrl } from "@/Utils"; -import { formatShort } from "@/Utils/Number"; import { Blasters } from "@/Utils/Const"; +import { setRelays } from "@/Utils/Login"; +import { formatShort } from "@/Utils/Number"; import messages from "./messages"; diff --git a/packages/app/src/Pages/settings/Routes.tsx b/packages/app/src/Pages/settings/Routes.tsx index 6083e6b4..f9fc7a70 100644 --- a/packages/app/src/Pages/settings/Routes.tsx +++ b/packages/app/src/Pages/settings/Routes.tsx @@ -1,16 +1,18 @@ -import Menu from "@/Pages/settings/Menu"; -import Profile from "@/Pages/settings/Profile"; -import Relay from "@/Pages/settings/Relays"; -import Preferences from "@/Pages/settings/Preferences"; -import Notifications from "@/Pages/settings/Notifications"; -import RelayInfo from "@/Pages/settings/RelayInfo"; +import { Outlet } from "react-router-dom"; + import AccountsPage from "@/Pages/settings/Accounts"; +import { CacheSettings } from "@/Pages/settings/Cache"; import { ManageHandleRoutes } from "@/Pages/settings/handle"; import ExportKeys from "@/Pages/settings/Keys"; +import Menu from "@/Pages/settings/Menu"; import ModerationSettings from "@/Pages/settings/Moderation"; -import { CacheSettings } from "@/Pages/settings/Cache"; +import Notifications from "@/Pages/settings/Notifications"; +import Preferences from "@/Pages/settings/Preferences"; +import Profile from "@/Pages/settings/Profile"; import { ReferralsPage } from "@/Pages/settings/Referrals"; -import { Outlet } from "react-router-dom"; +import RelayInfo from "@/Pages/settings/RelayInfo"; +import Relay from "@/Pages/settings/Relays"; + import { ToolsPage, ToolsPages } from "./tools"; import { WalletSettingsRoutes } from "./wallet"; diff --git a/packages/app/src/Pages/settings/WalletSettings.tsx b/packages/app/src/Pages/settings/WalletSettings.tsx index 19bae4dc..8d2dfbd7 100644 --- a/packages/app/src/Pages/settings/WalletSettings.tsx +++ b/packages/app/src/Pages/settings/WalletSettings.tsx @@ -1,13 +1,14 @@ -import LndLogo from "@/assets/img/lnd-logo.png"; import { ReactNode } from "react"; import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; -import BlueWallet from "@/Components/Icons/BlueWallet"; -import NostrIcon from "@/Components/Icons/Nostrich"; -import CashuIcon from "@/Components/Icons/Cashu"; +import LndLogo from "@/assets/img/lnd-logo.png"; import AlbyIcon from "@/Components/Icons/Alby"; +import BlueWallet from "@/Components/Icons/BlueWallet"; +import CashuIcon from "@/Components/Icons/Cashu"; import Icon from "@/Components/Icons/Icon"; +import NostrIcon from "@/Components/Icons/Nostrich"; + import { getAlbyOAuth } from "./wallet/Alby"; const WalletRow = (props: { diff --git a/packages/app/src/Pages/settings/handle/LNAddress.tsx b/packages/app/src/Pages/settings/handle/LNAddress.tsx index 4759253f..6117e2c8 100644 --- a/packages/app/src/Pages/settings/handle/LNAddress.tsx +++ b/packages/app/src/Pages/settings/handle/LNAddress.tsx @@ -1,10 +1,10 @@ +import { LNURL } from "@snort/shared"; import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; -import { LNURL } from "@snort/shared"; -import { ApiHost } from "@/Utils/Const"; import AsyncButton from "@/Components/Button/AsyncButton"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import { ApiHost } from "@/Utils/Const"; import SnortServiceProvider, { ForwardType, ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; export default function LNForwardAddress({ handle }: { handle: ManageHandle }) { diff --git a/packages/app/src/Pages/settings/handle/ListHandles.tsx b/packages/app/src/Pages/settings/handle/ListHandles.tsx index 4097f476..a3b9b984 100644 --- a/packages/app/src/Pages/settings/handle/ListHandles.tsx +++ b/packages/app/src/Pages/settings/handle/ListHandles.tsx @@ -2,10 +2,10 @@ import { useEffect, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, useNavigate } from "react-router-dom"; -import { ApiHost } from "@/Utils/Const"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import SnortServiceProvider, { ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import { ApiHost } from "@/Utils/Const"; +import SnortServiceProvider, { ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; export default function ListHandles() { const navigate = useNavigate(); diff --git a/packages/app/src/Pages/settings/handle/Manage.tsx b/packages/app/src/Pages/settings/handle/Manage.tsx index 9b2cc13b..fa32c214 100644 --- a/packages/app/src/Pages/settings/handle/Manage.tsx +++ b/packages/app/src/Pages/settings/handle/Manage.tsx @@ -1,5 +1,7 @@ -import { ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; import { Navigate, useLocation } from "react-router-dom"; + +import { ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; + import LNForwardAddress from "./LNAddress"; import TransferHandle from "./TransferHandle"; diff --git a/packages/app/src/Pages/settings/handle/TransferHandle.tsx b/packages/app/src/Pages/settings/handle/TransferHandle.tsx index 1b254def..94ba164f 100644 --- a/packages/app/src/Pages/settings/handle/TransferHandle.tsx +++ b/packages/app/src/Pages/settings/handle/TransferHandle.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { useNavigate } from "react-router-dom"; -import { ApiHost } from "@/Utils/Const"; import AsyncButton from "@/Components/Button/AsyncButton"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import { ApiHost } from "@/Utils/Const"; import { ServiceError } from "@/Utils/Nip05/ServiceProvider"; import SnortServiceProvider, { ManageHandle } from "@/Utils/Nip05/SnortServiceProvider"; diff --git a/packages/app/src/Pages/settings/tools/follows-relay-health.tsx b/packages/app/src/Pages/settings/tools/follows-relay-health.tsx index 0d5fc25e..c06cf27a 100644 --- a/packages/app/src/Pages/settings/tools/follows-relay-health.tsx +++ b/packages/app/src/Pages/settings/tools/follows-relay-health.tsx @@ -1,13 +1,14 @@ -import { CollapsedSection } from "@/Components/Collapsed"; -import ProfilePreview from "@/Components/User/ProfilePreview"; -import useLogin from "@/Hooks/useLogin"; -import { getRelayName } from "@/Utils"; import { dedupe } from "@snort/shared"; import { pickTopRelays } from "@snort/system"; import { SnortContext } from "@snort/system-react"; import { ReactNode, useContext, useMemo } from "react"; import { FormattedMessage, FormattedNumber } from "react-intl"; +import { CollapsedSection } from "@/Components/Collapsed"; +import ProfilePreview from "@/Components/User/ProfilePreview"; +import useLogin from "@/Hooks/useLogin"; +import { getRelayName } from "@/Utils"; + export function FollowsRelayHealth({ withTitle, popularRelays, diff --git a/packages/app/src/Pages/settings/tools/index.tsx b/packages/app/src/Pages/settings/tools/index.tsx index 4e674ef8..448dfc80 100644 --- a/packages/app/src/Pages/settings/tools/index.tsx +++ b/packages/app/src/Pages/settings/tools/index.tsx @@ -1,8 +1,9 @@ import { FormattedMessage } from "react-intl"; import { Outlet, RouteObject } from "react-router-dom"; + import { SettingsMenuComponent, SettingsMenuItems } from "../Menu"; -import { PruneFollowList } from "./prune-follows"; import { FollowsRelayHealth } from "./follows-relay-health"; +import { PruneFollowList } from "./prune-follows"; const ToolMenuItems = [ { diff --git a/packages/app/src/Pages/settings/tools/prune-follows.tsx b/packages/app/src/Pages/settings/tools/prune-follows.tsx index 7b7de438..fc404aa8 100644 --- a/packages/app/src/Pages/settings/tools/prune-follows.tsx +++ b/packages/app/src/Pages/settings/tools/prune-follows.tsx @@ -1,15 +1,17 @@ -import { Day } from "@/Utils/Const"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import useLogin from "@/Hooks/useLogin"; import { dedupe, unixNow } from "@snort/shared"; import { RequestBuilder } from "@snort/system"; import { useMemo, useState } from "react"; import { FormattedMessage, FormattedNumber } from "react-intl"; -import { FollowsRelayHealth } from "./follows-relay-health"; + +import AsyncButton from "@/Components/Button/AsyncButton"; import ProfileImage from "@/Components/User/ProfileImage"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { Day } from "@/Utils/Const"; import { setFollows } from "@/Utils/Login"; +import { FollowsRelayHealth } from "./follows-relay-health"; + const enum PruneStage { FetchLastPostTimestamp, Done, diff --git a/packages/app/src/Pages/settings/wallet/Alby.tsx b/packages/app/src/Pages/settings/wallet/Alby.tsx index 49be2fd5..695f1ea8 100644 --- a/packages/app/src/Pages/settings/wallet/Alby.tsx +++ b/packages/app/src/Pages/settings/wallet/Alby.tsx @@ -1,6 +1,3 @@ -import PageSpinner from "@/Components/PageSpinner"; -import { WalletConfig, WalletKind, Wallets } from "@/Wallet"; -import AlbyWallet from "@/Wallet/AlbyWallet"; import { sha256 } from "@noble/hashes/sha256"; import { randomBytes } from "@noble/hashes/utils"; import { base64, base64urlnopad, hex } from "@scure/base"; @@ -9,6 +6,10 @@ import { useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import { v4 as uuid } from "uuid"; +import PageSpinner from "@/Components/PageSpinner"; +import { WalletConfig, WalletKind, Wallets } from "@/Wallet"; +import AlbyWallet from "@/Wallet/AlbyWallet"; + export default function AlbyOAuth() { const navigate = useNavigate(); const location = useLocation(); diff --git a/packages/app/src/Pages/settings/wallet/Cashu.tsx b/packages/app/src/Pages/settings/wallet/Cashu.tsx index eb66e5e9..d646a7bb 100644 --- a/packages/app/src/Pages/settings/wallet/Cashu.tsx +++ b/packages/app/src/Pages/settings/wallet/Cashu.tsx @@ -1,11 +1,11 @@ import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; import { v4 as uuid } from "uuid"; import AsyncButton from "@/Components/Button/AsyncButton"; import { unwrap } from "@/Utils"; import { WalletConfig, WalletKind, Wallets } from "@/Wallet"; -import { useNavigate } from "react-router-dom"; const ConnectCashu = () => { const navigate = useNavigate(); diff --git a/packages/app/src/Pages/settings/wallet/LNC.tsx b/packages/app/src/Pages/settings/wallet/LNC.tsx index bb94e73a..6f72871f 100644 --- a/packages/app/src/Pages/settings/wallet/LNC.tsx +++ b/packages/app/src/Pages/settings/wallet/LNC.tsx @@ -4,8 +4,8 @@ import { useNavigate } from "react-router-dom"; import { v4 as uuid } from "uuid"; import AsyncButton from "@/Components/Button/AsyncButton"; -import { LNWallet, WalletInfo, WalletKind, Wallets } from "@/Wallet"; import { unwrap } from "@/Utils"; +import { LNWallet, WalletInfo, WalletKind, Wallets } from "@/Wallet"; const ConnectLNC = () => { const { formatMessage } = useIntl(); diff --git a/packages/app/src/Pages/settings/wallet/LNDHub.tsx b/packages/app/src/Pages/settings/wallet/LNDHub.tsx index 8606cc0a..2a2734d8 100644 --- a/packages/app/src/Pages/settings/wallet/LNDHub.tsx +++ b/packages/app/src/Pages/settings/wallet/LNDHub.tsx @@ -1,12 +1,12 @@ import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; import { v4 as uuid } from "uuid"; import AsyncButton from "@/Components/Button/AsyncButton"; import { unwrap } from "@/Utils"; -import LNDHubWallet from "@/Wallet/LNDHub"; import { WalletConfig, WalletKind, Wallets } from "@/Wallet"; -import { useNavigate } from "react-router-dom"; +import LNDHubWallet from "@/Wallet/LNDHub"; const ConnectLNDHub = () => { const navigate = useNavigate(); diff --git a/packages/app/src/Pages/settings/wallet/NWC.tsx b/packages/app/src/Pages/settings/wallet/NWC.tsx index 1e9e77b4..15b88569 100644 --- a/packages/app/src/Pages/settings/wallet/NWC.tsx +++ b/packages/app/src/Pages/settings/wallet/NWC.tsx @@ -1,11 +1,11 @@ import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; +import { Link, useNavigate } from "react-router-dom"; import { v4 as uuid } from "uuid"; import AsyncButton from "@/Components/Button/AsyncButton"; import { unwrap } from "@/Utils"; import { WalletConfig, WalletKind, Wallets } from "@/Wallet"; -import { Link, useNavigate } from "react-router-dom"; import { NostrConnectWallet } from "@/Wallet/NostrWalletConnect"; const ConnectNostrWallet = () => { diff --git a/packages/app/src/Pages/settings/wallet/index.tsx b/packages/app/src/Pages/settings/wallet/index.tsx index bc5f8e6f..b1b3110f 100644 --- a/packages/app/src/Pages/settings/wallet/index.tsx +++ b/packages/app/src/Pages/settings/wallet/index.tsx @@ -1,10 +1,11 @@ import { RouteObject } from "react-router-dom"; + import WalletSettings from "../WalletSettings"; +import AlbyOAuth from "./Alby"; import ConnectCashu from "./Cashu"; import ConnectLNC from "./LNC"; import ConnectLNDHub from "./LNDHub"; import ConnectNostrWallet from "./NWC"; -import AlbyOAuth from "./Alby"; export const WalletSettingsRoutes = [ { diff --git a/packages/app/src/Pages/subscribe/ManageSubscription.tsx b/packages/app/src/Pages/subscribe/ManageSubscription.tsx index 49794710..a4ca442c 100644 --- a/packages/app/src/Pages/subscribe/ManageSubscription.tsx +++ b/packages/app/src/Pages/subscribe/ManageSubscription.tsx @@ -2,12 +2,13 @@ import { useEffect, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Link, useNavigate } from "react-router-dom"; +import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; import PageSpinner from "@/Components/PageSpinner"; -import useEventPublisher from "@/Hooks/useEventPublisher"; import SnortApi, { Subscription, SubscriptionError } from "@/External/SnortApi"; +import useEventPublisher from "@/Hooks/useEventPublisher"; + import { mapSubscriptionErrorCode } from "."; import SubscriptionCard from "./SubscriptionCard"; -import { ErrorOrOffline } from "@/Components/ErrorOrOffline"; export default function ManageSubscriptionPage() { const { publisher } = useEventPublisher(); diff --git a/packages/app/src/Pages/subscribe/RenewSub.tsx b/packages/app/src/Pages/subscribe/RenewSub.tsx index b53024c2..314b17ba 100644 --- a/packages/app/src/Pages/subscribe/RenewSub.tsx +++ b/packages/app/src/Pages/subscribe/RenewSub.tsx @@ -1,15 +1,16 @@ +import { unixNow, unwrap } from "@snort/shared"; import { useState } from "react"; import { FormattedMessage, useIntl } from "react-intl"; -import { unixNow, unwrap } from "@snort/shared"; import AsyncButton from "@/Components/Button/AsyncButton"; import SendSats from "@/Components/SendSats/SendSats"; -import useEventPublisher from "@/Hooks/useEventPublisher"; import SnortApi, { Subscription, SubscriptionError } from "@/External/SnortApi"; -import { mapPlanName, mapSubscriptionErrorCode } from "."; +import useEventPublisher from "@/Hooks/useEventPublisher"; import useLogin from "@/Hooks/useLogin"; import { mostRecentSubscription } from "@/Utils/Subscription"; +import { mapPlanName, mapSubscriptionErrorCode } from "."; + export function RenewSub({ sub: s }: { sub?: Subscription }) { const { subscriptions } = useLogin(s => ({ subscriptions: s.subscriptions })); const { publisher } = useEventPublisher(); diff --git a/packages/app/src/Pages/subscribe/SubscriptionCard.tsx b/packages/app/src/Pages/subscribe/SubscriptionCard.tsx index 2f41e8b7..192ce5ed 100644 --- a/packages/app/src/Pages/subscribe/SubscriptionCard.tsx +++ b/packages/app/src/Pages/subscribe/SubscriptionCard.tsx @@ -1,11 +1,12 @@ -import { FormattedMessage, FormattedDate, FormattedNumber } from "react-intl"; +import { FormattedDate, FormattedMessage, FormattedNumber } from "react-intl"; -import { Subscription } from "@/External/SnortApi"; -import { mapPlanName } from "."; import Icon from "@/Components/Icons/Icon"; import Nip5Service from "@/Components/Nip5Service"; -import { SnortNostrAddressService } from "@/Pages/NostrAddressPage"; import Nip05 from "@/Components/User/Nip05"; +import { Subscription } from "@/External/SnortApi"; +import { SnortNostrAddressService } from "@/Pages/NostrAddressPage"; + +import { mapPlanName } from "."; import { RenewSub } from "./RenewSub"; export default function SubscriptionCard({ sub }: { sub: Subscription }) { diff --git a/packages/app/src/Pages/subscribe/index.tsx b/packages/app/src/Pages/subscribe/index.tsx index a1066deb..2ab47cc3 100644 --- a/packages/app/src/Pages/subscribe/index.tsx +++ b/packages/app/src/Pages/subscribe/index.tsx @@ -1,18 +1,18 @@ import "./index.css"; +import classNames from "classnames"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; import { RouteObject } from "react-router-dom"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import SendSats from "@/Components/SendSats/SendSats"; +import SnortApi, { SubscriptionError, SubscriptionErrorCode } from "@/External/SnortApi"; +import useEventPublisher from "@/Hooks/useEventPublisher"; +import ManageSubscriptionPage from "@/Pages/subscribe/ManageSubscription"; +import { getRefCode } from "@/Utils"; import { formatShort } from "@/Utils/Number"; import { LockedFeatures, Plans, SubscriptionType } from "@/Utils/Subscription"; -import ManageSubscriptionPage from "@/Pages/subscribe/ManageSubscription"; -import AsyncButton from "@/Components/Button/AsyncButton"; -import useEventPublisher from "@/Hooks/useEventPublisher"; -import SnortApi, { SubscriptionError, SubscriptionErrorCode } from "@/External/SnortApi"; -import SendSats from "@/Components/SendSats/SendSats"; -import classNames from "classnames"; -import { getRefCode } from "@/Utils"; export function mapPlanName(id: number) { switch (id) { diff --git a/packages/app/src/Pages/wallet/index.tsx b/packages/app/src/Pages/wallet/index.tsx index b26ea86c..40274ce2 100644 --- a/packages/app/src/Pages/wallet/index.tsx +++ b/packages/app/src/Pages/wallet/index.tsx @@ -1,15 +1,15 @@ +import classNames from "classnames"; import { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; import { FormattedMessage, FormattedNumber, useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; -import NoteTime from "@/Components/Event/NoteTime"; -import { WalletInvoice, Sats, useWallet, LNWallet, Wallets } from "@/Wallet"; import AsyncButton from "@/Components/Button/AsyncButton"; -import { unwrap } from "@/Utils"; +import { AsyncIcon } from "@/Components/Button/AsyncIcon"; +import NoteTime from "@/Components/Event/NoteTime"; import Icon from "@/Components/Icons/Icon"; import { useRates } from "@/Hooks/useRates"; -import { AsyncIcon } from "@/Components/Button/AsyncIcon"; -import classNames from "classnames"; +import { unwrap } from "@/Utils"; +import { LNWallet, Sats, useWallet, WalletInvoice, Wallets } from "@/Wallet"; export default function WalletPage(props: { showHistory: boolean }) { const navigate = useNavigate(); diff --git a/packages/app/src/Pages/wallet/receive.tsx b/packages/app/src/Pages/wallet/receive.tsx index 8394e8e9..ee1f7b43 100644 --- a/packages/app/src/Pages/wallet/receive.tsx +++ b/packages/app/src/Pages/wallet/receive.tsx @@ -1,9 +1,10 @@ +import { useState } from "react"; +import { FormattedMessage, useIntl } from "react-intl"; + import AsyncButton from "@/Components/Button/AsyncButton"; import Copy from "@/Components/Copy/Copy"; import QrCode from "@/Components/QrCode"; import { useWallet } from "@/Wallet"; -import { useState } from "react"; -import { FormattedMessage, useIntl } from "react-intl"; export function WalletReceivePage() { const wallets = useWallet(); diff --git a/packages/app/src/Pages/wallet/send.tsx b/packages/app/src/Pages/wallet/send.tsx index 6db6dcd5..8fd6e421 100644 --- a/packages/app/src/Pages/wallet/send.tsx +++ b/packages/app/src/Pages/wallet/send.tsx @@ -1,10 +1,11 @@ -import AsyncButton from "@/Components/Button/AsyncButton"; -import Icon from "@/Components/Icons/Icon"; -import { WalletInvoice, useWallet } from "@/Wallet"; import { LNURL } from "@snort/shared"; import { useEffect, useState } from "react"; import { FormattedMessage, FormattedNumber, useIntl } from "react-intl"; +import AsyncButton from "@/Components/Button/AsyncButton"; +import Icon from "@/Components/Icons/Icon"; +import { useWallet,WalletInvoice } from "@/Wallet"; + export function WalletSendPage() { const wallets = useWallet(); const { formatMessage } = useIntl(); diff --git a/packages/app/src/State/NoteCreator.ts b/packages/app/src/State/NoteCreator.ts index dd0909a1..e19c7e5c 100644 --- a/packages/app/src/State/NoteCreator.ts +++ b/packages/app/src/State/NoteCreator.ts @@ -1,8 +1,9 @@ import { ExternalStore } from "@snort/shared"; import { NostrEvent, TaggedNostrEvent } from "@snort/system"; -import { ZapTarget } from "@/Utils/Zapper"; import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector"; +import { ZapTarget } from "@/Utils/Zapper"; + interface NoteCreatorDataSnapshot { show: boolean; note: string; diff --git a/packages/app/src/Utils/Login/Functions.ts b/packages/app/src/Utils/Login/Functions.ts index 5b285560..e5092b76 100644 --- a/packages/app/src/Utils/Login/Functions.ts +++ b/packages/app/src/Utils/Login/Functions.ts @@ -1,25 +1,26 @@ +import * as utils from "@noble/curves/abstract/utils"; +import * as secp from "@noble/curves/secp256k1"; +import { unixNowMs } from "@snort/shared"; import { - RelaySettings, EventPublisher, - Nip46Signer, - Nip7Signer, - PrivateKeySigner, KeyStorage, + Nip7Signer, + Nip46Signer, + PrivateKeySigner, + RelaySettings, SystemInterface, UserMetadata, } from "@snort/system"; -import { unixNowMs } from "@snort/shared"; -import * as secp from "@noble/curves/secp256k1"; -import * as utils from "@noble/curves/abstract/utils"; -import { Blasters } from "@/Utils/Const"; -import { LoginStore, UserPreferences, LoginSession, LoginSessionType, SnortAppData, Newest } from "@/Utils/Login/index"; -import { generateBip39Entropy, entropyToPrivateKey } from "@/Utils/nip6"; -import { bech32ToHex, dedupeById, deleteRefCode, getCountry, sanitizeRelayUrl, unwrap } from "@/Utils"; -import { SubscriptionEvent } from "@/Utils/Subscription"; import { Chats, FollowsFeed, GiftsCache, Notifications } from "@/Cache"; -import { Nip7OsSigner } from "./Nip7OsSigner"; import SnortApi from "@/External/SnortApi"; +import { bech32ToHex, dedupeById, deleteRefCode, getCountry, sanitizeRelayUrl, unwrap } from "@/Utils"; +import { Blasters } from "@/Utils/Const"; +import { LoginSession, LoginSessionType, LoginStore, Newest,SnortAppData, UserPreferences } from "@/Utils/Login/index"; +import { entropyToPrivateKey,generateBip39Entropy } from "@/Utils/nip6"; +import { SubscriptionEvent } from "@/Utils/Subscription"; + +import { Nip7OsSigner } from "./Nip7OsSigner"; export function setRelays(state: LoginSession, relays: Record, createdAt: number) { if (SINGLE_RELAY) { diff --git a/packages/app/src/Utils/Login/LoginSession.ts b/packages/app/src/Utils/Login/LoginSession.ts index 6b0997ba..515560b1 100644 --- a/packages/app/src/Utils/Login/LoginSession.ts +++ b/packages/app/src/Utils/Login/LoginSession.ts @@ -1,7 +1,8 @@ -import { HexKey, RelaySettings, u256, KeyStorage } from "@snort/system"; +import { HexKey, KeyStorage,RelaySettings, u256 } from "@snort/system"; + +import { DisplayAs } from "@/Components/Feed/DisplayAsSelector"; import { UserPreferences } from "@/Utils/Login/index"; import { SubscriptionEvent } from "@/Utils/Subscription"; -import { DisplayAs } from "@/Components/Feed/DisplayAsSelector"; /** * Stores latest copy of an item diff --git a/packages/app/src/Utils/Login/MultiAccountStore.ts b/packages/app/src/Utils/Login/MultiAccountStore.ts index dcea7957..089d2987 100644 --- a/packages/app/src/Utils/Login/MultiAccountStore.ts +++ b/packages/app/src/Utils/Login/MultiAccountStore.ts @@ -1,11 +1,11 @@ -import * as secp from "@noble/curves/secp256k1"; import * as utils from "@noble/curves/abstract/utils"; +import * as secp from "@noble/curves/secp256k1"; +import { deepClone, ExternalStore,unwrap } from "@snort/shared"; +import { EventPublisher, HexKey, KeyStorage, NotEncrypted, RelaySettings, socialGraphInstance } from "@snort/system"; import { v4 as uuid } from "uuid"; -import { HexKey, RelaySettings, EventPublisher, KeyStorage, NotEncrypted, socialGraphInstance } from "@snort/system"; -import { deepClone, unwrap, ExternalStore } from "@snort/shared"; +import { createPublisher,LoginSession, LoginSessionType } from "@/Utils/Login/index"; -import { LoginSession, LoginSessionType, createPublisher } from "@/Utils/Login/index"; import { DefaultPreferences, UserPreferences } from "./Preferences"; const AccountStoreKey = "sessions"; diff --git a/packages/app/src/Utils/Login/Nip7OsSigner.ts b/packages/app/src/Utils/Login/Nip7OsSigner.ts index cfaae073..d1d4f28f 100644 --- a/packages/app/src/Utils/Login/Nip7OsSigner.ts +++ b/packages/app/src/Utils/Login/Nip7OsSigner.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { EventSigner, NostrEvent } from "@snort/system"; + import { Nip7os } from "@/Utils/Login/index"; export class Nip7OsSigner implements EventSigner { diff --git a/packages/app/src/Utils/Login/Preferences.ts b/packages/app/src/Utils/Login/Preferences.ts index 7e8d5d1f..ff765e0e 100644 --- a/packages/app/src/Utils/Login/Preferences.ts +++ b/packages/app/src/Utils/Login/Preferences.ts @@ -1,5 +1,5 @@ -import { DefaultImgProxy } from "@/Utils/Const"; import { ImgProxySettings } from "@/Hooks/useImgProxy"; +import { DefaultImgProxy } from "@/Utils/Const"; export interface UserPreferences { /** diff --git a/packages/app/src/Utils/Login/index.ts b/packages/app/src/Utils/Login/index.ts index bf0e4f8c..0abdfae3 100644 --- a/packages/app/src/Utils/Login/index.ts +++ b/packages/app/src/Utils/Login/index.ts @@ -16,6 +16,6 @@ declare global { } } -export * from "./Preferences"; -export * from "./LoginSession"; export * from "./Functions"; +export * from "./LoginSession"; +export * from "./Preferences"; diff --git a/packages/app/src/Utils/Nip05/SnortServiceProvider.ts b/packages/app/src/Utils/Nip05/SnortServiceProvider.ts index 3c928666..662642cf 100644 --- a/packages/app/src/Utils/Nip05/SnortServiceProvider.ts +++ b/packages/app/src/Utils/Nip05/SnortServiceProvider.ts @@ -1,4 +1,5 @@ import { EventKind, EventPublisher } from "@snort/system"; + import { ServiceError, ServiceProvider } from "./ServiceProvider"; export interface ManageHandle { diff --git a/packages/app/src/Utils/Notifications.ts b/packages/app/src/Utils/Notifications.ts index 352facf7..ac0600d7 100644 --- a/packages/app/src/Utils/Notifications.ts +++ b/packages/app/src/Utils/Notifications.ts @@ -1,11 +1,12 @@ -import { TaggedNostrEvent, EventKind, MetadataCache, EventPublisher } from "@snort/system"; -import { MentionRegex } from "@/Utils/Const"; -import { defaultAvatar, tagFilterOfTextRepost, getDisplayName } from "@/Utils/index"; -import { UserCache } from "@/Cache"; -import { LoginSession } from "@/Utils/Login"; -import { removeUndefined, unwrap } from "@snort/shared"; -import SnortApi from "@/External/SnortApi"; import { base64 } from "@scure/base"; +import { removeUndefined, unwrap } from "@snort/shared"; +import { EventKind, EventPublisher,MetadataCache, TaggedNostrEvent } from "@snort/system"; + +import { UserCache } from "@/Cache"; +import SnortApi from "@/External/SnortApi"; +import { MentionRegex } from "@/Utils/Const"; +import { defaultAvatar, getDisplayName,tagFilterOfTextRepost } from "@/Utils/index"; +import { LoginSession } from "@/Utils/Login"; export interface NotificationRequest { title: string; diff --git a/packages/app/src/Utils/Upload/Nip96.ts b/packages/app/src/Utils/Upload/Nip96.ts index e419bf4b..8f919720 100644 --- a/packages/app/src/Utils/Upload/Nip96.ts +++ b/packages/app/src/Utils/Upload/Nip96.ts @@ -1,7 +1,7 @@ import { base64 } from "@scure/base"; import { throwIfOffline } from "@snort/shared"; -import { EventPublisher, EventKind } from "@snort/system"; -import { UploadResult, Uploader } from "Upload"; +import { EventKind,EventPublisher } from "@snort/system"; +import { Uploader,UploadResult } from "Upload"; export class Nip96Uploader implements Uploader { constructor( diff --git a/packages/app/src/Utils/Upload/NostrBuild.ts b/packages/app/src/Utils/Upload/NostrBuild.ts index 0a872493..e62d0ebc 100644 --- a/packages/app/src/Utils/Upload/NostrBuild.ts +++ b/packages/app/src/Utils/Upload/NostrBuild.ts @@ -1,6 +1,7 @@ import { base64 } from "@scure/base"; import { throwIfOffline } from "@snort/shared"; import { EventKind, EventPublisher } from "@snort/system"; + import { UploadResult } from "@/Utils/Upload/index"; export default async function NostrBuild(file: File | Blob, publisher?: EventPublisher): Promise { diff --git a/packages/app/src/Utils/Upload/NostrImg.ts b/packages/app/src/Utils/Upload/NostrImg.ts index 8e87688f..f73e600e 100644 --- a/packages/app/src/Utils/Upload/NostrImg.ts +++ b/packages/app/src/Utils/Upload/NostrImg.ts @@ -1,4 +1,5 @@ import { throwIfOffline } from "@snort/shared"; + import { UploadResult } from "@/Utils/Upload/index"; export default async function NostrImg(file: File | Blob): Promise { diff --git a/packages/app/src/Utils/Upload/VoidCat.ts b/packages/app/src/Utils/Upload/VoidCat.ts index 2dbee1dd..cb563292 100644 --- a/packages/app/src/Utils/Upload/VoidCat.ts +++ b/packages/app/src/Utils/Upload/VoidCat.ts @@ -1,10 +1,10 @@ +import { base64 } from "@scure/base"; +import { throwIfOffline } from "@snort/shared"; import { EventKind, EventPublisher } from "@snort/system"; import { UploadState, VoidApi } from "@void-cat/api"; import { FileExtensionRegex } from "@/Utils/Const"; import { UploadResult } from "@/Utils/Upload/index"; -import { base64 } from "@scure/base"; -import { throwIfOffline } from "@snort/shared"; /** * Upload file to void.cat diff --git a/packages/app/src/Utils/Upload/index.ts b/packages/app/src/Utils/Upload/index.ts index f6a683c2..4810ff99 100644 --- a/packages/app/src/Utils/Upload/index.ts +++ b/packages/app/src/Utils/Upload/index.ts @@ -1,14 +1,15 @@ -import { useState } from "react"; -import useLogin from "@/Hooks/useLogin"; import { NostrEvent } from "@snort/system"; +import { useState } from "react"; import { v4 as uuid } from "uuid"; -import NostrBuild from "@/Utils/Upload/NostrBuild"; -import VoidCat from "@/Utils/Upload/VoidCat"; -import NostrImg from "@/Utils/Upload/NostrImg"; -import { KieranPubKey } from "@/Utils/Const"; -import { bech32ToHex, unwrap } from "@/Utils"; import useEventPublisher from "@/Hooks/useEventPublisher"; +import useLogin from "@/Hooks/useLogin"; +import { bech32ToHex, unwrap } from "@/Utils"; +import { KieranPubKey } from "@/Utils/Const"; +import NostrBuild from "@/Utils/Upload/NostrBuild"; +import NostrImg from "@/Utils/Upload/NostrImg"; +import VoidCat from "@/Utils/Upload/VoidCat"; + import { Nip96Uploader } from "./Nip96"; export interface UploadResult { diff --git a/packages/app/src/Utils/ZapPoolController.ts b/packages/app/src/Utils/ZapPoolController.ts index 9827a74a..253baabc 100644 --- a/packages/app/src/Utils/ZapPoolController.ts +++ b/packages/app/src/Utils/ZapPoolController.ts @@ -1,9 +1,10 @@ +import { ExternalStore, LNURL, unixNow } from "@snort/shared"; + import { UserCache } from "@/Cache"; -import { LNURL, ExternalStore, unixNow } from "@snort/shared"; import { Toastore } from "@/Components/Toaster/Toaster"; -import { LNWallet, WalletInvoiceState, Wallets } from "@/Wallet"; -import { bech32ToHex, getDisplayName, trackEvent } from "@/Utils/index"; import { SnortPubKey } from "@/Utils/Const"; +import { bech32ToHex, getDisplayName, trackEvent } from "@/Utils/index"; +import { LNWallet, WalletInvoiceState, Wallets } from "@/Wallet"; export enum ZapPoolRecipientType { Generic = 0, diff --git a/packages/app/src/Utils/Zapper.ts b/packages/app/src/Utils/Zapper.ts index 2ef5299c..b5322797 100644 --- a/packages/app/src/Utils/Zapper.ts +++ b/packages/app/src/Utils/Zapper.ts @@ -1,5 +1,6 @@ -import { LNURL, isHex } from "@snort/shared"; +import { isHex,LNURL } from "@snort/shared"; import { EventPublisher, NostrEvent, NostrLink, SystemInterface } from "@snort/system"; + import { generateRandomKey } from "@/Utils/Login"; import { LNWallet, WalletInvoiceState } from "@/Wallet"; diff --git a/packages/app/src/Utils/index.ts b/packages/app/src/Utils/index.ts index ff25f6af..4736c812 100644 --- a/packages/app/src/Utils/index.ts +++ b/packages/app/src/Utils/index.ts @@ -1,26 +1,28 @@ -import TZ from "../tz.json"; -import Nostrich from "@/assets/img/nostrich.webp"; -import * as secp from "@noble/curves/secp256k1"; import * as utils from "@noble/curves/abstract/utils"; -import { sha256 as hash } from "@noble/hashes/sha256"; +import * as secp from "@noble/curves/secp256k1"; import { hmac } from "@noble/hashes/hmac"; +import { sha256 as hash } from "@noble/hashes/sha256"; import { bytesToHex } from "@noble/hashes/utils"; -import { bech32, base32hex } from "@scure/base"; +import { base32hex,bech32 } from "@scure/base"; +import { isHex, isOffline } from "@snort/shared"; import { + encodeTLV, + EventKind, HexKey, + MetadataCache, + NostrEvent, + NostrLink, + NostrPrefix, TaggedNostrEvent, u256, - EventKind, - encodeTLV, - NostrPrefix, - NostrEvent, - MetadataCache, - NostrLink, UserMetadata, } from "@snort/system"; -import { isHex, isOffline } from "@snort/shared"; -import { Birthday, Day } from "@/Utils/Const"; + +import Nostrich from "@/assets/img/nostrich.webp"; import AnimalName from "@/Components/User/AnimalName"; +import { Birthday, Day } from "@/Utils/Const"; + +import TZ from "../tz.json"; export const sha256 = (str: string | Uint8Array): u256 => { return utils.bytesToHex(hash(str)); diff --git a/packages/app/src/Utils/nip6.ts b/packages/app/src/Utils/nip6.ts index ed8cfc71..eed835c9 100644 --- a/packages/app/src/Utils/nip6.ts +++ b/packages/app/src/Utils/nip6.ts @@ -1,7 +1,7 @@ import * as utils from "@noble/curves/abstract/utils"; +import { HDKey } from "@scure/bip32"; import * as bip39 from "@scure/bip39"; import { wordlist } from "@scure/bip39/wordlists/english"; -import { HDKey } from "@scure/bip32"; import { DerivationPath } from "@/Utils/Const"; diff --git a/packages/app/src/Utils/wasm.ts b/packages/app/src/Utils/wasm.ts index 9ba26c56..97d30f60 100644 --- a/packages/app/src/Utils/wasm.ts +++ b/packages/app/src/Utils/wasm.ts @@ -1,18 +1,19 @@ +import { FlatReqFilter, NostrEvent, Optimizer, PowMiner, PowWorker, ReqFilter } from "@snort/system"; +import PowWorkerURL from "@snort/system/src/pow-worker.ts?worker&url"; + +import { unwrap } from "@/Utils/index"; + import { compress, + default as wasmInit, expand_filter, flat_merge, get_diff, pow, schnorr_verify_event, - default as wasmInit, } from "../../../system-wasm/pkg/system_wasm"; import WasmPath from "../../../system-wasm/pkg/system_wasm_bg.wasm"; -import { FlatReqFilter, NostrEvent, Optimizer, PowMiner, PowWorker, ReqFilter } from "@snort/system"; -import PowWorkerURL from "@snort/system/src/pow-worker.ts?worker&url"; -import { unwrap } from "@/Utils/index"; - export const WasmOptimizer = { expandFilter: (f: ReqFilter) => { return expand_filter(f) as Array; diff --git a/packages/app/src/Wallet/AlbyWallet.ts b/packages/app/src/Wallet/AlbyWallet.ts index 7711d1ad..d086f7d5 100644 --- a/packages/app/src/Wallet/AlbyWallet.ts +++ b/packages/app/src/Wallet/AlbyWallet.ts @@ -1,15 +1,17 @@ +import { unixNow, unwrap } from "@snort/shared"; + import { OAuthToken } from "@/Pages/settings/wallet/Alby"; + import { InvoiceRequest, LNWallet, + prToWalletInvoice, WalletError, WalletErrorCode, WalletInfo, WalletInvoice, WalletInvoiceState, - prToWalletInvoice, } from "."; -import { unixNow, unwrap } from "@snort/shared"; export default class AlbyWallet implements LNWallet { #token: OAuthToken; diff --git a/packages/app/src/Wallet/Cashu.ts b/packages/app/src/Wallet/Cashu.ts index 1e57a99c..e2f39129 100644 --- a/packages/app/src/Wallet/Cashu.ts +++ b/packages/app/src/Wallet/Cashu.ts @@ -1,6 +1,7 @@ -import { InvoiceRequest, LNWallet, WalletInfo, WalletInvoice } from "@/Wallet"; import { CashuMint, Proof } from "@cashu/cashu-ts"; +import { InvoiceRequest, LNWallet, WalletInfo, WalletInvoice } from "@/Wallet"; + export type CashuWalletConfig = { url: string; keys: Record; diff --git a/packages/app/src/Wallet/LNCWallet.ts b/packages/app/src/Wallet/LNCWallet.ts index 4f2cff66..c5b83a01 100644 --- a/packages/app/src/Wallet/LNCWallet.ts +++ b/packages/app/src/Wallet/LNCWallet.ts @@ -1,4 +1,6 @@ import LNC from "@lightninglabs/lnc-web"; +import debug from "debug"; + import { unwrap } from "@/Utils"; import { InvoiceRequest, @@ -11,7 +13,6 @@ import { WalletInvoice, WalletInvoiceState, } from "@/Wallet"; -import debug from "debug"; enum Payment_PaymentStatus { UNKNOWN = "UNKNOWN", diff --git a/packages/app/src/Wallet/LNDHub.ts b/packages/app/src/Wallet/LNDHub.ts index d15ac986..c89715c9 100644 --- a/packages/app/src/Wallet/LNDHub.ts +++ b/packages/app/src/Wallet/LNDHub.ts @@ -1,4 +1,5 @@ import { throwIfOffline } from "@snort/shared"; + import { InvoiceRequest, LNWallet, diff --git a/packages/app/src/Wallet/NostrWalletConnect.ts b/packages/app/src/Wallet/NostrWalletConnect.ts index 74a186da..f133cd4c 100644 --- a/packages/app/src/Wallet/NostrWalletConnect.ts +++ b/packages/app/src/Wallet/NostrWalletConnect.ts @@ -1,4 +1,7 @@ -import { Connection, EventKind, NostrEvent, EventBuilder, PrivateKeySigner } from "@snort/system"; +import { dedupe } from "@snort/shared"; +import { Connection, EventBuilder, EventKind, NostrEvent, PrivateKeySigner } from "@snort/system"; +import debug from "debug"; + import { InvoiceRequest, LNWallet, @@ -8,8 +11,6 @@ import { WalletInvoice, WalletInvoiceState, } from "@/Wallet"; -import debug from "debug"; -import { dedupe } from "@snort/shared"; interface WalletConnectConfig { relayUrl: string; diff --git a/packages/app/src/Wallet/WebLN.ts b/packages/app/src/Wallet/WebLN.ts index 6902db5f..17a741da 100644 --- a/packages/app/src/Wallet/WebLN.ts +++ b/packages/app/src/Wallet/WebLN.ts @@ -1,3 +1,5 @@ +import { barrierQueue, processWorkQueue, unwrap, WorkQueueItem } from "@snort/shared"; + import { InvoiceRequest, LNWallet, @@ -12,7 +14,6 @@ import { WalletKind, WalletStore, } from "@/Wallet"; -import { barrierQueue, processWorkQueue, unwrap, WorkQueueItem } from "@snort/shared"; const WebLNQueue: Array = []; processWorkQueue(WebLNQueue); diff --git a/packages/app/src/Wallet/index.ts b/packages/app/src/Wallet/index.ts index 42e4c742..f56467a6 100644 --- a/packages/app/src/Wallet/index.ts +++ b/packages/app/src/Wallet/index.ts @@ -1,11 +1,12 @@ +import { decodeInvoice,ExternalStore } from "@snort/shared"; import { useEffect, useSyncExternalStore } from "react"; -import { ExternalStore, decodeInvoice } from "@snort/shared"; import { unwrap } from "@/Utils"; + +import AlbyWallet from "./AlbyWallet"; import LNDHubWallet from "./LNDHub"; import { NostrConnectWallet } from "./NostrWalletConnect"; import { WebLNWallet } from "./WebLN"; -import AlbyWallet from "./AlbyWallet"; export enum WalletKind { LNDHub = 1, diff --git a/packages/app/src/benchmarks.ts b/packages/app/src/benchmarks.ts index aba661d1..c769fda3 100644 --- a/packages/app/src/benchmarks.ts +++ b/packages/app/src/benchmarks.ts @@ -1,6 +1,6 @@ import { bytesToHex } from "@noble/hashes/utils"; import { DefaultQueryOptimizer, EventExt, FlatReqFilter, PowMiner, QueryOptimizer, ReqFilter } from "@snort/system"; -import { compress, expand_filter, flat_merge, get_diff, pow, default as wasmInit } from "@snort/system-wasm"; +import { compress, default as wasmInit,expand_filter, flat_merge, get_diff, pow } from "@snort/system-wasm"; import WasmPath from "@snort/system-wasm/pkg/system_wasm_bg.wasm"; const WasmQueryOptimizer = { diff --git a/packages/app/src/chat/index.ts b/packages/app/src/chat/index.ts index 4895bf8c..25eca443 100644 --- a/packages/app/src/chat/index.ts +++ b/packages/app/src/chat/index.ts @@ -1,27 +1,29 @@ -import { useSyncExternalStore } from "react"; -import { Nip4ChatSystem } from "./nip4"; +import { unixNow,unwrap } from "@snort/shared"; import { + encodeTLVEntries, EventKind, EventPublisher, NostrEvent, NostrPrefix, RequestBuilder, SystemInterface, + TaggedNostrEvent, TLVEntry, TLVEntryType, - TaggedNostrEvent, UserMetadata, - encodeTLVEntries, } from "@snort/system"; -import { unwrap, unixNow } from "@snort/shared"; +import { useSyncExternalStore } from "react"; + import { Chats, GiftsCache } from "@/Cache"; -import { findTag } from "@/Utils"; -import { Nip29ChatSystem } from "./nip29"; -import useModeration from "@/Hooks/useModeration"; import useLogin from "@/Hooks/useLogin"; -import { Nip24ChatSystem } from "./nip24"; +import useModeration from "@/Hooks/useModeration"; +import { findTag } from "@/Utils"; import { LoginSession } from "@/Utils/Login"; + +import { Nip4ChatSystem } from "./nip4"; +import { Nip24ChatSystem } from "./nip24"; import { Nip28ChatSystem } from "./nip28"; +import { Nip29ChatSystem } from "./nip29"; export enum ChatType { DirectMessage = 1, diff --git a/packages/app/src/chat/nip24.ts b/packages/app/src/chat/nip24.ts index 651922c9..86071af6 100644 --- a/packages/app/src/chat/nip24.ts +++ b/packages/app/src/chat/nip24.ts @@ -1,9 +1,9 @@ -import { ExternalStore, dedupe } from "@snort/shared"; -import { EventKind, NostrPrefix, encodeTLVEntries, TLVEntryType, TLVEntry, decodeTLV, NostrEvent } from "@snort/system"; -import { GiftWrapCache } from "@/Cache/GiftWrapCache"; -import { UnwrappedGift } from "@/Db"; -import { Chat, ChatSystem, ChatType, lastReadInChat } from "@/chat"; +import { dedupe,ExternalStore } from "@snort/shared"; +import { decodeTLV, encodeTLVEntries, EventKind, NostrEvent,NostrPrefix, TLVEntry, TLVEntryType } from "@snort/system"; +import { GiftWrapCache } from "@/Cache/GiftWrapCache"; +import { Chat, ChatSystem, ChatType, lastReadInChat } from "@/chat"; +import { UnwrappedGift } from "@/Db"; import { GetPowWorker } from "@/Utils/wasm"; export class Nip24ChatSystem extends ExternalStore> implements ChatSystem { diff --git a/packages/app/src/chat/nip28.ts b/packages/app/src/chat/nip28.ts index e47c37f3..d0290547 100644 --- a/packages/app/src/chat/nip28.ts +++ b/packages/app/src/chat/nip28.ts @@ -1,21 +1,21 @@ -import debug from "debug"; import { ExternalStore, FeedCache, unwrap } from "@snort/shared"; import { + decodeTLV, + encodeTLVEntries, EventKind, NostrEvent, NostrPrefix, RequestBuilder, SystemInterface, - TLVEntryType, TaggedNostrEvent, + TLVEntryType, UserMetadata, - decodeTLV, - encodeTLVEntries, } from "@snort/system"; +import debug from "debug"; -import { LoginSession } from "@/Utils/Login"; -import { findTag } from "@/Utils"; import { Chat, ChatParticipant, ChatSystem, ChatType, lastReadInChat } from "@/chat"; +import { findTag } from "@/Utils"; +import { LoginSession } from "@/Utils/Login"; export class Nip28ChatSystem extends ExternalStore> implements ChatSystem { #cache: FeedCache; diff --git a/packages/app/src/chat/nip29.ts b/packages/app/src/chat/nip29.ts index a2b90fd5..d73b977c 100644 --- a/packages/app/src/chat/nip29.ts +++ b/packages/app/src/chat/nip29.ts @@ -1,7 +1,8 @@ -import { ExternalStore, FeedCache, dedupe, removeUndefined } from "@snort/shared"; -import { RequestBuilder, NostrEvent, EventKind, SystemInterface, TaggedNostrEvent } from "@snort/system"; -import { LoginSession } from "@/Utils/Login"; +import { dedupe, ExternalStore, FeedCache, removeUndefined } from "@snort/shared"; +import { EventKind, NostrEvent, RequestBuilder, SystemInterface, TaggedNostrEvent } from "@snort/system"; + import { Chat, ChatSystem, ChatType, lastReadInChat } from "@/chat"; +import { LoginSession } from "@/Utils/Login"; export class Nip29ChatSystem extends ExternalStore> implements ChatSystem { readonly #cache: FeedCache; diff --git a/packages/app/src/chat/nip4.ts b/packages/app/src/chat/nip4.ts index 4087d0ee..eba2c72c 100644 --- a/packages/app/src/chat/nip4.ts +++ b/packages/app/src/chat/nip4.ts @@ -1,19 +1,20 @@ import { ExternalStore, FeedCache } from "@snort/shared"; import { + decodeTLV, + encodeTLVEntries, EventKind, NostrEvent, NostrPrefix, RequestBuilder, SystemInterface, - TLVEntryType, - encodeTLVEntries, TaggedNostrEvent, - decodeTLV, + TLVEntryType, } from "@snort/system"; -import { LoginSession } from "@/Utils/Login"; -import { Chat, ChatSystem, ChatType, inChatWith, lastReadInChat } from "@/chat"; import { debug } from "debug"; +import { Chat, ChatSystem, ChatType, inChatWith, lastReadInChat } from "@/chat"; +import { LoginSession } from "@/Utils/Login"; + export class Nip4ChatSystem extends ExternalStore> implements ChatSystem { #cache: FeedCache; #log = debug("NIP-04"); diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index 21fb090a..fd7cae06 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -2,47 +2,48 @@ import "./index.css"; import "@szhsin/react-menu/dist/index.css"; import "@/assets/fonts/inter.css"; +import { encodeTLVEntries } from "@snort/system"; +import { SnortContext } from "@snort/system-react"; import { StrictMode } from "react"; import * as ReactDOM from "react-dom/client"; import { createBrowserRouter, RouteObject, RouterProvider } from "react-router-dom"; -import { encodeTLVEntries } from "@snort/system"; -import { SnortContext } from "@snort/system-react"; -import * as serviceWorkerRegistration from "@/serviceWorkerRegistration"; +import { preload } from "@/Cache"; +import { ThreadRoute } from "@/Components/Event/Thread"; +import { db } from "@/Db"; +import { updateRelayConnections } from "@/Hooks/useLoginRelays"; import { IntlProvider } from "@/IntlProvider"; -import { getCountry, storeRefCode, unwrap } from "@/Utils"; +import { AboutPage } from "@/Pages/About"; +import { SnortDeckLayout } from "@/Pages/DeckLayout"; +import DonatePage from "@/Pages/DonatePage"; +import ErrorPage from "@/Pages/ErrorPage"; +import FreeNostrAddressPage from "@/Pages/FreeNostrAddressPage"; +import HelpPage from "@/Pages/HelpPage"; import Layout from "@/Pages/Layout"; +import { ListFeedPage } from "@/Pages/ListFeedPage"; +import MessagesPage from "@/Pages/Messages/MessagesPage"; +import NetworkGraph from "@/Pages/NetworkGraph"; +import NostrAddressPage from "@/Pages/NostrAddressPage"; +import NostrLinkHandler from "@/Pages/NostrLinkHandler"; +import NotificationsPage from "@/Pages/Notifications/Notifications"; +import { OnboardingRoutes } from "@/Pages/onboarding"; import ProfilePage from "@/Pages/Profile/ProfilePage"; import { RootRoutes, RootTabRoutes } from "@/Pages/Root"; -import NotificationsPage from "@/Pages/Notifications/Notifications"; -import SettingsRoutes from "@/Pages/settings/Routes"; -import ErrorPage from "@/Pages/ErrorPage"; -import NostrAddressPage from "@/Pages/NostrAddressPage"; -import MessagesPage from "@/Pages/Messages/MessagesPage"; -import DonatePage from "@/Pages/DonatePage"; import SearchPage from "@/Pages/SearchPage"; -import HelpPage from "@/Pages/HelpPage"; -import NostrLinkHandler from "@/Pages/NostrLinkHandler"; -import { ThreadRoute } from "@/Components/Event/Thread"; +import SettingsRoutes from "@/Pages/settings/Routes"; import { SubscribeRoutes } from "@/Pages/subscribe"; import ZapPoolPage from "@/Pages/ZapPool"; -import { db } from "@/Db"; -import { preload } from "@/Cache"; -import { LoginStore } from "@/Utils/Login"; -import { SnortDeckLayout } from "@/Pages/DeckLayout"; -import FreeNostrAddressPage from "@/Pages/FreeNostrAddressPage"; -import { ListFeedPage } from "@/Pages/ListFeedPage"; -import { updateRelayConnections } from "@/Hooks/useLoginRelays"; -import { AboutPage } from "@/Pages/About"; -import { OnboardingRoutes } from "@/Pages/onboarding"; -import { setupWebLNWalletConfig } from "@/Wallet/WebLN"; -import { Wallets } from "@/Wallet"; -import NetworkGraph from "@/Pages/NetworkGraph"; -import WalletPage from "./Pages/wallet"; -import { hasWasm, wasmInit, WasmPath } from "@/Utils/wasm"; +import * as serviceWorkerRegistration from "@/serviceWorkerRegistration"; import { System } from "@/system"; -import { WalletSendPage } from "./Pages/wallet/send"; +import { getCountry, storeRefCode, unwrap } from "@/Utils"; +import { LoginStore } from "@/Utils/Login"; +import { hasWasm, wasmInit, WasmPath } from "@/Utils/wasm"; +import { Wallets } from "@/Wallet"; +import { setupWebLNWalletConfig } from "@/Wallet/WebLN"; + +import WalletPage from "./Pages/wallet"; import { WalletReceivePage } from "./Pages/wallet/receive"; +import { WalletSendPage } from "./Pages/wallet/send"; declare global { interface Window { diff --git a/packages/app/src/service-worker.ts b/packages/app/src/service-worker.ts index 07ac53fb..455c4c2e 100644 --- a/packages/app/src/service-worker.ts +++ b/packages/app/src/service-worker.ts @@ -3,14 +3,15 @@ declare const self: ServiceWorkerGlobalScope & { __WB_MANIFEST: (string | PrecacheEntry)[]; }; -import { NostrLink, NostrPrefix, TLVEntryType, encodeTLVEntries, tryParseNostrLink } from "@snort/system"; -import { formatShort } from "@/Utils/Number"; -import { defaultAvatar, hexToBech32 } from "@/Utils"; +import { encodeTLVEntries, NostrLink, NostrPrefix, TLVEntryType, tryParseNostrLink } from "@snort/system"; import { clientsClaim } from "workbox-core"; +import { ExpirationPlugin } from "workbox-expiration"; +import { precacheAndRoute,PrecacheEntry } from "workbox-precaching"; import { registerRoute } from "workbox-routing"; import { CacheFirst, StaleWhileRevalidate } from "workbox-strategies"; -import { PrecacheEntry, precacheAndRoute } from "workbox-precaching"; -import { ExpirationPlugin } from "workbox-expiration"; + +import { defaultAvatar, hexToBech32 } from "@/Utils"; +import { formatShort } from "@/Utils/Number"; precacheAndRoute(self.__WB_MANIFEST); clientsClaim(); diff --git a/packages/app/src/setupTests.ts b/packages/app/src/setupTests.ts index 4930f245..9229be68 100644 --- a/packages/app/src/setupTests.ts +++ b/packages/app/src/setupTests.ts @@ -1,3 +1,3 @@ -import { TextEncoder, TextDecoder } from "util"; +import { TextDecoder,TextEncoder } from "util"; Object.assign(global, { TextDecoder, TextEncoder }); diff --git a/packages/app/src/system.ts b/packages/app/src/system.ts index 25a73448..98c77421 100644 --- a/packages/app/src/system.ts +++ b/packages/app/src/system.ts @@ -1,3 +1,4 @@ +import { removeUndefined, throwIfOffline } from "@snort/shared"; import { mapEventToProfile, NostrEvent, @@ -7,13 +8,13 @@ import { socialGraphInstance, TaggedNostrEvent, } from "@snort/system"; -import { RelayMetrics, SystemDb, UserCache, UserRelays } from "@/Cache"; -import { hasWasm, WasmOptimizer } from "@/Utils/wasm"; import * as Comlink from "comlink"; -import IndexedDBWorker from "@/Db/IndexedDB?worker"; -import { removeUndefined, throwIfOffline } from "@snort/shared"; -import { LoginStore } from "@/Utils/Login"; + +import { RelayMetrics, SystemDb, UserCache, UserRelays } from "@/Cache"; import { addEventToFuzzySearch } from "@/Db/FuzzySearch"; +import IndexedDBWorker from "@/Db/IndexedDB?worker"; +import { LoginStore } from "@/Utils/Login"; +import { hasWasm, WasmOptimizer } from "@/Utils/wasm"; export const indexedDB = Comlink.wrap(new IndexedDBWorker()); /** diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts index 8b2cc1c8..171c63b5 100644 --- a/packages/app/vite.config.ts +++ b/packages/app/vite.config.ts @@ -1,9 +1,9 @@ import react from "@vitejs/plugin-react"; -import { VitePWA } from "vite-plugin-pwa"; +import appConfig from "config"; import { visualizer } from "rollup-plugin-visualizer"; import { defineConfig } from "vite"; +import { VitePWA } from "vite-plugin-pwa"; import { vitePluginVersionMark } from "vite-plugin-version-mark"; -import appConfig from "config"; export default defineConfig({ plugins: [ diff --git a/yarn.lock b/yarn.lock index aa6dc190..8b15a973 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2966,6 +2966,7 @@ __metadata: eslint-plugin-react: ^7.33.2 eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-react-refresh: ^0.4.5 + eslint-plugin-simple-import-sort: ^10.0.0 fuse.js: ^7.0.0 highlight.js: ^11.8.0 light-bolt11-decoder: ^2.1.0 @@ -5950,6 +5951,15 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-simple-import-sort@npm:^10.0.0": + version: 10.0.0 + resolution: "eslint-plugin-simple-import-sort@npm:10.0.0" + peerDependencies: + eslint: ">=5.0.0" + checksum: 23221ff63f80f9c52da807d388ee8a51bc36a3b73345f60ec886e7973c28d75eb1d1e47f7f2916a7c1f94a1b5037b1450356a64a8fbd58096fd6bee57c6e3e48 + languageName: node + linkType: hard + "eslint-scope@npm:^7.2.2": version: 7.2.2 resolution: "eslint-scope@npm:7.2.2"