@@ -53,7 +53,26 @@ export function InquiryProvider({ children }: { children: React.ReactNode }) {
5353
5454 try {
5555 const data = await getTickets ( ) ;
56- setTickets ( data as Ticket [ ] ) ;
56+ const ticketsData = data as Ticket [ ] ;
57+ setTickets ( ticketsData ) ;
58+
59+ // Populate state from DB persistence
60+ const dbReadMessages : { [ key : string ] : string } = { } ;
61+ const dbAcknowledgedTickets : string [ ] = [ ] ;
62+
63+ ticketsData . forEach ( ( t : any ) => {
64+ if ( t . lastReadMessageId ) {
65+ dbReadMessages [ t . id ] = t . lastReadMessageId ;
66+ }
67+ if ( t . isArchived ) {
68+ dbAcknowledgedTickets . push ( t . id ) ;
69+ }
70+ } ) ;
71+
72+ // Merge with local state to avoid race conditions/glitches, prioritizing DB if present
73+ setReadMessages ( prev => ( { ...prev , ...dbReadMessages } ) ) ;
74+ setAcknowledgedTickets ( prev => Array . from ( new Set ( [ ...prev , ...dbAcknowledgedTickets ] ) ) ) ;
75+
5776 } catch ( error ) {
5877 console . error ( 'Failed to fetch tickets in context:' , error ) ;
5978 } finally {
@@ -89,17 +108,28 @@ export function InquiryProvider({ children }: { children: React.ReactNode }) {
89108 }
90109 } , [ isLoaded , isSignedIn , fetchTickets ] ) ;
91110
92- const markAsRead = ( ticketId : string , messageId : string ) => {
111+ const markAsRead = async ( ticketId : string , messageId : string ) => {
112+ // Optimistic update
93113 const next = { ...readMessages , [ ticketId ] : messageId } ;
94114 setReadMessages ( next ) ;
95115 localStorage . setItem ( 'krishnasagar_read_messages' , JSON . stringify ( next ) ) ;
116+
117+ // Server update
118+ // Dynamically import to avoid circular dependency issues if any
119+ const { updateTicketReadStatus } = await import ( '@/actions/tickets' ) ;
120+ await updateTicketReadStatus ( ticketId , messageId ) ;
96121 } ;
97122
98- const acknowledgeTicket = ( ticketId : string ) => {
123+ const acknowledgeTicket = async ( ticketId : string ) => {
99124 if ( ! acknowledgedTickets . includes ( ticketId ) ) {
125+ // Optimistic update
100126 const next = [ ...acknowledgedTickets , ticketId ] ;
101127 setAcknowledgedTickets ( next ) ;
102128 localStorage . setItem ( 'krishnasagar_acknowledged_tickets' , JSON . stringify ( next ) ) ;
129+
130+ // Server update
131+ const { archiveTicket } = await import ( '@/actions/tickets' ) ;
132+ await archiveTicket ( ticketId ) ;
103133 }
104134 } ;
105135
0 commit comments