@@ -7,7 +7,7 @@ export default class WebContentsEventContainer {
7
7
/**
8
8
* Контейнер событий.
9
9
*/
10
- private container = { } as {
10
+ private containers = { } as {
11
11
/**
12
12
* Название события.
13
13
*/
@@ -30,8 +30,7 @@ export default class WebContentsEventContainer {
30
30
* @param sender - Отправитель.
31
31
*/
32
32
public addOn ( event : string , sender : WebContents ) : void {
33
- this . addEvent ( event )
34
- this . container [ event ] . on . push ( sender )
33
+ this . addEvent ( event ) . on . push ( sender )
35
34
}
36
35
37
36
/**
@@ -40,8 +39,7 @@ export default class WebContentsEventContainer {
40
39
* @param sender - Отправитель.
41
40
*/
42
41
public addOnce ( event : string , sender : WebContents ) : void {
43
- this . addEvent ( event )
44
- this . container [ event ] . once . push ( sender )
42
+ this . addEvent ( event ) . once . push ( sender )
45
43
}
46
44
47
45
/**
@@ -50,7 +48,7 @@ export default class WebContentsEventContainer {
50
48
* @returns многоразовые отправители для события.
51
49
*/
52
50
public getOn ( event : string ) : WebContents [ ] {
53
- return this . getEvent ( event ) . on . filter ( sender => ! sender . isDestroyed ( ) )
51
+ return this . addEvent ( event ) . on
54
52
}
55
53
56
54
/**
@@ -59,7 +57,7 @@ export default class WebContentsEventContainer {
59
57
* @returns Одноразовые отправители для события.
60
58
*/
61
59
public getOnce ( event : string ) : WebContents [ ] {
62
- return this . getEvent ( event ) . once . filter ( sender => ! sender . isDestroyed ( ) )
60
+ return this . addEvent ( event ) . once
63
61
}
64
62
65
63
/**
@@ -68,35 +66,30 @@ export default class WebContentsEventContainer {
68
66
* @returns Отправители для события.
69
67
*/
70
68
public getAll ( event : string ) : WebContents [ ] {
71
- const senders = this . getEvent ( event )
69
+ const container = this . addEvent ( event )
72
70
73
- return [ ...senders . on , ...senders . once ]
71
+ return [ ...container . on , ...container . once ]
74
72
}
75
73
76
74
/**
77
75
* Удалить одноразовых отправителей для события.
78
76
* @param event - Имя события.
79
77
*/
80
78
public clearOnce ( event : string ) : void {
81
- this . getEvent ( event ) . once = [ ]
79
+ this . addEvent ( event ) . once = [ ]
82
80
}
83
81
84
82
/**
85
83
* Добавить контейнер события.
86
84
* @param name - Имя события.
85
+ * @returns Добавленный контейнер.
87
86
*/
88
- private addEvent ( name : string ) : void {
89
- this . container [ name ] ??= { on : [ ] , once : [ ] }
90
- }
91
-
92
- /**
93
- * Получить контейнер события.
94
- * @param name - Имя события.
95
- * @returns Контейнер события.
96
- */
97
- private getEvent ( name : string ) : ( typeof this . container ) [ string ] {
98
- this . addEvent ( name )
87
+ private addEvent ( name : string ) : ( typeof this . containers ) [ string ] {
88
+ const container = this . containers [ name ] ??= { on : [ ] , once : [ ] }
99
89
100
- return this . container [ name ]
90
+ return this . containers [ name ] = {
91
+ on : container . on . filter ( item => ! item . isDestroyed ( ) ) ,
92
+ once : container . once . filter ( item => ! item . isDestroyed ( ) ) ,
93
+ }
101
94
}
102
95
}
0 commit comments