a tool for shared writing and social publishing
0
fork

Configure Feed

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

add remove from your home option to docs

+34 -3
+12 -1
app/home/DocOptions.tsx
··· 1 1 "use client"; 2 2 import { DeleteSmall, MoreOptionsTiny } from "components/Icons"; 3 3 import { Menu, MenuItem } from "components/Layout"; 4 + import { PermissionToken } from "src/replicache"; 5 + import { mutate } from "swr"; 6 + import { hideDoc, removeDocFromHome } from "./storage"; 4 7 5 8 export const DocOptions = (props: { 6 - doc_id: string; 9 + doc: PermissionToken; 7 10 setState: (s: "normal" | "deleting") => void; 8 11 }) => { 9 12 return ( ··· 15 18 </div> 16 19 } 17 20 > 21 + <MenuItem 22 + onSelect={() => { 23 + hideDoc(props.doc); 24 + mutate("docs"); 25 + }} 26 + > 27 + Remove from your home{" "} 28 + </MenuItem> 18 29 <MenuItem 19 30 onSelect={(e) => { 20 31 props.setState("deleting");
+1 -1
app/home/DocPreview.tsx
··· 83 83 )} 84 84 {state === "normal" && ( 85 85 <div className="flex justify-end pt-1"> 86 - <DocOptions doc_id={props.doc_id} setState={setState} /> 86 + <DocOptions doc={props.token} setState={setState} /> 87 87 </div> 88 88 )} 89 89 </ThemeProvider>
+1
app/home/DocsList.tsx
··· 16 16 <div className="grid auto-rows-max md:grid-cols-4 sm:grid-cols-3 grid-cols-2 gap-y-8 gap-x-4 sm:gap-6 grow"> 17 17 {docs 18 18 .sort((a, b) => (a.added_at > b.added_at ? -1 : 1)) 19 + .filter((d) => !d.hidden) 19 20 .map(({ token: doc }) => ( 20 21 <ReplicacheProvider 21 22 key={doc.id}
+20 -1
app/home/storage.ts
··· 1 1 import { PermissionToken } from "src/replicache"; 2 2 3 - export type HomeDoc = { token: PermissionToken; added_at: string }; 3 + export type HomeDoc = { 4 + token: PermissionToken; 5 + added_at: string; 6 + hidden?: boolean; 7 + }; 4 8 type HomeDocsStorage = { 5 9 version: number; 6 10 docs: Array<HomeDoc>; ··· 37 41 }; 38 42 window.localStorage.setItem(key, JSON.stringify(newValue)); 39 43 } 44 + 45 + export function hideDoc(doc: PermissionToken) { 46 + let homepageDocs = getHomeDocs(); 47 + let newDocs = homepageDocs.filter((d) => d.token.id !== doc.id); 48 + newDocs.push({ 49 + token: doc, 50 + added_at: new Date().toISOString(), 51 + hidden: true, 52 + }); 53 + let newValue: HomeDocsStorage = { 54 + version: 1, 55 + docs: newDocs, 56 + }; 57 + window.localStorage.setItem(key, JSON.stringify(newValue)); 58 + }