diff --git a/package-lock.json b/package-lock.json index 6981e5308c..01009bdddc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19199,7 +19199,7 @@ }, "src/puter-js": { "name": "@heyputer/puter.js", - "version": "2.3.2", + "version": "2.3.4", "license": "Apache-2.0", "dependencies": { "@heyputer/kv.js": "^0.2.1", diff --git a/src/backend/drivers/apps/AppDriver.js b/src/backend/drivers/apps/AppDriver.js index 0a3712c95d..9cd38cf647 100644 --- a/src/backend/drivers/apps/AppDriver.js +++ b/src/backend/drivers/apps/AppDriver.js @@ -157,13 +157,16 @@ export class AppDriver extends PuterDriver { if (await this.appStore.existsByName(fields.name)) { if (options?.dedupe_name) { let candidate; - let n = 1; + let i = 0; do { - candidate = `${fields.name}-${++n}`; - if (n > 50) + const randString = Math.random().toString(36).slice(2, 6); + candidate = `${fields.name}-${randString}`; + + if (i >= 3) throw new HttpError(400, 'Failed to dedupe app name', { - legacyCode: 'bad_request', + legacyCode: 'app_name_already_in_use', }); + i++; } while (await this.appStore.existsByName(candidate)); fields.name = candidate; } else {