From 08a4126f00e3b8cce0841371161c14665d6debeb Mon Sep 17 00:00:00 2001 From: Justin Maximillian Kimlim Date: Sun, 14 Apr 2024 14:55:11 +0700 Subject: [PATCH] feat: bulk mark as read action --- .../elements/icons/MarkAsReadIcon.tsx | 39 +++++++++++++++++++ .../templates/homeFeed/HomeFeedContainer.tsx | 4 ++ .../homeFeed/MultiSelectControls.tsx | 37 ++++++++++++++++++ .../mutations/bulkActionMutation.ts | 1 + 4 files changed, 81 insertions(+) create mode 100644 packages/web/components/elements/icons/MarkAsReadIcon.tsx diff --git a/packages/web/components/elements/icons/MarkAsReadIcon.tsx b/packages/web/components/elements/icons/MarkAsReadIcon.tsx new file mode 100644 index 000000000..bb951b35d --- /dev/null +++ b/packages/web/components/elements/icons/MarkAsReadIcon.tsx @@ -0,0 +1,39 @@ +/* eslint-disable functional/no-class */ +/* eslint-disable functional/no-this-expression */ +import { IconProps } from './IconProps' + +import React from 'react' + +export class MarkAsReadIcon extends React.Component { + render() { + const size = (this.props.size || 26).toString() + const color = (this.props.color || '#2A2A2A').toString() + // tick letters button + return ( + + + + + + + ) + } +} diff --git a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx index 2eb4bef6b..cc6014c41 100644 --- a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx +++ b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx @@ -761,6 +761,7 @@ export function HomeFeedContainer(): JSX.Element { ) if (res) { let successMessage: string | undefined = undefined + console.log(action) switch (action) { case BulkAction.ARCHIVE: successMessage = 'Link Archived' @@ -771,6 +772,9 @@ export function HomeFeedContainer(): JSX.Element { case BulkAction.DELETE: successMessage = 'Items deleted' break + case BulkAction.MARK_AS_READ: + successMessage = 'Items marked as read' + break } if (successMessage) { showSuccessToast(successMessage, { position: 'bottom-right' }) diff --git a/packages/web/components/templates/homeFeed/MultiSelectControls.tsx b/packages/web/components/templates/homeFeed/MultiSelectControls.tsx index 987889182..e1cbb2113 100644 --- a/packages/web/components/templates/homeFeed/MultiSelectControls.tsx +++ b/packages/web/components/templates/homeFeed/MultiSelectControls.tsx @@ -12,6 +12,7 @@ import { X } from 'phosphor-react' import { LibraryHeaderProps } from './LibraryHeader' import { HeaderCheckboxIcon } from '../../elements/icons/HeaderCheckboxIcon' import { Label } from '../../../lib/networking/fragments/labelFragment' +import { MarkAsReadIcon } from '../../elements/icons/MarkAsReadIcon' export const MultiSelectControls = (props: LibraryHeaderProps): JSX.Element => { const [showConfirmDelete, setShowConfirmDelete] = useState(false) @@ -114,6 +115,7 @@ export const MultiSelectControls = (props: LibraryHeaderProps): JSX.Element => { + {showConfirmDelete && ( { ) } +export const MarkAsReadButton = (props: LibraryHeaderProps): JSX.Element => { + const [color, setColor] = useState( + theme.colors.thTextContrast2.toString() + ) + return ( + + ) +} + type AddLabelsButtonProps = { setShowLabelsModal: (set: boolean) => void } diff --git a/packages/web/lib/networking/mutations/bulkActionMutation.ts b/packages/web/lib/networking/mutations/bulkActionMutation.ts index 71d02a281..fd02e66c0 100644 --- a/packages/web/lib/networking/mutations/bulkActionMutation.ts +++ b/packages/web/lib/networking/mutations/bulkActionMutation.ts @@ -5,6 +5,7 @@ export enum BulkAction { ARCHIVE = 'ARCHIVE', DELETE = 'DELETE', ADD_LABELS = 'ADD_LABELS', + MARK_AS_READ = 'MARK_AS_READ', } type BulkActionResponseData = {