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) => (
+
+ ))}
+
+
+
);
}