Skip to content

Commit e76e47c

Browse files
Conrad Chanmergify[bot]
andauthored
fix(annotator): Cleanup managers on destroy (#616)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent 403d962 commit e76e47c

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

src/document/DocumentAnnotator.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export default class DocumentAnnotator extends BaseAnnotator {
3838
this.highlightListener.destroy();
3939
}
4040

41+
if (this.managers) {
42+
this.managers.forEach(managers => managers.forEach(manager => manager.destroy()));
43+
}
44+
4145
super.destroy();
4246
}
4347

src/document/__tests__/DocumentAnnotator-test.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ describe('DocumentAnnotator', () => {
9999
);
100100
expect(annotator.highlightListener?.destroy).toHaveBeenCalled();
101101
});
102+
103+
test('should destroy existing managers', () => {
104+
annotator = getAnnotator();
105+
106+
const mockManager = ({ destroy: jest.fn() } as unknown) as BaseManager;
107+
const mockManagersSet = new Set([mockManager]);
108+
annotator.managers.set(1, mockManagersSet);
109+
110+
annotator.destroy();
111+
112+
expect(mockManager.destroy).toHaveBeenCalled();
113+
});
102114
});
103115

104116
describe('event handlers', () => {
@@ -235,7 +247,7 @@ describe('DocumentAnnotator', () => {
235247

236248
describe('renderPage()', () => {
237249
test('should initialize a manager for a new page', () => {
238-
const mockManager = ({ render: jest.fn() } as unknown) as BaseManager;
250+
const mockManager = ({ destroy: jest.fn(), render: jest.fn() } as unknown) as BaseManager;
239251
const pageNumber = 1;
240252
const pageEl = getPage(pageNumber);
241253

src/image/ImageAnnotator.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ export default class ImageAnnotator extends BaseAnnotator {
2828
this.storeHandler();
2929
}
3030

31+
if (this.managers) {
32+
this.managers.forEach(manager => manager.destroy());
33+
}
34+
3135
super.destroy();
3236
}
3337

src/image/__tests__/ImageAnnotator-test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ describe('ImageAnnotator', () => {
7575

7676
expect(annotator.storeHandler).toHaveBeenCalled();
7777
});
78+
79+
test('should destroy all managers', () => {
80+
const mockManagersSet = new Set([mockManager]);
81+
annotator.managers = mockManagersSet;
82+
83+
annotator.destroy();
84+
85+
expect(mockManager.destroy).toHaveBeenCalled();
86+
});
7887
});
7988

8089
describe('getManagers()', () => {

0 commit comments

Comments
 (0)