beatufitull front end for ozone modration ,, wit catpucoin and ebergarden !
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

put the uri in url

+62 -5
+62 -5
src/routes/+page.svelte
··· 23 23 import Sidebar from '$components/Sidebar.svelte'; 24 24 import Advertisement from '$components/Advertisement.svelte'; 25 25 import { ads } from '$lib/ads'; 26 + import { browser } from '$app/environment'; 26 27 import { onMount } from 'svelte'; 27 28 import AdvertisementOverlay from '$components/AdvertisementOverlay.svelte'; 28 29 29 - let selectedDid: string | null = null; 30 - let selectedPostUri: AtUri | null = null; 30 + let selectedDid = $state<string | null>(null); 31 + let selectedPostUri = $state<AtUri | null>(null); 32 + 33 + function openUser(did: string) { 34 + selectedPostUri = null; 35 + selectedDid = did; 36 + } 37 + 38 + function openPost(uri: string) { 39 + selectedDid = null; 40 + selectedPostUri = new AtUri(uri); 41 + } 42 + 43 + function syncViewToUrl() { 44 + if (!browser) return; 45 + 46 + const url = new URL(window.location.href); 47 + if (selectedDid) { 48 + url.searchParams.set('view', 'user'); 49 + url.searchParams.set('did', selectedDid); 50 + url.searchParams.delete('uri'); 51 + } else if (selectedPostUri) { 52 + url.searchParams.set('view', 'post'); 53 + url.searchParams.set('uri', selectedPostUri.toString()); 54 + url.searchParams.delete('did'); 55 + } else { 56 + url.searchParams.delete('view'); 57 + url.searchParams.delete('did'); 58 + url.searchParams.delete('uri'); 59 + } 60 + 61 + history.replaceState(history.state, '', url); 62 + } 63 + 64 + onMount(() => { 65 + const view = page.url.searchParams.get('view'); 66 + 67 + if (view === 'user') { 68 + const did = page.url.searchParams.get('did'); 69 + if (did) openUser(did); 70 + return; 71 + } 72 + 73 + if (view === 'post') { 74 + const uri = page.url.searchParams.get('uri'); 75 + if (uri) { 76 + try { 77 + openPost(uri); 78 + } catch (error) { 79 + console.error('Invalid post uri in URL:', error); 80 + } 81 + } 82 + } 83 + }); 84 + 85 + $effect(() => { 86 + syncViewToUrl(); 87 + }); 31 88 function getCollectionName(report: Report) { 32 89 try { 33 90 return report.subject.handle ? 'Post' : 'unknown'; ··· 133 190 <p> 134 191 {#if ComAtprotoRepoStrongRef.isMain(subject)} 135 192 <button 136 - on:click={() => (selectedPostUri = new AtUri(subject.uri))} 193 + onclick={() => openPost(subject.uri)} 137 194 class="inline-flex cursor-pointer items-center px-0 py-0 text-ctp-blue hover:underline" 138 195 > 139 196 Post ··· 141 198 </button> 142 199 created by 143 200 <button 144 - on:click={() => (selectedDid = new AtUri(subject.uri).host)} 201 + onclick={() => openUser(new AtUri(subject.uri).host)} 145 202 class="inline-flex cursor-pointer items-center px-0 py-0 text-ctp-blue hover:underline" 146 203 > 147 204 @{report.subjectRepoHandle} ··· 149 206 </button> 150 207 {:else if isRepoRef(subject)} 151 208 <button 152 - on:click={() => (selectedDid = subject.did)} 209 + onclick={() => openUser(subject.did)} 153 210 class="inline-flex cursor-pointer items-center px-0 py-0 text-ctp-blue hover:underline" 154 211 > 155 212 @{report.subjectRepoHandle}