feat: added more menu

This commit is contained in:
florian 2023-09-29 00:34:54 +02:00
parent a43f84ae58
commit e0f7349374
5 changed files with 54 additions and 26 deletions

View File

@ -12,32 +12,32 @@
"analyze": "vite-bundle-visualizer"
},
"dependencies": {
"@nostr-dev-kit/ndk": "^0.8.12",
"@nostr-dev-kit/ndk": "^1.3.0",
"@nostr-dev-kit/ndk-react": "^0.1.1",
"lodash": "^4.17.21",
"nostr-tools": "^1.14.0",
"nostr-tools": "^1.15.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-helmet": "^6.1.0",
"react-lazy-load": "^4.0.1",
"react-router-dom": "^6.15.0",
"react-router-dom": "^6.16.0",
"react-swipeable": "^7.0.1"
},
"devDependencies": {
"@types/lodash": "^4.14.197",
"@types/react": "^18.2.20",
"@types/lodash": "^4.14.199",
"@types/react": "^18.2.22",
"@types/react-dom": "^18.2.7",
"@types/react-helmet": "^6.1.6",
"@types/react-swipeable": "^5.2.0",
"@typescript-eslint/eslint-plugin": "^6.3.0",
"@typescript-eslint/parser": "^6.3.0",
"@vitejs/plugin-react": "^4.0.4",
"@webbtc/webln-types": "^1.0.14",
"eslint": "^8.47.0",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.3",
"@vitejs/plugin-react": "^4.1.0",
"@webbtc/webln-types": "^2.0.1",
"eslint": "^8.50.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"prettier": "^3.0.1",
"typescript": "^5.1.6",
"prettier": "^3.0.3",
"typescript": "^5.2.2",
"vite": "^4.4.9",
"vite-bundle-visualizer": "^0.10.0"
}

View File

@ -154,7 +154,8 @@
}
.details-actions .more .more-menu {
display: flex;
display: none;
flex-direction: column;
position: absolute;
top: 20px;
@ -166,6 +167,10 @@
gap: 6px;
}
.details-actions .more .more-menu.show {
display: flex;
}
.details-actions .more .more-action {
cursor: pointer;
display: flex;
@ -174,6 +179,10 @@
line-height: 2em;
border-radius: 6px;
padding-right: 0.5em;
text-wrap: nowrap;
}
.details-actions .more .more-action:hover {
background-color: #333;
}
.details-actions .more .more-action:hover {
@ -250,5 +259,11 @@
right: 0px;
top: auto;
left: auto;
text-wrap: nowrap;
display: none;
}
.details-actions .more .more-menu.show {
display: block;
}
}

View File

