@@ -84,19 +84,21 @@ function Teach() {
8484 }
8585
8686 const roadmapData = await response . json ( ) ;
87- const storageId = roadmapData . settings ?. id || jsonId ;
87+ const settingsId = roadmapData . settings ?. id || jsonId ;
8888
89- // Check if map already exists
90- const existingMap = await db . getTeacherMap ( storageId ) ;
89+ // Check if a map with the same settings.id already exists
90+ const existingMap = await db . findTeacherMapBySettingsId ( settingsId ) ;
9191 if ( existingMap ) {
9292 // Show conflict dialog
93- setConflictData ( { storageId, roadmapData, jsonId, existingMap } ) ;
93+ setConflictData ( { storageId : existingMap . id , roadmapData, jsonId, existingMap } ) ;
9494 setShowConflictDialog ( true ) ;
9595 setLoading ( false ) ;
9696 return ;
9797 }
9898
99- await db . addTeacherMap ( storageId , roadmapData , jsonId ) ;
99+ // Generate a unique database ID
100+ const dbId = `map-${ Date . now ( ) } ` ;
101+ await db . addTeacherMap ( dbId , roadmapData , jsonId ) ;
100102 const maps = await db . getAllTeacherMaps ( ) ;
101103 setAllMaps ( maps ) ;
102104 setNewMapUrl ( '' ) ;
@@ -123,20 +125,20 @@ function Teach() {
123125 const content = e . target ?. result as string ;
124126 const json = JSON . parse ( content ) ;
125127
126- // Generate a unique ID for this uploaded map
127- const uploadId = `upload-${ Date . now ( ) } ` ;
128- const storageId = json . settings ?. id || uploadId ;
128+ const settingsId = json . settings ?. id ;
129129
130- // Check if map already exists
131- const existingMap = await db . getTeacherMap ( storageId ) ;
130+ // Check if a map with the same settings.id already exists
131+ const existingMap = settingsId ? await db . findTeacherMapBySettingsId ( settingsId ) : undefined ;
132132 if ( existingMap ) {
133133 // Show conflict dialog
134- setConflictData ( { storageId, roadmapData : json , existingMap } ) ;
134+ setConflictData ( { storageId : existingMap . id , roadmapData : json , existingMap } ) ;
135135 setShowConflictDialog ( true ) ;
136136 return ;
137137 }
138138
139- await db . addTeacherMap ( storageId , json , undefined ) ;
139+ // Generate a unique database ID
140+ const dbId = `map-${ Date . now ( ) } ` ;
141+ await db . addTeacherMap ( dbId , json , undefined ) ;
140142 const maps = await db . getAllTeacherMaps ( ) ;
141143 setAllMaps ( maps ) ;
142144 setShowAddDialog ( false ) ;
@@ -158,6 +160,7 @@ function Teach() {
158160 const handleConflictOverwrite = async ( ) => {
159161 if ( ! conflictData ) return ;
160162
163+ // Overwrite the existing map (keep same database ID)
161164 await db . addTeacherMap ( conflictData . storageId , conflictData . roadmapData , conflictData . jsonId ) ;
162165 const maps = await db . getAllTeacherMaps ( ) ;
163166 setAllMaps ( maps ) ;
@@ -170,19 +173,23 @@ function Teach() {
170173 const handleConflictNewId = async ( ) => {
171174 if ( ! conflictData ) return ;
172175
173- // Generate a new unique ID
174- const newId = `${ conflictData . storageId } -${ Date . now ( ) } ` ;
176+ // Generate a new unique database ID
177+ const newDbId = `map-${ Date . now ( ) } ` ;
178+
179+ // Generate a new settings.id to avoid conflicts
180+ const currentSettingsId = conflictData . roadmapData . settings ?. id || 'map' ;
181+ const newSettingsId = `${ currentSettingsId } -${ Date . now ( ) } ` ;
175182
176183 // Update the ID in the roadmap settings
177184 const updatedRoadmapData = {
178185 ...conflictData . roadmapData ,
179186 settings : {
180187 ...conflictData . roadmapData . settings ,
181- id : newId ,
188+ id : newSettingsId ,
182189 } ,
183190 } ;
184191
185- await db . addTeacherMap ( newId , updatedRoadmapData , conflictData . jsonId ) ;
192+ await db . addTeacherMap ( newDbId , updatedRoadmapData , conflictData . jsonId ) ;
186193 const maps = await db . getAllTeacherMaps ( ) ;
187194 setAllMaps ( maps ) ;
188195 setNewMapUrl ( '' ) ;
0 commit comments