@@ -24,15 +24,19 @@ exports.pushMessage = function(event) {
2424 if ( event . t === "add" ) {
2525 if ( event . new === undefined ) event . new = true ; // Assume it should be new
2626 } else if ( event . t === "modify" ) {
27- const old = exports . getMessages ( ) . find ( m => m . id === event . id ) ;
28- if ( old ) event = Object . assign ( old , event ) ;
27+ // For music messages, don't merge with old stored message to avoid stale metadata
28+ if ( event . id !== "music" ) {
29+ const old = exports . getMessages ( ) . find ( m => m . id === event . id ) ;
30+ if ( old ) event = Object . assign ( old , event ) ;
31+ }
2932 }
3033
3134 // combine musicinfo and musicstate events
3235 if ( event . id === "music" ) {
3336 if ( event . state === "play" ) event . new = true ; // new track, or playback (re)started
37+ // Always merge new event into current music state to preserve metadata
3438 exports . music = Object . assign ( { } , exports . music , event ) ;
35- event = exports . music ;
39+ event = exports . music ; //Object.assign({}, exports.music); // emit a copy
3640 }
3741 }
3842 // reset state (just in case)
@@ -75,8 +79,16 @@ exports.apply = function(event, messages) {
7579 if ( mIdx >= 0 ) messages . splice ( mIdx , 1 ) ; // duplicate ID! erase previous version
7680 messages . unshift ( event ) ; // add at the beginning
7781 } else if ( event . t === "modify" ) {
78- if ( mIdx >= 0 ) messages [ mIdx ] = Object . assign ( messages [ mIdx ] , event ) ;
79- else messages . unshift ( event ) ;
82+ if ( mIdx >= 0 ) {
83+ // For music messages, completely replace instead of merging to avoid stale metadata
84+ if ( event . id === "music" ) {
85+ messages [ mIdx ] = event ;
86+ } else {
87+ messages [ mIdx ] = Object . assign ( messages [ mIdx ] , event ) ;
88+ }
89+ } else {
90+ messages . unshift ( event ) ;
91+ }
8092 }
8193 return messages ;
8294} ;
@@ -139,7 +151,7 @@ exports.toggleWidget = function(show) {
139151exports . write = function ( messages ) {
140152 if ( ! messages . length ) require ( "Storage" ) . erase ( "messages.json" ) ;
141153 else require ( "Storage" ) . writeJSON ( "messages.json" , messages . map ( m => {
142- // we never want to save saved/handled status to file;
154+ // we never want to save saved/handled status to file
143155 delete m . saved ;
144156 delete m . handled ;
145157 return m ;
0 commit comments