feat(client): start to use a better eventemitter
This commit is contained in:
parent
0fbb106668
commit
08a195edd5
|
|
@ -9,3 +9,4 @@ readur_uploads/
|
||||||
readur_watch/
|
readur_watch/
|
||||||
test-results/
|
test-results/
|
||||||
uploads/
|
uploads/
|
||||||
|
.claude/settings.local.json
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
"@types/uuid": "^10.0.0",
|
"@types/uuid": "^10.0.0",
|
||||||
"axios": "^1.3.0",
|
"axios": "^1.3.0",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"eventemitter3": "^5.0.1",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
"react-dropzone": "^14.2.3",
|
"react-dropzone": "^14.2.3",
|
||||||
|
|
@ -2785,6 +2786,12 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/eventemitter3": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/fdir": {
|
"node_modules/fdir": {
|
||||||
"version": "6.4.6",
|
"version": "6.4.6",
|
||||||
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
"@types/uuid": "^10.0.0",
|
"@types/uuid": "^10.0.0",
|
||||||
"axios": "^1.3.0",
|
"axios": "^1.3.0",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"eventemitter3": "^5.0.1",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
"react-dropzone": "^14.2.3",
|
"react-dropzone": "^14.2.3",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { EventEmitter } from 'events';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import { SyncProgressInfo } from '../api';
|
import { SyncProgressInfo } from '../api';
|
||||||
|
|
||||||
export type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error' | 'failed';
|
export type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error' | 'failed';
|
||||||
|
|
@ -21,7 +21,7 @@ export interface SyncProgressEvents {
|
||||||
* Provides a clean interface for components to consume sync progress data
|
* Provides a clean interface for components to consume sync progress data
|
||||||
* without being coupled to WebSocket implementation details
|
* without being coupled to WebSocket implementation details
|
||||||
*/
|
*/
|
||||||
export abstract class SyncProgressManager extends EventEmitter {
|
export abstract class SyncProgressManager extends EventEmitter<keyof SyncProgressEvents> {
|
||||||
protected state: SyncProgressState = {
|
protected state: SyncProgressState = {
|
||||||
progressInfo: null,
|
progressInfo: null,
|
||||||
connectionStatus: 'disconnected',
|
connectionStatus: 'disconnected',
|
||||||
|
|
@ -30,7 +30,7 @@ export abstract class SyncProgressManager extends EventEmitter {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.setMaxListeners(20); // Prevent memory leak warnings
|
// EventEmitter3 doesn't have setMaxListeners, but it handles listeners efficiently
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue