diff --git a/src/app/components/version-modal/version-modal.component.html b/src/app/components/version-modal/version-modal.component.html
index 2e51f90..2d36d8d 100644
--- a/src/app/components/version-modal/version-modal.component.html
+++ b/src/app/components/version-modal/version-modal.component.html
@@ -19,7 +19,7 @@
\ No newline at end of file
diff --git a/src/app/components/version-modal/version-modal.component.ts b/src/app/components/version-modal/version-modal.component.ts
index 87c8aa7..4a51daf 100644
--- a/src/app/components/version-modal/version-modal.component.ts
+++ b/src/app/components/version-modal/version-modal.component.ts
@@ -26,10 +26,7 @@ export class VersionModalComponent implements OnInit {
async ngOnInit() {
this.pageVersions = await this.editorService.loadPageVersions(this.pageId);
- this.selectedVersion = this.pageVersions[0];
- setTimeout(() => {
- this.onVersionClick(this.pageVersions[0]);
- }, 100);
+ this.onVersionClick(this.pageVersions[0]);
}
dismiss() {
@@ -38,8 +35,10 @@ export class VersionModalComponent implements OnInit {
async onVersionClick(version: PageVersionRecord) {
this.selectedVersion = version;
- if ( this.editor ) {
- this.editor.ionViewDidEnter();
- }
+ setTimeout(() => {
+ if ( this.editor ) {
+ this.editor.ionViewDidEnter();
+ }
+ }, 300);
}
}
diff --git a/src/app/pages/editor/editor.page.ts b/src/app/pages/editor/editor.page.ts
index f051458..70167b4 100644
--- a/src/app/pages/editor/editor.page.ts
+++ b/src/app/pages/editor/editor.page.ts
@@ -49,7 +49,7 @@ export class EditorPage implements OnInit {
ionViewDidEnter() {
if ( this.pageId ) {
- this.editorService.startEditing(this.pageId);
+ this.editorService.startEditing(this.pageId, this.version);
} else if ( !this.hosted ) {
this.router.navigate(['/home']);
}
diff --git a/src/app/service/editor.service.ts b/src/app/service/editor.service.ts
index cb8c9f8..1c2a124 100644
--- a/src/app/service/editor.service.ts
+++ b/src/app/service/editor.service.ts
@@ -31,6 +31,7 @@ export class EditorService {
protected ready$: BehaviorSubject = new BehaviorSubject(false);
protected subs: Subscription[] = [];
protected saving = false;
+ protected currentPageVersion?: number;
public forceReadonly = false;
protected saveTriggered = false;
public notAvailable = false;
@@ -110,14 +111,15 @@ export class EditorService {
return inst;
}
- async startEditing(pageId: string) {
+ async startEditing(pageId: string, version?: number) {
if ( this.currentPage ) {
await this.stopEditing();
}
try {
- this.currentPage = await this.loadPage(pageId);
- this.currentNodes = await this.loadNodes(pageId);
+ this.currentPageVersion = version;
+ this.currentPage = await this.loadPage(pageId, version);
+ this.currentNodes = await this.loadNodes(pageId, version);
this.notAvailable = false;
await this.ready$.next(true);
} catch (e) {
@@ -556,7 +558,7 @@ export class EditorService {
delete this.nodeIdToEditorContract[nodeId];
}
- async loadPage(pageId: string): Promise {
+ async loadPage(pageId: string, version?: number): Promise {
return new Promise(async (res, rej) => {
const existingLocalPage = await this.db.pages.where({ UUID: pageId }).first() as Page;
@@ -570,7 +572,7 @@ export class EditorService {
}
// If we're online, fetch the page record and store it locally
- this.api.get(`/page/${pageId}`).subscribe({
+ this.api.get(`/page/${pageId}${version ? '?version=' + version : ''}`).subscribe({
next: async result => {
const page = new PageRecord(result.data);
@@ -632,7 +634,7 @@ export class EditorService {
});
}
- async loadNodes(pageId: string): Promise {
+ async loadNodes(pageId: string, version?: number): Promise {
return new Promise(async (res, rej) => {
const existingNodes = await this.db.pageNodes.where({ PageId: pageId }).toArray() as PageNode[];
@@ -650,7 +652,7 @@ export class EditorService {
return res(inflateRecords(parsedRecords));
}
- this.api.get(`/page/${pageId}/nodes`).subscribe({
+ this.api.get(`/page/${pageId}/nodes${version ? '?version=' + version : ''}`).subscribe({
next: async result => {
// If we got resolved records, delete the local ones to replace them
await this.db.pageNodes.where({ PageId: pageId }).delete();