mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Fix: handle page out of range in mgmt lists after delete (#8771)
This commit is contained in:
		@@ -2130,7 +2130,7 @@
 | 
				
			|||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">216</context>
 | 
					          <context context-type="linenumber">225</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
 | 
				
			||||||
@@ -2164,11 +2164,11 @@
 | 
				
			|||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">212</context>
 | 
					          <context context-type="linenumber">221</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">329</context>
 | 
					          <context context-type="linenumber">338</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="1373208150912772963" datatype="html">
 | 
					      <trans-unit id="1373208150912772963" datatype="html">
 | 
				
			||||||
@@ -2210,7 +2210,7 @@
 | 
				
			|||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">331</context>
 | 
					          <context context-type="linenumber">340</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context>
 | 
				
			||||||
@@ -2549,7 +2549,7 @@
 | 
				
			|||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">333</context>
 | 
					          <context context-type="linenumber">342</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context>
 | 
				
			||||||
@@ -8289,7 +8289,7 @@
 | 
				
			|||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">316</context>
 | 
					          <context context-type="linenumber">325</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="4010735610815226758" datatype="html">
 | 
					      <trans-unit id="4010735610815226758" datatype="html">
 | 
				
			||||||
@@ -8372,7 +8372,7 @@
 | 
				
			|||||||
        <source>Automatic</source>
 | 
					        <source>Automatic</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">116</context>
 | 
					          <context context-type="linenumber">117</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/data/matching-model.ts</context>
 | 
					          <context context-type="sourcefile">src/app/data/matching-model.ts</context>
 | 
				
			||||||
@@ -8383,7 +8383,7 @@
 | 
				
			|||||||
        <source>None</source>
 | 
					        <source>None</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">118</context>
 | 
					          <context context-type="linenumber">119</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/data/matching-model.ts</context>
 | 
					          <context context-type="sourcefile">src/app/data/matching-model.ts</context>
 | 
				
			||||||
@@ -8394,70 +8394,70 @@
 | 
				
			|||||||
        <source>Successfully created <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
					        <source>Successfully created <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">169</context>
 | 
					          <context context-type="linenumber">178</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="3928835053823658072" datatype="html">
 | 
					      <trans-unit id="3928835053823658072" datatype="html">
 | 
				
			||||||
        <source>Error occurred while creating <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
					        <source>Error occurred while creating <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">174</context>
 | 
					          <context context-type="linenumber">183</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="2541368547549828690" datatype="html">
 | 
					      <trans-unit id="2541368547549828690" datatype="html">
 | 
				
			||||||
        <source>Successfully updated <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
					        <source>Successfully updated <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">189</context>
 | 
					          <context context-type="linenumber">198</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="6442673774206210733" datatype="html">
 | 
					      <trans-unit id="6442673774206210733" datatype="html">
 | 
				
			||||||
        <source>Error occurred while saving <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
					        <source>Error occurred while saving <x id="PH" equiv-text="this.typeName"/>.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">194</context>
 | 
					          <context context-type="linenumber">203</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="8371896857609524947" datatype="html">
 | 
					      <trans-unit id="8371896857609524947" datatype="html">
 | 
				
			||||||
        <source>Associated documents will not be deleted.</source>
 | 
					        <source>Associated documents will not be deleted.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">214</context>
 | 
					          <context context-type="linenumber">223</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="6639207128255974941" datatype="html">
 | 
					      <trans-unit id="6639207128255974941" datatype="html">
 | 
				
			||||||
        <source>Error while deleting element</source>
 | 
					        <source>Error while deleting element</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">230</context>
 | 
					          <context context-type="linenumber">239</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="4863024195229581844" datatype="html">
 | 
					      <trans-unit id="4863024195229581844" datatype="html">
 | 
				
			||||||
        <source>Permissions updated successfully</source>
 | 
					        <source>Permissions updated successfully</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">309</context>
 | 
					          <context context-type="linenumber">318</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="1464476612812630086" datatype="html">
 | 
					      <trans-unit id="1464476612812630086" datatype="html">
 | 
				
			||||||
        <source>This operation will permanently delete all objects.</source>
 | 
					        <source>This operation will permanently delete all objects.</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">330</context>
 | 
					          <context context-type="linenumber">339</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="5897787932098828336" datatype="html">
 | 
					      <trans-unit id="5897787932098828336" datatype="html">
 | 
				
			||||||
        <source>Objects deleted successfully</source>
 | 
					        <source>Objects deleted successfully</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">344</context>
 | 
					          <context context-type="linenumber">353</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="8273353839648035634" datatype="html">
 | 
					      <trans-unit id="8273353839648035634" datatype="html">
 | 
				
			||||||
        <source>Error deleting objects</source>
 | 
					        <source>Error deleting objects</source>
 | 
				
			||||||
        <context-group purpose="location">
 | 
					        <context-group purpose="location">
 | 
				
			||||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
					          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
				
			||||||
          <context context-type="linenumber">350</context>
 | 
					          <context context-type="linenumber">359</context>
 | 
				
			||||||
        </context-group>
 | 
					        </context-group>
 | 
				
			||||||
      </trans-unit>
 | 
					      </trans-unit>
 | 
				
			||||||
      <trans-unit id="1930477323485553035" datatype="html">
 | 
					      <trans-unit id="1930477323485553035" datatype="html">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,9 @@
 | 
				
			|||||||
import { DatePipe } from '@angular/common'
 | 
					import { DatePipe } from '@angular/common'
 | 
				
			||||||
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
 | 
					import {
 | 
				
			||||||
 | 
					  HttpErrorResponse,
 | 
				
			||||||
 | 
					  provideHttpClient,
 | 
				
			||||||
 | 
					  withInterceptorsFromDi,
 | 
				
			||||||
 | 
					} from '@angular/common/http'
 | 
				
			||||||
import { provideHttpClientTesting } from '@angular/common/http/testing'
 | 
					import { provideHttpClientTesting } from '@angular/common/http/testing'
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  ComponentFixture,
 | 
					  ComponentFixture,
 | 
				
			||||||
@@ -243,6 +247,21 @@ describe('ManagementListComponent', () => {
 | 
				
			|||||||
    expect(reloadSpy).toHaveBeenCalled()
 | 
					    expect(reloadSpy).toHaveBeenCalled()
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should fall back to first page if error is page is out of range', () => {
 | 
				
			||||||
 | 
					    jest.spyOn(tagService, 'listFiltered').mockReturnValueOnce(
 | 
				
			||||||
 | 
					      throwError(
 | 
				
			||||||
 | 
					        () =>
 | 
				
			||||||
 | 
					          new HttpErrorResponse({
 | 
				
			||||||
 | 
					            status: 404,
 | 
				
			||||||
 | 
					            error: { detail: 'Invalid page' },
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    component.page = 2
 | 
				
			||||||
 | 
					    component.reloadData()
 | 
				
			||||||
 | 
					    expect(component.page).toEqual(1)
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should support toggle all items in view', () => {
 | 
					  it('should support toggle all items in view', () => {
 | 
				
			||||||
    expect(component.selectedObjects.size).toEqual(0)
 | 
					    expect(component.selectedObjects.size).toEqual(0)
 | 
				
			||||||
    const toggleAllSpy = jest.spyOn(component, 'toggleAll')
 | 
					    const toggleAllSpy = jest.spyOn(component, 'toggleAll')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import { HttpErrorResponse } from '@angular/common/http'
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  Directive,
 | 
					  Directive,
 | 
				
			||||||
  OnDestroy,
 | 
					  OnDestroy,
 | 
				
			||||||
@@ -152,9 +153,17 @@ export abstract class ManagementListComponent<T extends ObjectWithId>
 | 
				
			|||||||
        }),
 | 
					        }),
 | 
				
			||||||
        delay(100)
 | 
					        delay(100)
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
      .subscribe(() => {
 | 
					      .subscribe({
 | 
				
			||||||
 | 
					        error: (error: HttpErrorResponse) => {
 | 
				
			||||||
 | 
					          if (error.error?.detail?.includes('Invalid page')) {
 | 
				
			||||||
 | 
					            this.page = 1
 | 
				
			||||||
 | 
					            this.reloadData()
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        next: () => {
 | 
				
			||||||
          this.show = true
 | 
					          this.show = true
 | 
				
			||||||
          this.loading = false
 | 
					          this.loading = false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user