From fa949cde1286f746ac2fd6bcecb3fead83c9620d Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 20 Dec 2020 09:09:22 +0100 Subject: [PATCH] Simplified onTagClick handling in ShortUrlsTable --- src/servers/Overview.tsx | 2 +- src/short-urls/ShortUrlsList.tsx | 3 +-- src/short-urls/ShortUrlsTable.tsx | 11 ++++------- src/short-urls/helpers/ShortUrlsRow.tsx | 10 +++------- test/short-urls/helpers/ShortUrlsRow.test.tsx | 4 +--- 5 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/servers/Overview.tsx b/src/servers/Overview.tsx index 03803036..892fe46e 100644 --- a/src/servers/Overview.tsx +++ b/src/servers/Overview.tsx @@ -100,7 +100,7 @@ export const Overview = ( shortUrlsList={shortUrlsList} selectedServer={selectedServer} className="mb-0" - refreshList={({ tags }) => tags?.[0] && history.push(`/server/${serverId}/list-short-urls/1?tag=${tags[0]}`)} + onTagClick={(tag) => history.push(`/server/${serverId}/list-short-urls/1?tag=${tag}`)} /> diff --git a/src/short-urls/ShortUrlsList.tsx b/src/short-urls/ShortUrlsList.tsx index 69287f81..485204dd 100644 --- a/src/short-urls/ShortUrlsList.tsx +++ b/src/short-urls/ShortUrlsList.tsx @@ -87,9 +87,8 @@ const ShortUrlsList = (ShortUrlsTable: FC) => boundToMercur orderByColumn={orderByColumn} renderOrderIcon={renderOrderIcon} selectedServer={selectedServer} - refreshList={refreshList} - shortUrlsListParams={shortUrlsListParams} shortUrlsList={shortUrlsList} + onTagClick={(tag) => refreshList({ tags: [ ...shortUrlsListParams.tags ?? [], tag ] })} /> ); diff --git a/src/short-urls/ShortUrlsTable.tsx b/src/short-urls/ShortUrlsTable.tsx index 4840ef6a..99e971a0 100644 --- a/src/short-urls/ShortUrlsTable.tsx +++ b/src/short-urls/ShortUrlsTable.tsx @@ -4,7 +4,7 @@ import classNames from 'classnames'; import { SelectedServer } from '../servers/data'; import { ShortUrlsList as ShortUrlsListState } from './reducers/shortUrlsList'; import { ShortUrlsRowProps } from './helpers/ShortUrlsRow'; -import { OrderableFields, ShortUrlsListParams } from './reducers/shortUrlsListParams'; +import { OrderableFields } from './reducers/shortUrlsListParams'; import './ShortUrlsTable.scss'; export interface ShortUrlsTableProps { @@ -12,8 +12,7 @@ export interface ShortUrlsTableProps { renderOrderIcon?: (column: OrderableFields) => ReactNode; shortUrlsList: ShortUrlsListState; selectedServer: SelectedServer; - refreshList?: (params: ShortUrlsListParams) => void; - shortUrlsListParams?: ShortUrlsListParams; + onTagClick?: (tag: string) => void; className?: string; } @@ -21,8 +20,7 @@ export const ShortUrlsTable = (ShortUrlsRow: FC) => ({ orderByColumn, renderOrderIcon, shortUrlsList, - refreshList, - shortUrlsListParams, + onTagClick, selectedServer, className, }: ShortUrlsTableProps) => { @@ -54,8 +52,7 @@ export const ShortUrlsTable = (ShortUrlsRow: FC) => ({ key={shortUrl.shortUrl} shortUrl={shortUrl} selectedServer={selectedServer} - refreshList={refreshList} - shortUrlsListParams={shortUrlsListParams} + onTagClick={onTagClick} /> )); }; diff --git a/src/short-urls/helpers/ShortUrlsRow.tsx b/src/short-urls/helpers/ShortUrlsRow.tsx index dde58c1e..1399099b 100644 --- a/src/short-urls/helpers/ShortUrlsRow.tsx +++ b/src/short-urls/helpers/ShortUrlsRow.tsx @@ -5,7 +5,6 @@ import { ExternalLink } from 'react-external-link'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCopy as copyIcon } from '@fortawesome/free-regular-svg-icons'; import CopyToClipboard from 'react-copy-to-clipboard'; -import { ShortUrlsListParams } from '../reducers/shortUrlsListParams'; import ColorGenerator from '../../utils/services/ColorGenerator'; import { StateFlagTimeout } from '../../utils/helpers/hooks'; import Tag from '../../tags/helpers/Tag'; @@ -16,8 +15,7 @@ import { ShortUrlsRowMenuProps } from './ShortUrlsRowMenu'; import './ShortUrlsRow.scss'; export interface ShortUrlsRowProps { - refreshList?: (params: ShortUrlsListParams) => void; - shortUrlsListParams?: ShortUrlsListParams; + onTagClick?: (tag: string) => void; selectedServer: SelectedServer; shortUrl: ShortUrl; } @@ -26,7 +24,7 @@ const ShortUrlsRow = ( ShortUrlsRowMenu: FC, colorGenerator: ColorGenerator, useStateFlagTimeout: StateFlagTimeout, -) => ({ shortUrl, selectedServer, refreshList, shortUrlsListParams }: ShortUrlsRowProps) => { +) => ({ shortUrl, selectedServer, onTagClick }: ShortUrlsRowProps) => { const [ copiedToClipboard, setCopiedToClipboard ] = useStateFlagTimeout(); const [ active, setActive ] = useStateFlagTimeout(false, 500); const isFirstRun = useRef(true); @@ -36,14 +34,12 @@ const ShortUrlsRow = ( return No tags; } - const selectedTags = shortUrlsListParams?.tags ?? []; - return tags.map((tag) => ( refreshList?.({ tags: [ ...selectedTags, tag ] })} + onClick={() => onTagClick?.(tag)} /> )); }; diff --git a/test/short-urls/helpers/ShortUrlsRow.test.tsx b/test/short-urls/helpers/ShortUrlsRow.test.tsx index e45640bc..c4f565a9 100644 --- a/test/short-urls/helpers/ShortUrlsRow.test.tsx +++ b/test/short-urls/helpers/ShortUrlsRow.test.tsx @@ -43,9 +43,7 @@ describe('', () => { beforeEach(() => { const ShortUrlsRow = createShortUrlsRow(ShortUrlsRowMenu, colorGenerator, useStateFlagTimeout); - wrapper = shallow( - , - ); + wrapper = shallow(); }); afterEach(() => wrapper.unmount());