Skip to content

Commit 9f0bacd

Browse files
committed
manual pagination support for Invoke-ListMailQuarantine
1 parent 83b1303 commit 9f0bacd

1 file changed

Lines changed: 19 additions & 7 deletions

File tree

Modules/CIPPHTTP/Public/Entrypoints/HTTP Functions/Email-Exchange/Spamfilter/Invoke-ListMailQuarantine.ps1

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,27 @@ function Invoke-ListMailQuarantine {
1414

1515
try {
1616
$GraphRequest = if ($TenantFilter -ne 'AllTenants') {
17-
$Page = 1
1817
$PageSize = 1000
19-
$AllMessages = [System.Collections.Generic.List[object]]::new()
20-
do {
18+
if ($Request.Query.manualPagination -and [System.Convert]::ToBoolean($Request.Query.manualPagination)) {
19+
# Manual pagination: return one page per request. The frontend chains requests via
20+
# Metadata.nextLink, which for this endpoint is the next Get-QuarantineMessage page number.
21+
$Page = if ($Request.Query.nextLink -match '^\d+$') { [int]$Request.Query.nextLink } else { 1 }
2122
$Results = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Get-QuarantineMessage' -cmdParams @{ PageSize = $PageSize; Page = $Page } | Select-Object -ExcludeProperty *data.type*
22-
if ($Results) { $AllMessages.AddRange(@($Results)) }
23-
$Page++
24-
} while (@($Results).Count -eq $PageSize)
25-
$AllMessages
23+
# Get-QuarantineMessage supports a maximum Page of 1000
24+
if (@($Results).Count -eq $PageSize -and $Page -lt 1000) {
25+
$Metadata = [PSCustomObject]@{ nextLink = [string]($Page + 1) }
26+
}
27+
$Results
28+
} else {
29+
$Page = 1
30+
$AllMessages = [System.Collections.Generic.List[object]]::new()
31+
do {
32+
$Results = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Get-QuarantineMessage' -cmdParams @{ PageSize = $PageSize; Page = $Page } | Select-Object -ExcludeProperty *data.type*
33+
if ($Results) { $AllMessages.AddRange(@($Results)) }
34+
$Page++
35+
} while (@($Results).Count -eq $PageSize)
36+
$AllMessages
37+
}
2638
} else {
2739
$Table = Get-CIPPTable -TableName cacheQuarantineMessages
2840
$PartitionKey = 'QuarantineMessage'

0 commit comments

Comments
 (0)