+ {sprintf( + // translators: %d: number of snippets. + _n('%d snippet permanently deleted.', '%d snippets permanently deleted.', deletedCount, 'code-snippets'), + deletedCount + )} +
++ {sprintf( + // translators: %d: number of snippets. + _n('%d snippet will be permanently deleted.', '%d snippets will be permanently deleted.', pendingDelete?.size ?? 0, 'code-snippets'), + pendingDelete?.size ?? 0 + )} +
+{__('This action cannot be undone.', 'code-snippets')}
+CODE_SNIPPETS_SAFE_MODE constant from wp-config.php file to turn off safe mode.', 'code-snippets'),
- {
- code:
- }
- )}{'\n'}
+ {window.CODE_SNIPPETS?.safeModeRequested
+ ? createInterpolateElement(
+ __('It was turned on for this visit with snippets-safe-mode in the address. Leave safe mode.', 'code-snippets'),
+ {
+ code: ,
+ // eslint-disable-next-line jsx-a11y/anchor-has-content, jsx-a11y/control-has-associated-label
+ a:
+ }
+ )
+ : createInterpolateElement(
+ __('Remove the CODE_SNIPPETS_SAFE_MODE constant from wp-config.php file to turn off safe mode.', 'code-snippets'),
+ {
+ code:
+ }
+ )}{'\n'}
{__('Read more', 'code-snippets')}
diff --git a/src/js/components/ManageMenu/SnippetsTable/useApplyBulkAction.ts b/src/js/components/ManageMenu/SnippetsTable/useApplyBulkAction.ts
index 6fa763444..4c5735063 100644
--- a/src/js/components/ManageMenu/SnippetsTable/useApplyBulkAction.ts
+++ b/src/js/components/ManageMenu/SnippetsTable/useApplyBulkAction.ts
@@ -78,23 +78,36 @@ const submitBulkSnippetDownloadsIndividually = (snippets: readonly Snippet[]): P
Promise.resolve()
)
+/**
+ * Apply an action to each target in turn, then refresh the list.
+ *
+ * @returns The number of targets the action succeeded on.
+ */
const applyAndRefresh = async (
targets: Snippet[],
action: (snippet: Snippet) => Promise