diff --git a/frontend/src/Editor/EditorFunc.jsx b/frontend/src/Editor/EditorFunc.jsx index 8ca20fdca3..39a21e8436 100644 --- a/frontend/src/Editor/EditorFunc.jsx +++ b/frontend/src/Editor/EditorFunc.jsx @@ -851,7 +851,7 @@ const EditorComponent = (props) => { }; const realtimeSave = debounce(appDefinitionChanged, 500); - const autoSave = debounce(saveEditingVersion, 3000); + const autoSave = debounce(saveEditingVersion, 200); function handlePaths(prevPatch, path = [], appJSON) { const paths = [...path]; @@ -1121,6 +1121,7 @@ const EditorComponent = (props) => { const newPageId = uuid(); copyOfAppDefinition.pages[newPageId] = { + id: newPageId, name, handle: newHandle, components: {}, diff --git a/server/src/controllers/apps.controller.v2.ts b/server/src/controllers/apps.controller.v2.ts index 8562e17990..c66ce3cf34 100644 --- a/server/src/controllers/apps.controller.v2.ts +++ b/server/src/controllers/apps.controller.v2.ts @@ -164,7 +164,7 @@ export class AppsControllerV2 { throw new ForbiddenException('You do not have permissions to perform this action'); } - await this.componentsService.create(versionEditDto.diff, versionEditDto.pageId); + await this.componentsService.create(versionEditDto.diff, versionEditDto.pageId, versionId); } @UseGuards(JwtAuthGuard) diff --git a/server/src/dto/pages.dto.ts b/server/src/dto/pages.dto.ts index f72dbe6d6a..9113990d57 100644 --- a/server/src/dto/pages.dto.ts +++ b/server/src/dto/pages.dto.ts @@ -1,6 +1,9 @@ -import { IsNumber, IsString } from 'class-validator'; +import { IsNumber, IsString, IsUUID } from 'class-validator'; export class CreatePageDto { + @IsUUID() + id: string; + @IsString() name: string; diff --git a/server/src/services/components.service.ts b/server/src/services/components.service.ts index 5f8a31290f..377a3ba342 100644 --- a/server/src/services/components.service.ts +++ b/server/src/services/components.service.ts @@ -21,9 +21,11 @@ export class ComponentsService { return this.componentsRepository.findOne(id); } - async create(componentDiff: object, pageId: string) { + async create(componentDiff: object, pageId: string, appVersionId: string) { return dbTransactionWrap(async (manager: EntityManager) => { - const page = await manager.findOne(Page, pageId); + const page = await manager.findOne(Page, { + where: { appVersionId, id: pageId }, + }); const newComponents = this.transformComponentData(componentDiff); const componentLayouts = []; diff --git a/server/src/services/page.service.ts b/server/src/services/page.service.ts index a0e2adcbda..c2a5661598 100644 --- a/server/src/services/page.service.ts +++ b/server/src/services/page.service.ts @@ -39,10 +39,12 @@ export class PageService { } async createPage(page: CreatePageDto, appVersionId: string): Promise { - const newPage = { - ...page, - appVersionId: appVersionId, - }; + const newPage = new Page(); + newPage.id = page.id; + newPage.name = page.name; + newPage.handle = page.handle; + newPage.index = page.index; + newPage.appVersionId = appVersionId; return this.pageRepository.save(newPage); }