@@ -36,7 +36,7 @@ export class YesterdayDialog extends MarkdownRenderChild {
36
36
] ;
37
37
38
38
allSpeakers : Set < string > = new Set ( ) ;
39
- spokenYet : Set < string > = new Set ( ) ;
39
+ lastSpeakerByType : Map < string , string > = new Map ( ) ;
40
40
lastSpeaker : string = null ;
41
41
lastLineElement : HTMLLIElement = null ;
42
42
@@ -48,6 +48,8 @@ export class YesterdayDialog extends MarkdownRenderChild {
48
48
onload ( ) {
49
49
this . speakersMap . clear ( ) ;
50
50
this . allSpeakers . clear ( ) ;
51
+ this . lastSpeakerByType . clear ( ) ;
52
+
51
53
let lines = this . text . split ( "\n." ) ;
52
54
lines = lines . map ( ( entry , index ) => ( index === 0 ? entry : '.' + entry ) ) ;
53
55
@@ -93,7 +95,8 @@ export class YesterdayDialog extends MarkdownRenderChild {
93
95
if ( ! speaker ) return null ; // Skip lines without a speaker
94
96
95
97
const dialogType = this . speakersMap . get ( speaker . toLowerCase ( ) ) || "their-dialog" ;
96
- const showSpeaker = ! this . spokenYet . has ( speaker . toLowerCase ( ) ) ;
98
+ const lastSpeakerOfType = this . lastSpeakerByType . get ( dialogType ) ;
99
+ const showSpeaker = ! lastSpeakerOfType || lastSpeakerOfType !== speaker . toLowerCase ( ) ;
97
100
const hasComment = comment !== "" ;
98
101
99
102
const line = document . createElement ( "li" ) ;
@@ -129,7 +132,8 @@ export class YesterdayDialog extends MarkdownRenderChild {
129
132
130
133
statementElement . innerHTML = statement . replace ( / \n / g, "<br>" ) ;
131
134
line . appendChild ( statementElement ) ;
132
- this . spokenYet . add ( speaker . toLowerCase ( ) ) ;
135
+
136
+ this . lastSpeakerByType . set ( dialogType , speaker . toLowerCase ( ) ) ;
133
137
134
138
if ( this . lastSpeaker && this . lastSpeaker !== speaker ) {
135
139
if ( this . lastLineElement ) {
@@ -160,4 +164,4 @@ export class YesterdayDialog extends MarkdownRenderChild {
160
164
161
165
return emojiRegex . test ( str ) ;
162
166
}
163
- }
167
+ }
0 commit comments