mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-04 03:27:12 -05:00 
			
		
		
		
	Fixhancement: more saved view count refreshes (#10694)
This commit is contained in:
		
							parent
							
								
									f2fabc81d4
								
							
						
					
					
						commit
						b25b15ba32
					
				@ -106,6 +106,7 @@ describe('DashboardComponent', () => {
 | 
				
			|||||||
              }),
 | 
					              }),
 | 
				
			||||||
            dashboardViews: saved_views.filter((v) => v.show_on_dashboard),
 | 
					            dashboardViews: saved_views.filter((v) => v.show_on_dashboard),
 | 
				
			||||||
            allViews: saved_views,
 | 
					            allViews: saved_views,
 | 
				
			||||||
 | 
					            setDocumentCount: jest.fn(),
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        provideHttpClient(withInterceptorsFromDi()),
 | 
					        provideHttpClient(withInterceptorsFromDi()),
 | 
				
			||||||
 | 
				
			|||||||
@ -52,6 +52,7 @@ import {
 | 
				
			|||||||
} from 'src/app/services/permissions.service'
 | 
					} from 'src/app/services/permissions.service'
 | 
				
			||||||
import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
 | 
					import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
 | 
				
			||||||
import { DocumentService } from 'src/app/services/rest/document.service'
 | 
					import { DocumentService } from 'src/app/services/rest/document.service'
 | 
				
			||||||
 | 
					import { SavedViewService } from 'src/app/services/rest/saved-view.service'
 | 
				
			||||||
import { SettingsService } from 'src/app/services/settings.service'
 | 
					import { SettingsService } from 'src/app/services/settings.service'
 | 
				
			||||||
import { WebsocketStatusService } from 'src/app/services/websocket-status.service'
 | 
					import { WebsocketStatusService } from 'src/app/services/websocket-status.service'
 | 
				
			||||||
import { WidgetFrameComponent } from '../widget-frame/widget-frame.component'
 | 
					import { WidgetFrameComponent } from '../widget-frame/widget-frame.component'
 | 
				
			||||||
@ -94,6 +95,7 @@ export class SavedViewWidgetComponent
 | 
				
			|||||||
  permissionsService = inject(PermissionsService)
 | 
					  permissionsService = inject(PermissionsService)
 | 
				
			||||||
  private settingsService = inject(SettingsService)
 | 
					  private settingsService = inject(SettingsService)
 | 
				
			||||||
  private customFieldService = inject(CustomFieldsService)
 | 
					  private customFieldService = inject(CustomFieldsService)
 | 
				
			||||||
 | 
					  private savedViewService = inject(SavedViewService)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public DisplayMode = DisplayMode
 | 
					  public DisplayMode = DisplayMode
 | 
				
			||||||
  public DisplayField = DisplayField
 | 
					  public DisplayField = DisplayField
 | 
				
			||||||
@ -181,6 +183,7 @@ export class SavedViewWidgetComponent
 | 
				
			|||||||
          this.show = true
 | 
					          this.show = true
 | 
				
			||||||
          this.documents = result.results
 | 
					          this.documents = result.results
 | 
				
			||||||
          this.count = result.count
 | 
					          this.count = result.count
 | 
				
			||||||
 | 
					          this.savedViewService.setDocumentCount(this.savedView, result.count)
 | 
				
			||||||
        }),
 | 
					        }),
 | 
				
			||||||
        delay(500)
 | 
					        delay(500)
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
 | 
				
			|||||||
