feed display url param

This commit is contained in:
Martti Malmi 2023-08-18 17:26:33 +03:00
parent 8dda051f8f
commit 97037017c2
2 changed files with 24 additions and 1 deletions

View File

@ -11,6 +11,7 @@ import Show from '@/components/helpers/Show';
import useSubscribe from '@/hooks/useSubscribe';
import { useLocalState } from '@/LocalState';
import Key from '@/nostr/Key.ts';
import Helpers from '@/utils/Helpers.tsx';
const Feed = (props: FeedProps) => {
const fetchEvents = props.fetchEvents || useSubscribe;
@ -19,8 +20,9 @@ const Feed = (props: FeedProps) => {
if (!filterOptions || filterOptions.length === 0) {
throw new Error('Feed requires at least one filter option');
}
const displayAsParam = Helpers.getUrlParameter('display') === 'grid' ? 'grid' : 'feed';
const [filterOption, setFilterOption] = useState(filterOptions[0]);
const [displayAs, setDisplayAs] = useState<DisplayAs>('feed');
const [displayAs, setDisplayAs] = useState<DisplayAs>(displayAsParam);
const [mutedUsers] = useLocalState('muted', {});
const [showUntil, setShowUntil] = useState(Math.floor(Date.now() / 1000));
const [infiniteScrollKey, setInfiniteScrollKey] = useState(0);
@ -89,6 +91,7 @@ const Feed = (props: FeedProps) => {
<DisplaySelector
onDisplayChange={(displayAs) => {
setDisplayAs(displayAs);
Helpers.setUrlParameter('display', displayAs === 'grid' ? 'grid' : null);
}}
activeDisplay={displayAs}
/>

View File

@ -193,6 +193,26 @@ export default {
return urlParams.get(name);
},
setUrlParameter(name: string, value: string | null) {
const urlParams = new URLSearchParams(window.location.search);
if (value) {
urlParams.set(name, value);
} else {
urlParams.delete(name);
}
// Construct the new URL.
let newUrl = window.location.pathname;
// Only append the ? if urlParams is not empty.
if (urlParams.toString()) {
newUrl += '?' + urlParams.toString();
}
window.history.replaceState({}, '', newUrl);
},
getDaySeparatorText(date: Date, dateStr: string, now?: Date, nowStr?: string) {
if (!now) {
now = new Date();