diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx
index cde6ae68c..a5646328a 100644
--- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx
+++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx
@@ -121,9 +121,9 @@ function LargeHeaderLayout(props: LibraryHeaderProps): JSX.Element {
...headerControlWidths(props.layout, props.multiSelectMode),
}}
>
- {props.multiSelectMode !== 'off' ? (
+ {props.multiSelectMode !== 'off' && (
<>
-
+
>
) : (
diff --git a/packages/web/components/templates/homeFeed/MultiSelectControls.tsx b/packages/web/components/templates/homeFeed/MultiSelectControls.tsx
index 9e4dd63df..cba922d4a 100644
--- a/packages/web/components/templates/homeFeed/MultiSelectControls.tsx
+++ b/packages/web/components/templates/homeFeed/MultiSelectControls.tsx
@@ -14,10 +14,13 @@ import { HeaderCheckboxIcon } from '../../elements/icons/HeaderCheckboxIcon'
import { Label } from '../../../lib/networking/fragments/labelFragment'
import { MarkAsReadIcon } from '../../elements/icons/MarkAsReadIcon'
import { UserBasicData } from '../../../lib/networking/queries/useGetViewerQuery'
+import { UnarchiveIcon } from '../../elements/icons/UnarchiveIcon'
+import { MoveToInboxIcon } from '../../elements/icons/MoveToInboxIcon'
export type MultiSelectProps = {
viewer: UserBasicData | undefined
+ folder: string
searchTerm: string | undefined
applySearchQuery: (searchQuery: string) => void
@@ -126,9 +129,14 @@ export const MultiSelectControls = (props: MultiSelectProps): JSX.Element => {
>
{props.numItemsSelected} items
-
+ {props.folder !== 'archive' && }
-
+ {props.folder == 'subscriptions' && (
+
+ )}
+ {props.folder !== 'trash' && (
+
+ )}
{showConfirmDelete && (
{
)
}
+export const MoveToLibraryButton = (props: MultiSelectProps): JSX.Element => {
+ const [color, setColor] = useState(
+ theme.colors.thTextContrast2.toString()
+ )
+ return (
+
+ )
+}
+
type AddLabelsButtonProps = {
setShowLabelsModal: (set: boolean) => void
}
diff --git a/packages/web/components/templates/library/LibraryContainer.tsx b/packages/web/components/templates/library/LibraryContainer.tsx
index d3bcd9994..32de315d4 100644
--- a/packages/web/components/templates/library/LibraryContainer.tsx
+++ b/packages/web/components/templates/library/LibraryContainer.tsx
@@ -801,12 +801,18 @@ export function LibraryContainer(props: LibraryContainerProps): JSX.Element {
: `includes:${checkedItems.join(',')}`
const expectedCount = checkedItems.length
+ let bulkArguments = undefined
+ if (action == BulkAction.MOVE_TO_FOLDER) {
+ bulkArguments = { folder: 'inbox ' }
+ }
+
try {
const res = await bulkAction.mutateAsync({
action,
query,
expectedCount,
labelIds,
+ arguments: bulkArguments,
})
if (res) {
let successMessage: string | undefined = undefined
@@ -823,6 +829,9 @@ export function LibraryContainer(props: LibraryContainerProps): JSX.Element {
case BulkAction.MARK_AS_READ:
successMessage = 'Items marked as read'
break
+ case BulkAction.MOVE_TO_FOLDER:
+ successMessage = 'Items moved to library'
+ break
}
if (successMessage) {
showSuccessToast(successMessage, { position: 'bottom-right' })
@@ -1012,6 +1021,7 @@ function HomeFeedGrid(props: HomeFeedContentProps): JSX.Element {
>
void
+ folder: string
searchTerm: string | undefined
applySearchQuery: (searchQuery: string) => void
@@ -250,26 +251,28 @@ export function SearchBox(props: SearchBoxProps): JSX.Element {
distribution="start"
css={{ width: '100%', height: '100%' }}
>
-
-
-
+ {props.folder !== 'trash' && (
+
+
+
+ )}
{
query: string
expectedCount: number
labelIds?: string[]
+ arguments?: any
}) => {
const result = (await gqlFetcher(GQL_BULK_ACTION, {
...variables,
@@ -661,6 +662,7 @@ export enum BulkAction {
DELETE = 'DELETE',
ADD_LABELS = 'ADD_LABELS',
MARK_AS_READ = 'MARK_AS_READ',
+ MOVE_TO_FOLDER = 'MOVE_TO_FOLDER',
}
type BulkActionResult = {
diff --git a/packages/web/lib/toastHelpers.tsx b/packages/web/lib/toastHelpers.tsx
index 5f0157cb2..b73806f84 100644
--- a/packages/web/lib/toastHelpers.tsx
+++ b/packages/web/lib/toastHelpers.tsx
@@ -114,6 +114,8 @@ const showToastWithAction = (
action: () => Promise,
options?: ToastOptions
) => {
+ console.trace('show success: ', message)
+
return toast(
({ id }) => (
@@ -124,7 +126,6 @@ const showToastWithAction = (
style="ctaLightGray"
onClick={(event) => {
event.preventDefault()
-
toast.dismiss(id)
;(async () => {
await action()