11import type { CommentEvent , CommentSpot } from '@/lib/enhancer'
22import { type DraftStats , statsFor } from '@/lib/enhancers/draft-stats'
3+ import { logger } from '@/lib/logger'
34import type { GetTableRowsResponse , ToBackgroundMessage } from '@/lib/messages'
45import {
56 CLOSE_MESSAGE_PORT ,
@@ -36,14 +37,15 @@ export interface CommentTableRow {
3637export const openSpots = new Map < string , CommentStorage > ( )
3738
3839export function handleCommentEvent ( message : CommentEvent , sender : any ) : boolean {
40+ logger . debug ( 'received comment event' , message )
3941 if (
4042 ( message . type === 'ENHANCED' || message . type === 'DESTROYED' ) &&
4143 sender . tab ?. id &&
4244 sender . tab ?. windowId
4345 ) {
4446 if ( message . type === 'ENHANCED' ) {
4547 const commentState : CommentStorage = {
46- drafts : [ ] ,
48+ drafts : [ [ Date . now ( ) , message . draft || '' ] ] ,
4749 sentOn : null ,
4850 spot : message . spot ,
4951 tab : {
@@ -68,6 +70,7 @@ export function handlePopupMessage(
6870 sendResponse : ( response : any ) => void ,
6971) : typeof CLOSE_MESSAGE_PORT | typeof KEEP_PORT_OPEN {
7072 if ( isGetOpenSpotsMessage ( message ) ) {
73+ logger . debug ( 'received open spots message' , message )
7174 const rows : CommentTableRow [ ] = Array . from ( openSpots . values ( ) ) . map ( ( storage ) => {
7275 const [ time , content ] = storage . drafts . at ( - 1 ) !
7376 const row : CommentTableRow = {
@@ -87,6 +90,7 @@ export function handlePopupMessage(
8790 sendResponse ( response )
8891 return KEEP_PORT_OPEN
8992 } else if ( isSwitchToTabMessage ( message ) ) {
93+ logger . debug ( 'received switch tab message' , message )
9094 browser . windows
9195 . update ( message . windowId , { focused : true } )
9296 . then ( ( ) => {
@@ -97,6 +101,7 @@ export function handlePopupMessage(
97101 } )
98102 return CLOSE_MESSAGE_PORT
99103 } else {
104+ logger . error ( 'received unknown message' , message )
100105 throw new Error ( `Unhandled popup message type: ${ message ?. type || 'unknown' } ` )
101106 }
102107}
@@ -109,4 +114,16 @@ export default defineBackground(() => {
109114 return handlePopupMessage ( message , sender , sendResponse )
110115 }
111116 } )
117+
118+ browser . tabs . onRemoved . addListener ( ( tabId : number ) => {
119+ logger . debug ( 'tab removed' , { tabId } )
120+
121+ // Clean up openSpots entries for the closed tab
122+ for ( const [ key , value ] of openSpots ) {
123+ if ( tabId === value . tab . tabId ) {
124+ openSpots . delete ( key )
125+ logger . debug ( 'closed tab which contained spot' , value . spot . unique_key )
126+ }
127+ }
128+ } )
112129} )
0 commit comments