From 22fb1aa7bafa6e0b8622b741057b4f9941f584b8 Mon Sep 17 00:00:00 2001 From: prxt6529 Date: Tue, 3 Feb 2026 16:19:23 +0200 Subject: [PATCH 1/2] Use Preview image in my votes tab Signed-off-by: prxt6529 --- .../votes/MyStreamWaveMyVote.test.tsx | 64 +++++++++++-------- .../my-stream/votes/MyStreamWaveMyVote.tsx | 14 ++-- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx b/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx index 0b6746d513..df36c99a9d 100644 --- a/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx +++ b/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx @@ -1,68 +1,78 @@ -import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import MyStreamWaveMyVote from '@/components/brain/my-stream/votes/MyStreamWaveMyVote'; +import MyStreamWaveMyVote from "@/components/brain/my-stream/votes/MyStreamWaveMyVote"; +import { fireEvent, render } from "@testing-library/react"; -jest.mock('@/components/drops/view/item/content/media/DropListItemContentMedia', () => ({ +jest.mock("@/components/drops/view/item/content/media/MediaDisplay", () => ({ __esModule: true, default: () =>
, })); -jest.mock('@/components/brain/my-stream/votes/MyStreamWaveMyVoteVotes', () => ({ +jest.mock("@/components/brain/my-stream/votes/MyStreamWaveMyVoteVotes", () => ({ __esModule: true, default: () =>
, })); -jest.mock('@/components/brain/my-stream/votes/MyStreamWaveMyVoteInput', () => ({ +jest.mock("@/components/brain/my-stream/votes/MyStreamWaveMyVoteInput", () => ({ __esModule: true, default: () =>
, })); -jest.mock('@/components/user/utils/UserCICAndLevel', () => ({ +jest.mock("@/components/user/utils/UserCICAndLevel", () => ({ __esModule: true, default: () =>
, - UserCICAndLevelSize: { SMALL: 'SMALL' }, + UserCICAndLevelSize: { SMALL: "SMALL" }, })); -jest.mock('@/components/waves/drop/SingleWaveDropPosition', () => ({ +jest.mock("@/components/waves/drop/SingleWaveDropPosition", () => ({ __esModule: true, - SingleWaveDropPosition: ({ rank }: any) =>
{rank}
, - default: ({ rank }: any) =>
{rank}
+ SingleWaveDropPosition: ({ rank }: any) => ( +
{rank}
+ ), + default: ({ rank }: any) =>
{rank}
, })); -describe('MyStreamWaveMyVote', () => { +describe("MyStreamWaveMyVote", () => { const drop: any = { - id: 'd1', - title: 'Drop Title', - parts: [{ media: [{ url: 'a', mime_type: 'image/jpeg' }] }], - author: { handle: 'alice', cic: 1, level: 2 }, + id: "d1", + title: "Drop Title", + parts: [{ media: [{ url: "a", mime_type: "image/jpeg" }] }], + author: { handle: "alice", cic: 1, level: 2 }, rating: 0, raters_count: 3, }; - it('triggers onDropClick when no text selected', () => { + it("triggers onDropClick when no text selected", () => { const onDropClick = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => '' }); - const { container } = render(); + (window.getSelection as any) = () => ({ toString: () => "" }); + const { container } = render( + + ); fireEvent.click(container.firstChild!); expect(onDropClick).toHaveBeenCalledWith(drop); }); - it('does not trigger onDropClick when text selected', () => { + it("does not trigger onDropClick when text selected", () => { const onDropClick = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => 'sel' }); - const { container } = render(); + (window.getSelection as any) = () => ({ toString: () => "sel" }); + const { container } = render( + + ); fireEvent.click(container.firstChild!); expect(onDropClick).not.toHaveBeenCalled(); }); - it('calls onToggleCheck when checkbox clicked', () => { + it("calls onToggleCheck when checkbox clicked", () => { const onToggleCheck = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => '' }); + (window.getSelection as any) = () => ({ toString: () => "" }); const { container } = render( - + ); - const checkbox = container.querySelector('.tw-flex-shrink-0'); + const checkbox = container.querySelector(".tw-flex-shrink-0"); fireEvent.click(checkbox!); - expect(onToggleCheck).toHaveBeenCalledWith('d1'); + expect(onToggleCheck).toHaveBeenCalledWith("d1"); }); }); diff --git a/components/brain/my-stream/votes/MyStreamWaveMyVote.tsx b/components/brain/my-stream/votes/MyStreamWaveMyVote.tsx index 21fc2d72d0..c26aaa3ab8 100644 --- a/components/brain/my-stream/votes/MyStreamWaveMyVote.tsx +++ b/components/brain/my-stream/votes/MyStreamWaveMyVote.tsx @@ -1,5 +1,5 @@ import MediaTypeBadge from "@/components/drops/media/MediaTypeBadge"; -import DropListItemContentMedia from "@/components/drops/view/item/content/media/DropListItemContentMedia"; +import MediaDisplay from "@/components/drops/view/item/content/media/MediaDisplay"; import UserCICAndLevel, { UserCICAndLevelSize, } from "@/components/user/utils/UserCICAndLevel"; @@ -8,8 +8,9 @@ import { SingleWaveDropPosition } from "@/components/waves/drop/SingleWaveDropPo import { formatNumberWithCommas } from "@/helpers/Helpers"; import { ImageScale } from "@/helpers/image.helpers"; import type { ExtendedDrop } from "@/helpers/waves/drop.helpers"; +import { getDropPreviewImageUrl } from "@/helpers/waves/drop.helpers"; import Link from "next/link"; -import React from "react"; +import React, { useMemo } from "react"; import { Tooltip } from "react-tooltip"; import MyStreamWaveMyVoteInput from "./MyStreamWaveMyVoteInput"; import MyStreamWaveMyVoteVotes from "./MyStreamWaveMyVoteVotes"; @@ -30,6 +31,10 @@ const MyStreamWaveMyVote: React.FC = ({ isResetting = false, }) => { const artWork = drop.parts.at(0)?.media.at(0); + const previewImageUrl = useMemo( + () => getDropPreviewImageUrl(drop.metadata), + [drop.metadata] + ); const handleClick = () => { if (window.getSelection()?.toString()) { @@ -89,11 +94,12 @@ const MyStreamWaveMyVote: React.FC = ({
{artWork && ( - )}
From 0160007330f1ab32b8773366079d0c7374d114c5 Mon Sep 17 00:00:00 2001 From: prxt6529 Date: Tue, 3 Feb 2026 17:00:13 +0200 Subject: [PATCH 2/2] WIP Signed-off-by: prxt6529 --- .../brain/my-stream/votes/MyStreamWaveMyVote.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx b/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx index df36c99a9d..2ab6e1a40f 100644 --- a/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx +++ b/__tests__/components/brain/my-stream/votes/MyStreamWaveMyVote.test.tsx @@ -42,7 +42,7 @@ describe("MyStreamWaveMyVote", () => { it("triggers onDropClick when no text selected", () => { const onDropClick = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => "" }); + (globalThis.getSelection as any) = () => ({ toString: () => "" }); const { container } = render( ); @@ -52,7 +52,7 @@ describe("MyStreamWaveMyVote", () => { it("does not trigger onDropClick when text selected", () => { const onDropClick = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => "sel" }); + (globalThis.getSelection as any) = () => ({ toString: () => "sel" }); const { container } = render( ); @@ -62,7 +62,7 @@ describe("MyStreamWaveMyVote", () => { it("calls onToggleCheck when checkbox clicked", () => { const onToggleCheck = jest.fn(); - (window.getSelection as any) = () => ({ toString: () => "" }); + (globalThis.getSelection as any) = () => ({ toString: () => "" }); const { container } = render(