eslint: sort imports & exports
This commit is contained in:
parent
046d4d97bd
commit
3fe3c7a98d
@ -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"],
|
||||
|
@ -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",
|
||||
|
@ -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<NostrEvent> {
|
||||
|
@ -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<EventInteraction> {
|
||||
constructor() {
|
||||
|
@ -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<TaggedNostrEvent> {
|
||||
constructor() {
|
||||
super("FollowListCache", db.followLists);
|
||||
|
@ -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;
|
||||
|
@ -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<UnwrappedGift> {
|
||||
constructor() {
|
||||
super("GiftWrapCache", db.gifts);
|
||||
|
@ -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<NostrEventForSession> {
|
||||
#kinds = [EventKind.TextNote, EventKind.Reaction, EventKind.Repost, EventKind.ZapReceipt];
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { Payment, db } from "@/Db";
|
||||
import { FeedCache } from "@snort/shared";
|
||||
|
||||
import { db,Payment } from "@/Db";
|
||||
|
||||
export class Payments extends FeedCache<Payment> {
|
||||
constructor() {
|
||||
super("PaymentsCache", db.payments);
|
||||
|
@ -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> = (T | Readonly<T>) & { created_at: number };
|
||||
|
@ -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);
|
||||
|
@ -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<HTMLButtonElement> {
|
||||
onClick?: (e: React.MouseEvent) => Promise<void> | void;
|
||||
|
@ -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<HTMLDivElement> & {
|
||||
iconName: string;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import "./BackButton.css";
|
||||
|
||||
import { useIntl } from "react-intl";
|
||||
|
||||
import Icon from "@/Components/Icons/Icon";
|
||||
|
@ -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 (
|
||||
<div
|
||||
|
@ -1,7 +1,8 @@
|
||||
import classNames from "classnames";
|
||||
import Icon, { IconProps } from "@/Components/Icons/Icon";
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
import Icon, { IconProps } from "@/Components/Icons/Icon";
|
||||
|
||||
interface IconButtonProps {
|
||||
onClick?: () => void;
|
||||
icon: IconProps;
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -1,5 +1,7 @@
|
||||
import "./Copy.css";
|
||||
|
||||
import classNames from "classnames";
|
||||
|
||||
import Icon from "@/Components/Icons/Icon";
|
||||
import { useCopy } from "@/Hooks/useCopy";
|
||||
|
||||
|
@ -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<{
|
||||
|
@ -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 (
|
||||
<span className="hashtag">
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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";
|
||||
|
@ -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 }) {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { TidalRegex } from "@/Utils/Const";
|
||||
|
||||
// Re-use dom parser across instances of TidalEmbed
|
||||
|
@ -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");
|
||||
|
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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,
|
||||
|
@ -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 ? (
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import "./Note.css";
|
||||
|
||||
import ProfileImage from "@/Components/User/ProfileImage";
|
||||
|
||||
interface NoteGhostProps {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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 = ({
|
||||
|
@ -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));
|
||||
|
@ -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(
|
||||
|
@ -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();
|
||||
|
@ -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 = {
|
||||
|
@ -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 }) => {
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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 =
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
@ -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<TimelineFragment>;
|
||||
|
@ -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 }) {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { MouseEventHandler } from "react";
|
||||
|
||||
import IconsSvg from "@/Components/Icons/icons.svg";
|
||||
|
||||
export interface IconProps {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import "./Toggle.css";
|
||||
|
||||
import { IconProps } from "./Icon";
|
||||
|
||||
export function ToggleSwitch(props: Omit<IconProps, "name">) {
|
||||
|
@ -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("");
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -1,6 +1,7 @@
|
||||
import AccountName from "./AccountName";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
|
||||
import AccountName from "./AccountName";
|
||||
|
||||
interface ReservedAccountProps {
|
||||
name?: string;
|
||||
enableReserved: () => void;
|
||||
|
@ -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");
|
||||
|
@ -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<NostrEvent> }) {
|
||||
const streams = useMemo(() => {
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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<void>; className?: string }) {
|
||||
return (
|
||||
|
@ -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,
|
||||
|
@ -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));
|
||||
|
@ -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<HTMLImageElement> & {
|
||||
|
@ -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<Array<string>>();
|
||||
|
@ -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;
|
||||
|
@ -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 }) => {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -1,5 +1,7 @@
|
||||
import { ReactNode } from "react";
|
||||
import "./Tabs.css";
|
||||
|
||||
import { ReactNode } from "react";
|
||||
|
||||
import useHorizontalScroll from "@/Hooks/useHorizontalScroll";
|
||||
|
||||
export interface Tab {
|
||||
|
@ -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";
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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";
|
||||
|
@ -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<Array<UITask>> {
|
||||
#tasks: Array<UITask>;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { MetadataCache } from "@snort/system";
|
||||
|
||||
import { LoginSession } from "@/Utils/Login";
|
||||
|
||||
export interface UITask {
|
||||
|
@ -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;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user