diff --git a/src/hooks/use-client-relays.ts b/src/hooks/use-client-relays.ts index b7007b839..6f1701910 100644 --- a/src/hooks/use-client-relays.ts +++ b/src/hooks/use-client-relays.ts @@ -3,7 +3,7 @@ import clientRelaysService from "../services/client-relays"; import { RelayMode } from "../classes/relay"; import useSubject from "./use-subject"; -export function useClientRelays(mode: RelayMode = RelayMode.READ) { +export function useClientRelays(mode: RelayMode = RelayMode.ALL) { const relays = useSubject(clientRelaysService.relays) ?? []; return relays.filter((r) => r.mode & mode); diff --git a/src/services/client-relays.ts b/src/services/client-relays.ts index 066eb7ec2..57d46d1b3 100644 --- a/src/services/client-relays.ts +++ b/src/services/client-relays.ts @@ -119,7 +119,8 @@ class ClientRelayService { const newRelayUrls = newRelays.filter((r) => r.mode & RelayMode.WRITE).map((r) => r.url); const oldRelayUrls = this.relays.value.filter((r) => r.mode & RelayMode.WRITE).map((r) => r.url); - const writeUrls = unique([...oldRelayUrls, ...newRelayUrls]); + // always write relay lists to wss://purplepag.es + const writeUrls = unique([...oldRelayUrls, ...newRelayUrls, "wss://purplepag.es"]); const current = accountService.current.value; if (!current) throw new Error("no account"); diff --git a/src/views/lists/index.tsx b/src/views/lists/index.tsx index e51d5c450..7ae29cecd 100644 --- a/src/views/lists/index.tsx +++ b/src/views/lists/index.tsx @@ -58,13 +58,17 @@ function ListsPage() { ))} - Bookmark lists - - - {noteLists.map((event) => ( - - ))} - + {noteLists.length > 0 && ( + <> + Bookmark lists + + + {noteLists.map((event) => ( + + ))} + + + )} {favoriteLists.length > 0 && ( <> Favorite lists diff --git a/src/views/lists/list.tsx b/src/views/lists/list.tsx index 2d168c8f7..70588e0ce 100644 --- a/src/views/lists/list.tsx +++ b/src/views/lists/list.tsx @@ -3,7 +3,7 @@ import { nip19 } from "nostr-tools"; import { Link as RouterLink } from "react-router-dom"; import { UserLink } from "../../components/user-link"; -import { Button, Divider, Flex, Heading, SimpleGrid } from "@chakra-ui/react"; +import { Button, Divider, Flex, Heading, SimpleGrid, Spacer } from "@chakra-ui/react"; import { ArrowLeftSIcon } from "../../components/icons"; import { useCurrentAccount } from "../../hooks/use-current-account"; import { useDeleteEventContext } from "../../providers/delete-event-provider"; @@ -15,6 +15,7 @@ import UserCard from "./components/user-card"; import NoteCard from "./components/note-card"; import { TrustProvider } from "../../providers/trust"; import ListMenu from "./components/list-menu"; +import ListFavoriteButton from "./components/list-favorite-button"; function useListCoordinate() { const { addr } = useParams() as { addr: string }; @@ -56,9 +57,12 @@ export default function ListView() { Back - + {getListName(event)} + + + diff --git a/src/views/login/npub.tsx b/src/views/login/npub.tsx index 8677d9b99..87d66d6c2 100644 --- a/src/views/login/npub.tsx +++ b/src/views/login/npub.tsx @@ -10,7 +10,7 @@ export default function LoginNpubView() { const navigate = useNavigate(); const toast = useToast(); const [npub, setNpub] = useState(""); - const [relayUrl, setRelayUrl] = useState("wss://relay.damus.io"); + const [relayUrl, setRelayUrl] = useState("wss://purplepag.es"); const handleSubmit: React.FormEventHandler = (e) => { e.preventDefault(); diff --git a/src/views/login/nsec.tsx b/src/views/login/nsec.tsx index 661930c6b..c05f56e74 100644 --- a/src/views/login/nsec.tsx +++ b/src/views/login/nsec.tsx @@ -31,7 +31,7 @@ export default function LoginNsecView() { const [inputValue, setInputValue] = useState(""); const [hexKey, setHexKey] = useState(""); - const [relayUrl, setRelayUrl] = useState(""); + const [relayUrl, setRelayUrl] = useState("wss://purplepag.es"); const [npub, setNpub] = useState(""); diff --git a/src/views/profile/edit.tsx b/src/views/profile/edit.tsx index 1bdc0f3a8..80495f940 100644 --- a/src/views/profile/edit.tsx +++ b/src/views/profile/edit.tsx @@ -191,7 +191,7 @@ const MetadataForm = ({ defaultValues, onSubmit }: MetadataFormProps) => { }; export const ProfileEditView = () => { - const writeRelays = useWriteRelayUrls(); + const writeRelays = useWriteRelayUrls(["wss://purplepag.es"]); // always write profile info to wss://purplepag.es const readRelays = useReadRelayUrls(); const toast = useToast(); const account = useCurrentAccount()!; diff --git a/src/views/user/lists.tsx b/src/views/user/lists.tsx index 33fd96eb6..2e2021339 100644 --- a/src/views/user/lists.tsx +++ b/src/views/user/lists.tsx @@ -7,6 +7,9 @@ import useSubject from "../../hooks/use-subject"; import { NOTE_LIST_KIND, PEOPLE_LIST_KIND } from "../../helpers/nostr/lists"; import { getEventUID, truncatedId } from "../../helpers/nostr/events"; import ListCard from "../lists/components/list-card"; +import IntersectionObserverProvider from "../../providers/intersection-observer"; +import { useTimelineCurserIntersectionCallback } from "../../hooks/use-timeline-cursor-intersection-callback"; +import TimelineActionAndStatus from "../../components/timeline-page/timeline-action-and-status"; export default function UserListsTab() { const { pubkey } = useOutletContext() as { pubkey: string }; @@ -18,14 +21,18 @@ export default function UserListsTab() { }); const events = useSubject(timeline.timeline); + const callback = useTimelineCurserIntersectionCallback(timeline); return ( - - - - {events.map((event) => ( - - ))} - + + + + + {events.map((event) => ( + + ))} + + + ); }