11import { debugLog } from './sleek-chat-debug.js' ;
22export class RecentMessageDisplay {
3+
4+
5+ static validateMessageIds ( ) {
6+ // Filter out any message IDs that no longer exist in the game.messages collection
7+ this . messageIds = this . messageIds . filter ( id => game . messages . has ( id ) ) ;
8+
9+ // If we filtered out messages, adjust the current index to be valid
10+ if ( this . currentMessageIndex >= this . messageIds . length ) {
11+ this . currentMessageIndex = this . messageIds . length - 1 ;
12+ }
13+
14+ // Update button states based on new array
15+ this . updateButtonStates ( ) ;
16+
17+ // If we have a valid message, display it
18+ if ( this . messageIds . length > 0 && this . currentMessageIndex >= 0 ) {
19+ this . updateRecentMessage ( this . messageIds [ this . currentMessageIndex ] ) ;
20+ } else if ( this . messageDisplay ) {
21+ // Clear the display if no valid messages remain
22+ this . messageDisplay . innerHTML = '' ;
23+ debugLog ( "RecentMessageDisplay: No valid messages to display after validation." ) ;
24+ }
25+ }
26+
27+ // Add this to the init method, after populating messageIds
328 static init ( ) {
429 debugLog ( "RecentMessageDisplay: Initializing..." ) ;
530
@@ -8,22 +33,26 @@ export class RecentMessageDisplay {
833 this . messageDisplay = this . recentMessageContainer . querySelector ( '.message-display' ) ;
934 this . prevButton = document . querySelector ( '.nav-buttons-container .prev-button' ) ;
1035 this . nextButton = document . querySelector ( '.nav-buttons-container .next-button' ) ;
11-
36+
1237 this . messageIds = [ ] ;
1338 this . currentMessageIndex = - 1 ;
14-
39+
1540 this . populateMessageIds ( ) ; // Fill the message IDs
41+
42+ // Add this line to validate messages on initialization
43+ this . validateMessageIds ( ) ;
44+
1645 this . setupNavigationButtons ( ) ;
17- this . setupDeleteFunctionality ( ) ; // Initialize delete functionality
18-
46+ this . setupDeleteFunctionality ( ) ;
47+
1948 // Display the last message at startup
2049 if ( this . messageIds . length > 0 ) {
2150 debugLog ( "RecentMessageDisplay: Displaying the last message on initialization." ) ;
2251 this . updateRecentMessage ( this . messageIds [ this . currentMessageIndex ] ) ;
2352 }
24-
53+
2554 this . hookChatLog ( ) ;
26- RecentMessageDisplay . applyFadeOutEffect ( this . recentMessageContainer ) ; // Apply the fade-out effect at startup
55+ RecentMessageDisplay . applyFadeOutEffect ( this . recentMessageContainer ) ;
2756 }
2857
2958 static populateMessageIds ( ) {
@@ -117,6 +146,16 @@ export class RecentMessageDisplay {
117146
118147 static navigateMessages ( direction ) {
119148 debugLog ( "RecentMessageDisplay: Navigating messages with direction:" , direction ) ;
149+
150+ // Validate message IDs before navigation
151+ this . validateMessageIds ( ) ;
152+
153+ // If no valid messages, don't try to navigate
154+ if ( this . messageIds . length === 0 ) {
155+ debugLog ( "RecentMessageDisplay: No valid messages to navigate." ) ;
156+ return ;
157+ }
158+
120159 this . currentMessageIndex += direction ;
121160 if ( this . currentMessageIndex < 0 ) {
122161 this . currentMessageIndex = 0 ;
0 commit comments