Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2020-12-17 01:22:37 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2020-12-17 01:22:37 +0300
commita45baebe2f3972a6ae607136423082d0bb9a1260 (patch)
tree5602bc67639a7316999171c20aa09d20bdbb0a42 /src/Services
parent4fab8775d898174066f9d3021b3427f8f9ef4e4e (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.js34
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