diff --git a/src/element/new-stream.tsx b/src/element/new-stream.tsx
index b32226c..d387943 100644
--- a/src/element/new-stream.tsx
+++ b/src/element/new-stream.tsx
@@ -31,7 +31,9 @@ function NewStream({ ev, onFinish }: StreamEditorProps) {
onFinish={(ex) => {
currentProvider.updateStreamInfo(ex);
if (!ev) {
- navigate(eventLink(ex));
+ navigate(`/${eventLink(ex)}`, {
+ state: ev
+ });
} else {
onFinish?.(ev);
}
diff --git a/src/element/video-tile.tsx b/src/element/video-tile.tsx
index 4c53e10..313cbcd 100644
--- a/src/element/video-tile.tsx
+++ b/src/element/video-tile.tsx
@@ -43,6 +43,7 @@ export function VideoTile({
to={`/${link}`}
className={`video-tile${contentWarning ? " nsfw" : ""}`}
ref={ref}
+ state={ev}
>
{
@@ -38,6 +44,10 @@ export function useCurrentStreamFeed(link: NostrLink, leaveOpen = false) {
const q = useRequestBuilder(System, NoteCollection, sub);
+ if (evPreload) {
+ q.add(evPreload as TaggedRawEvent);
+ }
+
return useMemo(() => {
const hosting = q.data?.filter(
(a) =>
diff --git a/src/index.tsx b/src/index.tsx
index 97b4621..bf3bb62 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -15,6 +15,7 @@ import { ChatPopout } from "pages/chat-popout";
import { LoginStore } from "login";
import { StreamProvidersPage } from "pages/providers";
import { defaultRelays } from "const";
+import { CatchAllRoutePage } from "pages/catch-all";
export enum StreamState {
Live = "live",
@@ -58,6 +59,10 @@ const router = createBrowserRouter([
path: "/providers/:id?",
element:
,
},
+ {
+ path: "*",
+ element:
+ }
],
},
{
diff --git a/src/pages/catch-all.tsx b/src/pages/catch-all.tsx
new file mode 100644
index 0000000..c77c796
--- /dev/null
+++ b/src/pages/catch-all.tsx
@@ -0,0 +1,6 @@
+
+export function CatchAllRoutePage() {
+ //const { ["*"]: param } = useParams();
+
+ return
Not found :(
+}
\ No newline at end of file
diff --git a/src/pages/stream-page.tsx b/src/pages/stream-page.tsx
index df2c905..0609420 100644
--- a/src/pages/stream-page.tsx
+++ b/src/pages/stream-page.tsx
@@ -1,14 +1,13 @@
import "./stream-page.css";
import { parseNostrLink, TaggedRawEvent } from "@snort/system";
-import { useNavigate, useParams } from "react-router-dom";
+import { useLocation, useNavigate, useParams } from "react-router-dom";
import { Helmet } from "react-helmet";
import { LiveVideoPlayer } from "element/live-video-player";
-import { findTag, getHost } from "utils";
+import { createNostrLink, findTag, getEventFromLocationState, getHost } from "utils";
import { Profile, getName } from "element/profile";
import { LiveChat } from "element/live-chat";
import AsyncButton from "element/async-button";
-import useEventFeed from "hooks/event-feed";
import { useLogin } from "hooks/login";
import { useZapGoal } from "hooks/goals";
import { StreamState, System } from "index";
@@ -26,6 +25,7 @@ import {
ContentWarningOverlay,
isContentWarningAccepted,
} from "element/content-warning";
+import { useCurrentStreamFeed } from "hooks/current-stream-feed";
function ProfileInfo({ ev, goal }: { ev?: NostrEvent; goal?: TaggedRawEvent }) {
const login = useLogin();
@@ -107,8 +107,10 @@ function ProfileInfo({ ev, goal }: { ev?: NostrEvent; goal?: TaggedRawEvent }) {
export function StreamPage() {
const params = useParams();
+ const location = useLocation();
+ const evPreload = getEventFromLocationState(location.state);
const link = parseNostrLink(params.id!);
- const { data: ev } = useEventFeed(link, true);
+ const ev = useCurrentStreamFeed(link, true, evPreload);
const host = getHost(ev);
const goal = useZapGoal(host, link, true);
@@ -151,7 +153,7 @@ export function StreamPage() {
-