diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-17 01:22:37 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-17 01:22:37 +0300 |
commit | a45baebe2f3972a6ae607136423082d0bb9a1260 (patch) | |
tree | 5602bc67639a7316999171c20aa09d20bdbb0a42 /src/Services | |
parent | 4fab8775d898174066f9d3021b3427f8f9ef4e4e (diff) |
Improve model data handling
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
Diffstat (limited to 'src/Services')
-rw-r--r-- | src/Services/ModelService.js | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/Services/ModelService.js b/src/Services/ModelService.js index ff0a21d..e06ccd0 100644 --- a/src/Services/ModelService.js +++ b/src/Services/ModelService.js @@ -175,11 +175,13 @@ export default class ModelService { /** * * @param {Password} model - * @param {Password} newModel + * @param {Password} newModel * @returns {Password} * @private */ _mergePasswordModel(model, newModel) { + this._mergeStandardProperties(model, newModel, ['tags', 'folder']); + if(newModel.getProperty('revisions') !== undefined) { model.setProperty('revisions', newModel.getProperty('revisions')); } @@ -197,11 +199,13 @@ export default class ModelService { /** * * @param {Folder} model - * @param {Folder} newModel + * @param {Folder} newModel * @returns {Folder} * @private */ _mergeFolderModel(model, newModel) { + this._mergeStandardProperties(model, newModel, ['passwords', 'folders', 'parent']); + if(newModel.getProperty('revisions') !== undefined) { model.setProperty('revisions', newModel.getProperty('revisions')); } @@ -222,11 +226,13 @@ export default class ModelService { /** * * @param {Tag} model - * @param {Tag} newModel + * @param {Tag} newModel * @returns {Tag} * @private */ _mergeTagModel(model, newModel) { + this._mergeStandardProperties(model, newModel, ['passwords']); + if(newModel.getProperty('revisions') !== undefined) { model.setProperty('revisions', newModel.getProperty('revisions')); } @@ -239,6 +245,28 @@ export default class ModelService { } /** + * + * @param {AbstractRevisionModel} model + * @param {AbstractRevisionModel} newModel + * @param {String[]} excludeProperties + * @private + */ + _mergeStandardProperties(model, newModel, excludeProperties) { + if(model.getRevision() === newModel.getRevision()) { + model.setUpdated(newModel.getUpdated()); + return; + } + + excludeProperties.push('id, revisions') + let configuration = model.getPropertyConfiguration(); + for(let key in configuration) { + if(configuration.hasOwnProperty(key) && excludeProperties.indexOf(key) === -1 && newModel.getProperty(key) !== undefined) { + model.setProperty(key, newModel.getProperty(key)); + } + } + } + + /** * @param {AbstractRevisionModel} model * @param {String[]} detailLevel * @private |