@ -13,6 +13,7 @@ import { useGlobalState } from '../../utils/globalState';
import IconBolt from '../Icons/IconBolt';
import useWindowSize from '../../utils/useWindowSize';
import IconLink from '../Icons/IconLink';
import IconDots from '../Icons/IconDots';
type DetailsViewProps = {
images: NostrImage[];
@ -28,6 +29,7 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP
const [zapState, setZapState] = useState<ZapState>('none');
const [heartState, setHeartState] = useState<HeartState>('none');
const [state, setState] = useGlobalState();
const [showMoreMenu, setShowMoreMenu] = useState(false);
const size = useWindowSize();
const currentImage = useMemo(
() => (activeImageIdx !== undefined ? images[activeImageIdx] : undefined),
@ -47,7 +49,7 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP
const { nav, currentSettings } = useNav();
const fetchLikeAndZaps = async (noteIds: string[], selfNPub: string) => {
const filter: NDKFilter = { kinds: [Kind.Reaction], '#e': noteIds };
const filter: NDKFilter = { kinds: [7], '#e': noteIds }; // Kind Reaction
filter.authors = [nip19.decode(selfNPub).data as string];
@ -142,7 +144,7 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP
return (
<>
<CloseButton onClick={() => setActiveImageIdx(undefined)}></CloseButton>
<div className="details">
<div className="details" onClick={() => setShowMoreMenu(false)}>
{nextImage && !isVideo(nextImage.url) && (
<img src={nextImageProxyUrl} loading="eager" style={{ display: 'none' }} />
)}
@ -189,19 +191,29 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP
<IconLink></IconLink>
</a>
)}
{/*
<div className="more">
{
<div className="more" onClick={(e) => {e.stopPropagation(); setShowMoreMenu(s=>!s)}}>
<IconDots></IconDots>
<div className="more-menu">
<div className={`more-menu ${showMoreMenu ? 'show': '' }`} >
<a className="more-action" target="_blank"
href={`https://nostrapp.link/#${nip19.noteEncode(currentImage?.noteId)}?select=true`}>
<IconLink></IconLink>Open note with...
</a>
<a className="more-action" target="_blank"
href={`https://nostrapp.link/#${currentImage?.author}`}>
<IconLink></IconLink>Open author profile
</a>
{/*
<a className="more-action">
<IconLink></IconLink> eiofjiodsjfp9dsf
<IconLink></IconLink>Repost
</a>
<a className="more-action">
<IconLink></IconLink> usdhfoidshfo
<IconLink></IconLink>Follow author
</a>
*/}
</div>
</div>
*/}
}
</div>
{currentImage.tags.length > 0 && (

View File

@ -110,10 +110,12 @@ export const mixedAdultNPubs = [
*/
export const adultNPubs = [
'npub10m75ad8pc6wtlt67f6wjeug4hpqurc68842ve5ne47u9lkjqa0lq8ja88s', // 313Chris:hellokitty_headbang:
'npub10y6rhnutt52wwt5f7544tq4as6jt03aq7j8mle7wcymjjudanm4q4hvzaw', // NSFW
'npub13806pd9p833wkgyemeqddjzdksunlq9gszq4yjnhw4l57sjjhwlq6m79nj', // Orvalho
'npub13n6ednsew67xk7hgse670z7849q5h8su5rgydxtl4lq3r5cx4ecqsd9af4', // Everybody, Every Body
'npub16932qv3sz53t9fdlm2n7scct5ahe9fy9vsct36qd0wcwxm94gyks47dcg6', // Preggers
'npub16ye5pezunzcx8y0ecjquks0sr5jkj6lrhfjyu2n9qxt5cxgzrvcqgnvx8s', // Aru Moon
'npub17693mv2qu7mv67zqpcup9n502gmkuhytkxq3sw7qp50vlptq8f7syzv93d', // sha0wgoone
'npub177wu03dgx6zt9a9hdey079prfw5lvj5dhm20z4k96tf6um6zjk7qyzdumj', // Eoun
'npub19xwjw7f23nsmnsd0j72mvhrdswt4cp6urc5el2zuu8se3yfu87ess524je', // Gone Wild (NSFW)
'npub1acwrv7aqgu949mw0zxmw2akgsjqp574nnq4vcl9wln5355q79w5ssv9qxg', // Arianna
@ -125,6 +127,7 @@ export const adultNPubs = [
'npub1e4n8nah09he25slv00dz3kav3jsu5jvp83aya234ejumcmu2xseqwrp6pl', // Svenno(NSFW)
'npub1femd0mrawr0jmtjr2jwa2nm90haxrpglzdt6tt0djrsav39e53asf74aer', // FemDom Raw
'npub1fh8e9pnm8rfln0k7c6uh8wrvmva8enkdzsgzsc7v9jk97up23ewqs6kuue', // nostrporn
'npub1fut75jn7hztc248vz3g8vfsdtwuy95l6khw533k6dsstsdrxkussf9ax6g', // bliss (not many nude art posts)
'npub1ga79p6qsjh0xd343q3du2unf2gl6gk0rde36c06mafxkrssmnnesxyzcss', // Orange Incest 🔞
'npub1grssdyrmdgy5gw5umg50u6rrl9nk738lw4qg2thpcqqaf3lypkqsxt7lhg', // Shades of Red
'npub1hjdtj67ckrq0lzga2mchny3wmgn6rptp826djd6edgyru7x6dszq093c0a', // ai
@ -139,6 +142,7 @@ export const adultNPubs = [
'npub1jvp6kfs2d3m98lyw5wcyr4fnctr83s0rc3mj5p0f75ach6vcd8rst6wqnu', // VelectBlue Art
'npub1kade5vf37snr4hv5hgstav6j5ygry6z09kkq0flp47p8cmeuz5zs7zz2an', // Aeontropy
'npub1klxseqx4et3grzgvajtlm47tz7tqmxygwj49kx3frsuls9cf8lhqhhhr5q', // Riley_R_Fan
'npub1kq67ngznkldmecycjfmjt4deuvyxgpn4zcpq8cvfmdl2hufzzccs6nc9q8', // Sargas
'npub1kul999wnt8gwa6l2vyuewhnmmp25gq7dly9zmgsw52x8csmqjgts7278rx', // 𝓟𝓮𝓽𝓲𝓽𝓮 𝓟𝓻𝓲𝓷𝓬𝓮𝓼𝓼
'npub1m5fdz9gqa2qeudpy47zllmv9gqe3zzj44dkt9lh2kes3mlex7e6se348vy', // Marble Sculture
'npub1mgusda7ujnyuhhudwkyrp763k4dd9xspktekl0tg5v0j76yph8ssyrfdpm', // anisyia
@ -151,6 +155,7 @@ export const adultNPubs = [
'npub1qg550au9hqmpgye4kfrtj7yt85dn60ty5hk0hcm7pktq6g6mzugsufnfcx', // Poppy Clements
'npub1qnpzqvzjxy79wpuvylw65gkh8n7pk62up9nc63a45a23mv0sf6us62qk5n', // 🔞▶Play & ⏸Pause 🔞
'npub1rv08kght99a7xwckm0qpmzw09m5gwppequgqd8lwu74eakgaavwsp5cjtw', // CuratedNSFW
'npub1sg7rwnf96a0fhl85xlvq0unumqqh89qaygwcdy5d3ue8209ekt2suhxg7u', // Anime Mommies Bot
'npub1skvfwq29xn92k08mu2584kx5x6ymz62askpnzjp9d3s8us68pemsmt78a4', // pornstarxyz
'npub1suddec4n2jv50pgn9eea35r4k83ahr4mcj0zv2uec36w6jeuwagq82xjgl', // quiet.enjoyer
'npub1t252vm7u5qmfwv3k70g6rl2ue7ctvtvrnd60vy8jh5suglv8pw2snyyzfq', // 20th Century Foxes (NSFW)
@ -163,10 +168,6 @@ export const adultNPubs = [
'npub1y77j6jm5hw34xl5m85aumltv88arh2s7q383allkpfe4muarzc5qzfgru0', // sexy-models
'npub1ylrnf0xfp9wsmqthxlqjqyqj9yy27pnchjwjq93v3mq66ts7ftjs6x7dcq', // Welcome To The Jungle
'npub1z0xv9t5w6evrcg860kmgqq5tfj55mz84ta40uszjnfp9uhw2clkq63yrak', // ???
'npub1sg7rwnf96a0fhl85xlvq0unumqqh89qaygwcdy5d3ue8209ekt2suhxg7u', // Anime Mommies Bot
'npub1kq67ngznkldmecycjfmjt4deuvyxgpn4zcpq8cvfmdl2hufzzccs6nc9q8', // Sargas
'npub10y6rhnutt52wwt5f7544tq4as6jt03aq7j8mle7wcymjjudanm4q4hvzaw', // NSFW
'npub17693mv2qu7mv67zqpcup9n502gmkuhytkxq3sw7qp50vlptq8f7syzv93d', // sha0wgoone
'npub1t07mr7m65lg3ecr5eapu6qe4ayt2wgjpqjs8x58m5kx2r2cutsyqyzzzs9', // NOT NSFW but spammy ai pictures
'npub1curnt7jtq8mhl9fcswnwvuvc9ccm6lvsdv4kzydx75v92kldrvdqh7sq09', // NOT NSFW but spammy ai pictures

View File

@ -22,7 +22,7 @@ export type NostrImage = {
export const buildFilter = (tags: string[], npubs: string[], withReposts = false) => {
const filter: NDKFilter = {
kinds: [1, 1063] as Kind[],
kinds: [1, 1063] as number[],
};
if (withReposts) {