File tree Expand file tree Collapse file tree 3 files changed +47
-17
lines changed Expand file tree Collapse file tree 3 files changed +47
-17
lines changed Original file line number Diff line number Diff line change @@ -38,6 +38,7 @@ export default function Editor() {
38
38
activeProject,
39
39
loadProject,
40
40
createNewProject,
41
+ savedProjects,
41
42
isInvalidProjectId,
42
43
markProjectIdAsInvalid,
43
44
} = useProjectStore ( ) ;
@@ -109,7 +110,27 @@ export default function Editor() {
109
110
markProjectIdAsInvalid ( projectId ) ;
110
111
111
112
try {
112
- const newProjectId = await createNewProject ( "Untitled Project" ) ;
113
+ const projectExists = savedProjects . some (
114
+ ( p ) => p . name === "Untitled Project"
115
+ ) ;
116
+ if ( ! projectExists ) {
117
+ const newProjectId = await createNewProject ( "Untitled Project" ) ;
118
+ router . replace ( `/editor/${ newProjectId } ` ) ;
119
+ return ;
120
+ }
121
+
122
+ let newProjectNumber = 2 ;
123
+ while (
124
+ savedProjects . some (
125
+ ( p ) => p . name === `Untitled Project ${ newProjectNumber } `
126
+ )
127
+ ) {
128
+ newProjectNumber ++ ;
129
+ }
130
+
131
+ const newProjectId = await createNewProject (
132
+ `Untitled Project ${ newProjectNumber } `
133
+ ) ;
113
134
114
135
// Check again if component was unmounted
115
136
if ( isCancelled ) {
@@ -146,6 +167,7 @@ export default function Editor() {
146
167
loadProject ,
147
168
createNewProject ,
148
169
router ,
170
+ savedProjects ,
149
171
isInvalidProjectId ,
150
172
markProjectIdAsInvalid ,
151
173
] ) ;
Original file line number Diff line number Diff line change @@ -90,8 +90,20 @@ export default function ProjectsPage() {
90
90
) ;
91
91
92
92
const handleCreateProject = async ( ) => {
93
- const projectId = await createNewProject ( "New Project" ) ;
94
- console . log ( "projectId" , projectId ) ;
93
+ const projectExists = savedProjects . some ( ( p ) => p . name === "New Project" ) ;
94
+ if ( ! projectExists ) {
95
+ const projectId = await createNewProject ( "New Project" ) ;
96
+ console . log ( "projectId" , projectId ) ;
97
+ router . push ( `/editor/${ projectId } ` ) ;
98
+ return ;
99
+ }
100
+
101
+ let newProjectNumber = 2 ;
102
+ while ( savedProjects . some ( ( p ) => p . name === `Project ${ newProjectNumber } ` ) ) {
103
+ newProjectNumber ++ ;
104
+ }
105
+
106
+ const projectId = await createNewProject ( `Project ${ newProjectNumber } ` ) ;
95
107
router . push ( `/editor/${ projectId } ` ) ;
96
108
} ;
97
109
Original file line number Diff line number Diff line change @@ -339,25 +339,21 @@ export const useProjectStore = create<ProjectStore>((set, get) => ({
339
339
const { savedProjects } = get ( ) ;
340
340
341
341
// Extract the base name (remove any existing numbering)
342
- const numberMatch = project . name . match ( / ^ \( ( \d + ) \) \s + ( .+ ) $ / ) ;
343
- const baseName = numberMatch ? numberMatch [ 2 ] : project . name ;
344
- const existingNumbers : number [ ] = [ ] ;
345
-
346
- // Check for pattern "(number) baseName" in existing projects
347
- savedProjects . forEach ( ( p ) => {
348
- const match = p . name . match ( / ^ \( ( \d + ) \) \s + ( .+ ) $ / ) ;
349
- if ( match && match [ 2 ] === baseName ) {
350
- existingNumbers . push ( parseInt ( match [ 1 ] , 10 ) ) ;
351
- }
352
- } ) ;
342
+ const baseName = project . name . replace ( / \( \d + \) $ / , "" ) ;
343
+ let newName = `${ baseName } (1)` ;
344
+ let counter = 1 ;
345
+
346
+ const existingNames = new Set ( savedProjects . map ( ( p ) => p . name ) ) ;
353
347
354
- const nextNumber =
355
- existingNumbers . length > 0 ? Math . max ( ...existingNumbers ) + 1 : 1 ;
348
+ while ( existingNames . has ( newName ) ) {
349
+ counter ++ ;
350
+ newName = `${ baseName } (${ counter } )` ;
351
+ }
356
352
357
353
const newProject : TProject = {
358
354
...project , // Copy all properties from the original project
359
355
id : generateUUID ( ) ,
360
- name : `( ${ nextNumber } ) ${ baseName } ` ,
356
+ name : newName ,
361
357
createdAt : new Date ( ) ,
362
358
updatedAt : new Date ( ) ,
363
359
} ;
You can’t perform that action at this time.
0 commit comments