mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05: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 purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context> | ||||
| @@ -2164,11 +2164,11 @@ | ||||
|         </context-group> | ||||
|         <context-group purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="1373208150912772963" datatype="html"> | ||||
| @@ -2210,7 +2210,7 @@ | ||||
|         </context-group> | ||||
|         <context-group purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context> | ||||
| @@ -2549,7 +2549,7 @@ | ||||
|         </context-group> | ||||
|         <context-group purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.ts</context> | ||||
| @@ -8289,7 +8289,7 @@ | ||||
|         </context-group> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="4010735610815226758" datatype="html"> | ||||
| @@ -8372,7 +8372,7 @@ | ||||
|         <source>Automatic</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <context context-type="sourcefile">src/app/data/matching-model.ts</context> | ||||
| @@ -8383,7 +8383,7 @@ | ||||
|         <source>None</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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 purpose="location"> | ||||
|           <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> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="3928835053823658072" datatype="html"> | ||||
|         <source>Error occurred while creating <x id="PH" equiv-text="this.typeName"/>.</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="2541368547549828690" datatype="html"> | ||||
|         <source>Successfully updated <x id="PH" equiv-text="this.typeName"/>.</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="6442673774206210733" datatype="html"> | ||||
|         <source>Error occurred while saving <x id="PH" equiv-text="this.typeName"/>.</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="8371896857609524947" datatype="html"> | ||||
|         <source>Associated documents will not be deleted.</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="6639207128255974941" datatype="html"> | ||||
|         <source>Error while deleting element</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="4863024195229581844" datatype="html"> | ||||
|         <source>Permissions updated successfully</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="1464476612812630086" datatype="html"> | ||||
|         <source>This operation will permanently delete all objects.</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="5897787932098828336" datatype="html"> | ||||
|         <source>Objects deleted successfully</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="8273353839648035634" datatype="html"> | ||||
|         <source>Error deleting objects</source> | ||||
|         <context-group purpose="location"> | ||||
|           <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> | ||||
|       </trans-unit> | ||||
|       <trans-unit id="1930477323485553035" datatype="html"> | ||||
|   | ||||
| @@ -1,5 +1,9 @@ | ||||
| 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 { | ||||
|   ComponentFixture, | ||||
| @@ -243,6 +247,21 @@ describe('ManagementListComponent', () => { | ||||
|     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', () => { | ||||
|     expect(component.selectedObjects.size).toEqual(0) | ||||
|     const toggleAllSpy = jest.spyOn(component, 'toggleAll') | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| import { HttpErrorResponse } from '@angular/common/http' | ||||
| import { | ||||
|   Directive, | ||||
|   OnDestroy, | ||||
| @@ -152,9 +153,17 @@ export abstract class ManagementListComponent<T extends ObjectWithId> | ||||
|         }), | ||||
|         delay(100) | ||||
|       ) | ||||
|       .subscribe(() => { | ||||
|         this.show = true | ||||
|         this.loading = false | ||||
|       .subscribe({ | ||||
|         error: (error: HttpErrorResponse) => { | ||||
|           if (error.error?.detail?.includes('Invalid page')) { | ||||
|             this.page = 1 | ||||
|             this.reloadData() | ||||
|           } | ||||
|         }, | ||||
|         next: () => { | ||||
|           this.show = true | ||||
|           this.loading = false | ||||
|         }, | ||||
|       }) | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon