aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorV <vendicated@riseup.net>2023-05-13 23:58:24 +0200
committerV <vendicated@riseup.net>2023-05-14 00:10:01 +0200
commitcd53cf38fe6330699495c9c26d29e37322d3082a (patch)
tree3ea6687f85ce0613e03613c3b64669f721447af7 /src
parentf13f9e80a926fb91ff9c349b708123954d0450ce (diff)
downloadVencord-cd53cf38fe6330699495c9c26d29e37322d3082a.tar.gz
Vencord-cd53cf38fe6330699495c9c26d29e37322d3082a.tar.bz2
Vencord-cd53cf38fe6330699495c9c26d29e37322d3082a.zip
ReverseImageSearch: Add engine icons
Diffstat (limited to 'src')
-rw-r--r--src/plugins/reverseImageSearch.tsx30
-rw-r--r--src/webpack/common/types/menu.d.ts4
2 files changed, 28 insertions, 6 deletions
diff --git a/src/plugins/reverseImageSearch.tsx b/src/plugins/reverseImageSearch.tsx
index c375e19..811e7ff 100644
--- a/src/plugins/reverseImageSearch.tsx
+++ b/src/plugins/reverseImageSearch.tsx
@@ -17,6 +17,8 @@
*/
import { addContextMenuPatch, findGroupChildrenByChildId, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu";
+import { Flex } from "@components/Flex";
+import { OpenExternalIcon } from "@components/Icons";
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { Menu } from "@webpack/common";
@@ -28,7 +30,7 @@ const Engines = {
IQDB: "https://iqdb.org/?url=",
TinEye: "https://www.tineye.com/search?url=",
ImgOps: "https://imgops.com/start?url="
-};
+} as const;
function search(src: string, engine: string) {
open(engine + encodeURIComponent(src), "_blank");
@@ -50,13 +52,28 @@ const imageContextMenuPatch: NavContextMenuPatchCallback = (children, props) =>
key="search-image"
id="search-image"
>
- {Object.keys(Engines).map(engine => {
+ {Object.keys(Engines).map((engine, i) => {
const key = "search-image-" + engine;
return (
<Menu.MenuItem
key={key}
id={key}
- label={engine}
+ label={
+ <Flex style={{ alignItems: "center", gap: "0.5em" }}>
+ <img
+ style={{
+ borderRadius: i >= 3 // Do not round Google, Yandex & SauceNAO
+ ? "50%"
+ : void 0
+ }}
+ aria-hidden="true"
+ height={16}
+ width={16}
+ src={new URL("/favicon.ico", Engines[engine]).toString().replace("lens.", "")}
+ />
+ {engine}
+ </Flex>
+ }
action={() => search(src, Engines[engine])}
/>
);
@@ -64,7 +81,12 @@ const imageContextMenuPatch: NavContextMenuPatchCallback = (children, props) =>
<Menu.MenuItem
key="search-image-all"
id="search-image-all"
- label="All"
+ label={
+ <Flex style={{ alignItems: "center", gap: "0.5em" }}>
+ <OpenExternalIcon height={16} width={16} />
+ All
+ </Flex>
+ }
action={() => Object.values(Engines).forEach(e => search(src, e))}
/>
</Menu.MenuItem>
diff --git a/src/webpack/common/types/menu.d.ts b/src/webpack/common/types/menu.d.ts
index 8e9218f..58ea626 100644
--- a/src/webpack/common/types/menu.d.ts
+++ b/src/webpack/common/types/menu.d.ts
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import type { ComponentType, CSSProperties, MouseEvent, PropsWithChildren, UIEvent } from "react";
+import type { ComponentType, CSSProperties, MouseEvent, PropsWithChildren, ReactNode, UIEvent } from "react";
type RC<C> = ComponentType<PropsWithChildren<C & Record<string, any>>>;
@@ -35,7 +35,7 @@ export interface Menu {
}>;
MenuItem: RC<{
id: string;
- label: string;
+ label: ReactNode;
action?(e: MouseEvent): void;
icon?: ComponentType<any>;