@ -199,6 +199,14 @@ describe('DocumentListComponent', () => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    const queryParams = { id: view.id.toString() }
 | 
					    const queryParams = { id: view.id.toString() }
 | 
				
			||||||
    const getSavedViewSpy = jest.spyOn(savedViewService, 'getCached')
 | 
					    const getSavedViewSpy = jest.spyOn(savedViewService, 'getCached')
 | 
				
			||||||
 | 
					    const setCountSpy = jest.spyOn(savedViewService, 'setDocumentCount')
 | 
				
			||||||
 | 
					    jest.spyOn(documentService, 'listFiltered').mockReturnValue(
 | 
				
			||||||
 | 
					      of({
 | 
				
			||||||
 | 
					        results: docs,
 | 
				
			||||||
 | 
					        count: 3,
 | 
				
			||||||
 | 
					        all: docs.map((d) => d.id),
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    getSavedViewSpy.mockReturnValue(of(view))
 | 
					    getSavedViewSpy.mockReturnValue(of(view))
 | 
				
			||||||
    const activateSavedViewSpy = jest.spyOn(
 | 
					    const activateSavedViewSpy = jest.spyOn(
 | 
				
			||||||
      documentListService,
 | 
					      documentListService,
 | 
				
			||||||
@ -215,6 +223,7 @@ describe('DocumentListComponent', () => {
 | 
				
			|||||||
      view,
 | 
					      view,
 | 
				
			||||||
      convertToParamMap(queryParams)
 | 
					      convertToParamMap(queryParams)
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					    expect(setCountSpy).toHaveBeenCalledWith(view, 3)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should 404 on load saved view from URL if no view', () => {
 | 
					  it('should 404 on load saved view from URL if no view', () => {
 | 
				
			||||||
@ -248,6 +257,34 @@ describe('DocumentListComponent', () => {
 | 
				
			|||||||
    expect(getSavedViewSpy).toHaveBeenCalledWith(view.id)
 | 
					    expect(getSavedViewSpy).toHaveBeenCalledWith(view.id)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should update saved view document count on load saved view from query params', () => {
 | 
				
			||||||
 | 
					    jest.spyOn(savedViewService, 'getCached').mockReturnValue(
 | 
				
			||||||
 | 
					      of({
 | 
				
			||||||
 | 
					        id: 10,
 | 
				
			||||||
 | 
					        sort_field: 'added',
 | 
				
			||||||
 | 
					        sort_reverse: true,
 | 
				
			||||||
 | 
					        filter_rules: [],
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    jest.spyOn(documentService, 'listFiltered').mockReturnValue(
 | 
				
			||||||
 | 
					      of({
 | 
				
			||||||
 | 
					        results: docs,
 | 
				
			||||||
 | 
					        count: 3,
 | 
				
			||||||
 | 
					        all: docs.map((d) => d.id),
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    const setCountSpy = jest.spyOn(savedViewService, 'setDocumentCount')
 | 
				
			||||||
 | 
					    jest.spyOn(documentService, 'listFiltered').mockReturnValue(
 | 
				
			||||||
 | 
					      of({
 | 
				
			||||||
 | 
					        results: docs,
 | 
				
			||||||
 | 
					        count: 3,
 | 
				
			||||||
 | 
					        all: docs.map((d) => d.id),
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    component.loadViewConfig(10)
 | 
				
			||||||
 | 
					    expect(setCountSpy).toHaveBeenCalledWith(expect.any(Object), 3)
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should support 3 different display modes', () => {
 | 
					  it('should support 3 different display modes', () => {
 | 
				
			||||||
    jest.spyOn(documentListService, 'documents', 'get').mockReturnValue(docs)
 | 
					    jest.spyOn(documentListService, 'documents', 'get').mockReturnValue(docs)
 | 
				
			||||||
    fixture.detectChanges()
 | 
					    fixture.detectChanges()
 | 
				
			||||||
 | 
				
			|||||||
@ -264,7 +264,9 @@ export class DocumentListComponent
 | 
				
			|||||||
          view,
 | 
					          view,
 | 
				
			||||||
          convertToParamMap(this.route.snapshot.queryParams)
 | 
					          convertToParamMap(this.route.snapshot.queryParams)
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        this.list.reload()
 | 
					        this.list.reload(() => {
 | 
				
			||||||
 | 
					          this.savedViewService.setDocumentCount(view, this.list.collectionSize)
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
        this.updateDisplayCustomFields()
 | 
					        this.updateDisplayCustomFields()
 | 
				
			||||||
        this.unmodifiedFilterRules = view.filter_rules
 | 
					        this.unmodifiedFilterRules = view.filter_rules
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
@ -399,7 +401,9 @@ export class DocumentListComponent
 | 
				
			|||||||
      .subscribe((view) => {
 | 
					      .subscribe((view) => {
 | 
				
			||||||
        this.unmodifiedSavedView = view
 | 
					        this.unmodifiedSavedView = view
 | 
				
			||||||
        this.list.activateSavedView(view)
 | 
					        this.list.activateSavedView(view)
 | 
				
			||||||
        this.list.reload()
 | 
					        this.list.reload(() => {
 | 
				
			||||||
 | 
					          this.savedViewService.setDocumentCount(view, this.list.collectionSize)
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -140,11 +140,15 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
        .pipe(takeUntil(this.unsubscribeNotifier))
 | 
					        .pipe(takeUntil(this.unsubscribeNotifier))
 | 
				
			||||||
        .subscribe((results: Results<Document>) => {
 | 
					        .subscribe((results: Results<Document>) => {
 | 
				
			||||||
          this.savedViewDocumentCounts.set(view.id, results.count)
 | 
					          this.setDocumentCount(view, results.count)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public setDocumentCount(view: SavedView, count: number) {
 | 
				
			||||||
 | 
					    this.savedViewDocumentCounts.set(view.id, count)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public getDocumentCount(view: SavedView): number {
 | 
					  public getDocumentCount(view: SavedView): number {
 | 
				
			||||||
    return this.savedViewDocumentCounts.get(view.id)
 | 
					    return this.savedViewDocumentCounts.get(view.id)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user