From 12cbd73e7f775179e42b500a2b3bdb0e7f32e3d1 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Thu, 30 Mar 2023 01:29:34 +0200 Subject: SpotifyControls: Add right click menus to title/album/artists --- src/plugins/spotifyControls/PlayerComponent.tsx | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/plugins/spotifyControls/PlayerComponent.tsx') diff --git a/src/plugins/spotifyControls/PlayerComponent.tsx b/src/plugins/spotifyControls/PlayerComponent.tsx index 439ecc2..3276be1 100644 --- a/src/plugins/spotifyControls/PlayerComponent.tsx +++ b/src/plugins/spotifyControls/PlayerComponent.tsx @@ -22,7 +22,7 @@ import ErrorBoundary from "@components/ErrorBoundary"; import { Flex } from "@components/Flex"; import { Link } from "@components/Link"; import { debounce } from "@utils/debounce"; -import { classes, LazyComponent } from "@utils/misc"; +import { classes, copyWithToast, LazyComponent } from "@utils/misc"; import { filters, find } from "@webpack"; import { ContextMenu, FluxDispatcher, Forms, Menu, React, useEffect, useState, useStateFromStores } from "@webpack/common"; @@ -74,6 +74,37 @@ function Button(props: React.ButtonHTMLAttributes) { ); } +function CopyContextMenu({ name, path }: { name: string; path: string; }) { + const copyId = `spotify-copy-${name}`; + const openId = `spotify-open-${name}`; + + return ( + FluxDispatcher.dispatch({ type: "CONTEXT_MENU_CLOSE" })} + aria-label={`Spotify ${name} Menu`} + > + copyWithToast("https://open.spotify.com" + path)} + /> + SpotifyStore.openExternal(path)} + /> + + ); +} + +function makeContextMenu(name: string, path: string) { + return (e: React.MouseEvent) => + ContextMenu.open(e, () => ); +} + function Controls() { const [isPlaying, shuffle, repeat] = useStateFromStores( [SpotifyStore], @@ -263,6 +294,7 @@ function Info({ track }: { track: Track; }) { onClick={track.id ? () => { SpotifyStore.openExternal(`/track/${track.id}`); } : void 0} + onContextMenu={track.id ? makeContextMenu("Song", `/track/${track.id}`) : void 0} > {track.name} @@ -277,6 +309,7 @@ function Info({ track }: { track: Track; }) { href={`https://open.spotify.com/artist/${a.id}`} style={{ fontSize: "inherit" }} title={a.name} + onContextMenu={makeContextMenu("Artist", `/artist/${a.id}`)} > {a.name} @@ -295,6 +328,7 @@ function Info({ track }: { track: Track; }) { disabled={!track.album.id} style={{ fontSize: "inherit" }} title={track.album.name} + onContextMenu={makeContextMenu("Album", `/album/${track.album.id}`)} > {track.album.name} -- cgit