@@ -797,29 +797,21 @@ export async function bulkLoad(fields = [], usr = null, pwd = null, isAdmin = fa
797797 var updatedBulkLoad = { } ;
798798 for ( const table in fetchedBulkLoad ) {
799799 if ( table === 'asOf' || table === 'syncDeleted' ) continue ;
800- if ( storage . get ( ( isAdmin || isTA ) ? "lastAdminBulkLoad" : "lastBulkLoad" ) || null ) {
801- var deletedData ;
802- var existingData ;
803- var mergedData ;
804- if ( ! Array . isArray ( fetchedBulkLoad [ table ] || [ ] ) ) {
805- updatedBulkLoad [ table ] = fetchedBulkLoad [ table ] ;
806- continue ;
807- }
808- deletedData = fetchedBulkLoad . syncDeleted ?. [ table ] || [ ] ;
809- const cacheObj = ( await storage . idbGet ( ( isAdmin || isTA ) ? "adminCache" : "cache" ) ) || storage . get ( ( isAdmin || isTA ) ? "adminCache" : "cache" ) || { } ;
810- existingData = ( Array . isArray ( cacheObj [ table ] ) ? cacheObj [ table ] : [ ] ) . filter ( item => {
811- return ! deletedData . includes ( String ( item . id || item . seatCode || item . period || item . key || item . username || 0 ) ) ;
800+ const currentCacheKey = ( isAdmin || isTA ) ? "adminCache" : "cache" ;
801+ const lastBulkLoadKey = ( isAdmin || isTA ) ? "lastAdminBulkLoad" : "lastBulkLoad" ;
802+ if ( storage . get ( lastBulkLoadKey ) ) {
803+ let deletedData = fetchedBulkLoad . syncDeleted ?. [ table ] || [ ] ;
804+ const cacheObj = ( await storage . idbGet ( currentCacheKey ) ) || storage . get ( currentCacheKey ) || { } ;
805+ const deletedSet = new Set ( deletedData . map ( item => String ( item . id || item . seatCode || item . period || item . key || item . username || 0 ) ) ) ;
806+ const existingData = Array . isArray ( cacheObj [ table ] ) ? cacheObj [ table ] . filter ( item => ! deletedSet . has ( String ( item . id || item . seatCode || item . period || item . key || item . username || 0 ) ) ) : [ ] ;
807+ const mergedMap = { } ;
808+ existingData . forEach ( item => {
809+ mergedMap [ String ( item . id || item . seatCode || item . period || item . key || item . username || 0 ) ] = item ;
812810 } ) ;
813- mergedData = [ ...existingData ] ;
814811 ( fetchedBulkLoad [ table ] || [ ] ) . forEach ( newItem => {
815- const index = mergedData . findIndex ( item => String ( item . id || item . seatCode || item . period || item . key || item . username || 0 ) === String ( newItem . id || newItem . seatCode || newItem . period || newItem . key || newItem . username || 0 ) ) ;
816- if ( index !== - 1 ) {
817- mergedData [ index ] = newItem ;
818- } else {
819- mergedData . push ( newItem ) ;
820- }
812+ mergedMap [ String ( newItem . id || newItem . seatCode || newItem . period || newItem . key || newItem . username || 0 ) ] = newItem ;
821813 } ) ;
822- updatedBulkLoad [ table ] = mergedData ;
814+ updatedBulkLoad [ table ] = Object . values ( mergedMap ) ;
823815 } else {
824816 updatedBulkLoad [ table ] = fetchedBulkLoad [ table ] ;
825817 }
0 commit comments