From 2923702286257e3f19c431af74dcf9585bd3e73b Mon Sep 17 00:00:00 2001 From: Yuriy Yakym Date: Thu, 31 Jul 2025 11:34:00 +0200 Subject: [PATCH 1/5] Update Stories bulkDelete arguments Updated API endpoint accept search query as a separate param --- src/endpoints/Stories/Client.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/endpoints/Stories/Client.ts b/src/endpoints/Stories/Client.ts index 1cd6ab24..da7497b5 100644 --- a/src/endpoints/Stories/Client.ts +++ b/src/endpoints/Stories/Client.ts @@ -456,12 +456,15 @@ export function createClient(api: DeferredJobsApiClient) { await api.delete(url); } - async function bulkDelete( - selector: StoriesBulkSelector, + function bulkDelete( + options: Partial<{ + selection: StoriesBulkSelector; + query: string; + }>, ): ProgressPromise<{ records_deleted_number: number }> { - const { query } = selector; + const { selection, query } = options; return api.delete(routing.storiesUrl, { - payload: { query }, + payload: { selection, query }, }); } From 48d287d97f4fd438b44a0d746b689449519f2b55 Mon Sep 17 00:00:00 2001 From: Yuriy Yakym Date: Thu, 31 Jul 2025 12:13:09 +0200 Subject: [PATCH 2/5] Remove StoriesBulkSelector type and replace it with BulkDeletePayload --- src/types/BulkDeletePayload.ts | 6 ++++++ src/types/StoriesBulkSelector.ts | 5 ----- src/types/index.ts | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/types/BulkDeletePayload.ts delete mode 100644 src/types/StoriesBulkSelector.ts diff --git a/src/types/BulkDeletePayload.ts b/src/types/BulkDeletePayload.ts new file mode 100644 index 00000000..4749116b --- /dev/null +++ b/src/types/BulkDeletePayload.ts @@ -0,0 +1,6 @@ +import type { Query } from './common'; + +export interface BulkDeletePayload { + search?: string; + query?: Query; +} diff --git a/src/types/StoriesBulkSelector.ts b/src/types/StoriesBulkSelector.ts deleted file mode 100644 index 3448c498..00000000 --- a/src/types/StoriesBulkSelector.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { Query } from './common'; - -export interface StoriesBulkSelector { - query: Query; -} diff --git a/src/types/index.ts b/src/types/index.ts index 3ba4b377..eba1ddf4 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -39,7 +39,7 @@ export * from './SenderAddress'; export * from './SenderDomain'; export * from './Snippet'; export * from './SortOrder'; -export * from './StoriesBulkSelector'; +export * from './BulkDeletePayload'; export * from './Story'; export * from './User'; export * from './UserAccount'; From 8f14fe684f79d8701189381336da76e624ca5f0a Mon Sep 17 00:00:00 2001 From: Yuriy Yakym Date: Thu, 31 Jul 2025 12:14:10 +0200 Subject: [PATCH 3/5] Update stories bulkDelete arguments --- src/endpoints/Stories/Client.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/endpoints/Stories/Client.ts b/src/endpoints/Stories/Client.ts index da7497b5..d3a32d8d 100644 --- a/src/endpoints/Stories/Client.ts +++ b/src/endpoints/Stories/Client.ts @@ -4,7 +4,7 @@ import type { DeferredJobsApiClient } from '../../api'; import { ApiError, HttpCodes } from '../../http'; import { routing } from '../../routing'; import { SortOrder } from '../../types'; -import type { ExtendedStory, Query, Story, StoriesBulkSelector } from '../../types'; +import type { BulkDeletePayload, ExtendedStory, Query, Story } from '../../types'; import type { AutosaveRequest, @@ -457,14 +457,11 @@ export function createClient(api: DeferredJobsApiClient) { } function bulkDelete( - options: Partial<{ - selection: StoriesBulkSelector; - query: string; - }>, + payload: BulkDeletePayload, ): ProgressPromise<{ records_deleted_number: number }> { - const { selection, query } = options; + const { search, query } = payload; return api.delete(routing.storiesUrl, { - payload: { selection, query }, + payload: { search, query }, }); } From 27bec024ede4076ee8021d7cf74060fef88e1900 Mon Sep 17 00:00:00 2001 From: Yuriy Yakym Date: Thu, 31 Jul 2025 12:14:56 +0200 Subject: [PATCH 4/5] Add Campaigns bulkDelete API integration --- src/endpoints/Campaigns/Client.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/endpoints/Campaigns/Client.ts b/src/endpoints/Campaigns/Client.ts index d00c9ef0..168d7266 100644 --- a/src/endpoints/Campaigns/Client.ts +++ b/src/endpoints/Campaigns/Client.ts @@ -2,7 +2,7 @@ import type { ProgressPromise } from '@prezly/progress-promise'; import type { DeferredJobsApiClient } from '../../api'; import { routing } from '../../routing'; -import type { Campaign } from '../../types'; +import type { BulkDeletePayload, Campaign } from '../../types'; import { Query, SortOrder } from '../../types'; import { toIso8601 } from '../../utils'; @@ -56,6 +56,15 @@ export function createClient(api: DeferredJobsApiClient) { return api.delete(`${routing.campaignsUrl}/${id}`); } + async function bulkDelete( + payload: BulkDeletePayload, + ): ProgressPromise<{ records_deleted_number: number }> { + const { search, query } = payload; + return api.delete(routing.campaignsUrl, { + payload: { search, query }, + }); + } + async function test(id: Campaign['id'], emails: string[]): Promise { return api.post(`${routing.campaignsUrl}/${id}/test`, { payload: { emails }, @@ -109,5 +118,6 @@ export function createClient(api: DeferredJobsApiClient) { create, update, delete: doDelete, + bulkDelete, }; } From 1be2c8e03568e4c66bb3346ed6154c0a1cdcd018 Mon Sep 17 00:00:00 2001 From: Yuriy Yakym Date: Thu, 31 Jul 2025 12:41:41 +0200 Subject: [PATCH 5/5] Fix stories bulkDelete return value --- src/endpoints/Campaigns/Client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/endpoints/Campaigns/Client.ts b/src/endpoints/Campaigns/Client.ts index 168d7266..731b62de 100644 --- a/src/endpoints/Campaigns/Client.ts +++ b/src/endpoints/Campaigns/Client.ts @@ -56,7 +56,7 @@ export function createClient(api: DeferredJobsApiClient) { return api.delete(`${routing.campaignsUrl}/${id}`); } - async function bulkDelete( + function bulkDelete( payload: BulkDeletePayload, ): ProgressPromise<{ records_deleted_number: number }> { const { search, query } = payload;