|
@@ -16,11 +16,11 @@ function getGraphState(version: Version): GraphState {
|
|
|
}
|
|
|
|
|
|
export function newCorrespondence({generateUUID, primitiveRegistry, cs, as}) {
|
|
|
- // const cs = newVersionedModel({readonly, generateUUID, primitiveRegistry});
|
|
|
const {initialState, getReducer: getReducerOrig} = newVersionedModel({readonly: true, generateUUID, primitiveRegistry});
|
|
|
|
|
|
const parser = new TrivialParser(primitiveRegistry, generateUUID);
|
|
|
|
|
|
+ // Mapping from correspondence model version to CS and AS model version.
|
|
|
const corrMap: Map<Version,{csVersion:Version,asVersion:Version}> = new Map([
|
|
|
[initialState.version, {csVersion: cs.initialState.version, asVersion: as.initialState.version}]
|
|
|
]);
|
|
@@ -42,13 +42,17 @@ export function newCorrespondence({generateUUID, primitiveRegistry, cs, as}) {
|
|
|
const {corrDeltas, asDeltas} = parser.parse(csDeltas, csGS, corrGS, asGS);
|
|
|
|
|
|
const csVersionPromise = new Promise<Version>(resolve => {
|
|
|
+ // createAndGotoNewVersion will create a new Version in a callback passed to React's setState.
|
|
|
+ // Therefore, we can only get the newly created Version by passing a callback ourselves ('resolve') that will be called when the new Version is created.
|
|
|
csReducer.callbacks.createAndGotoNewVersion(csDeltas, description, resolve);
|
|
|
});
|
|
|
const corrVersionPromise = new Promise<Version>(resolve => {
|
|
|
+ // See comment about 'createAndGotoNewVersion' above.
|
|
|
createAndGotoNewVersion(corrDeltas, description, resolve);
|
|
|
});
|
|
|
const asVersionPromise = new Promise<Version>(resolve => {
|
|
|
if (asDeltas.length > 0) {
|
|
|
+ // See comment about 'createAndGotoNewVersion' above.
|
|
|
asReducer.callbacks.createAndGotoNewVersion(asDeltas, "parse:"+description, resolve);
|
|
|
} else {
|
|
|
resolve(asReducer.state.version);
|
|
@@ -66,16 +70,19 @@ export function newCorrespondence({generateUUID, primitiveRegistry, cs, as}) {
|
|
|
const {corrDeltas, csDeltas} = parser.render(asDeltas, csGS, corrGS, asGS);
|
|
|
|
|
|
const csVersionPromise = new Promise<Version>(resolve => {
|
|
|
- if (asDeltas.length > 0) {
|
|
|
+ if (csDeltas.length > 0) {
|
|
|
+ // See comment about 'createAndGotoNewVersion' above.
|
|
|
csReducer.callbacks.createAndGotoNewVersion(csDeltas, "render:"+description, resolve);
|
|
|
} else {
|
|
|
resolve(csReducer.state.version);
|
|
|
}
|
|
|
});
|
|
|
const corrVersionPromise = new Promise<Version>(resolve => {
|
|
|
+ // See comment about 'createAndGotoNewVersion' above.
|
|
|
createAndGotoNewVersion(corrDeltas, description, resolve);
|
|
|
});
|
|
|
const asVersionPromise = new Promise<Version>(resolve => {
|
|
|
+ // See comment about 'createAndGotoNewVersion' above.
|
|
|
asReducer.callbacks.createAndGotoNewVersion(asDeltas, description, resolve);
|
|
|
});
|
|
|
|