summaryrefslogtreecommitdiff
authorClipperz <info@clipperz.com>2013-01-08 15:17:30 (UTC)
committer Clipperz <info@clipperz.com>2013-01-08 15:17:30 (UTC)
commit267603e3aa3cf0029411e67ae14018b52344c296 (patch) (unidiff)
tree055e8f8d8543ed6bfa342dbf4641fea308c2ec5a
parentb6a11a37ec3271bd44fc23b9da00c5b052b0d8b9 (diff)
downloadclipperz-267603e3aa3cf0029411e67ae14018b52344c296.zip
clipperz-267603e3aa3cf0029411e67ae14018b52344c296.tar.gz
clipperz-267603e3aa3cf0029411e67ae14018b52344c296.tar.bz2
Fixed corrupted card problem
Changes that check for a weird condition that was causing cards to get corrupted. A similar change has been applied also to /gamma (in a different commit, though)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/beta/js/Clipperz/PM/Connection.js9
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/Record.js12
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/User.js17
3 files changed, 24 insertions, 14 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Connection.js b/frontend/beta/js/Clipperz/PM/Connection.js
index 85aea21..e81c7a6 100644
--- a/frontend/beta/js/Clipperz/PM/Connection.js
+++ b/frontend/beta/js/Clipperz/PM/Connection.js
@@ -287,29 +287,33 @@ deferredResult.addErrback(MochiKit.Base.bind(function(res) {MochiKit.Logging.log
287 //# deferredResult.addCallback(MochiKit.Base.method(this, 'loginDone')); 287 //# deferredResult.addCallback(MochiKit.Base.method(this, 'loginDone'));
288 deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) { 288 deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) {
289 var result; 289 var result;
290 290
291//MochiKit.Logging.logDebug(">>> Connection.loginDone: " + this + " (M2: " + this.srpConnection().M2() + ")"); 291//MochiKit.Logging.logDebug(">>> Connection.loginDone: " + this + " (M2: " + this.srpConnection().M2() + ")");
292 if (someParameters['M2'] == this.srpConnection().M2()) { 292 if (someParameters['M2'] == this.srpConnection().M2()) {
293 result = new MochiKit.Async.Deferred(); 293 result = new MochiKit.Async.Deferred();
294 294
295//MochiKit.Logging.logDebug("--- Connection.loginDone - someParameters: " + Clipperz.Base.serializeJSON(someParameters)); 295//MochiKit.Logging.logDebug("--- Connection.loginDone - someParameters: " + Clipperz.Base.serializeJSON(someParameters));
296 this.setConnectionId(someParameters['connectionId']); 296 this.setConnectionId(someParameters['connectionId']);
297 this.user().setLoginInfo(someParameters['loginInfo']); 297 this.user().setLoginInfo(someParameters['loginInfo']);
298 this.user().setShouldDownloadOfflineCopy(someParameters['offlineCopyNeeded']); 298 this.user().setShouldDownloadOfflineCopy(someParameters['offlineCopyNeeded']);
299 this.user().setLock(someParameters['lock']); 299
300 if ((isReconnecting == true) && (this.user().lock() != someParameters['lock'])) {
301 throw Clipperz.PM.Connection.exception.StaleData;
302 }
300 303
301 if (this.oneTimePassword() != null) { 304 if (this.oneTimePassword() != null) {
302 result.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'archiveOneTimePassword', this.oneTimePassword())); 305 result.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'archiveOneTimePassword', this.oneTimePassword()));
303 } 306 }
307
304 result.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_loggedIn'); 308 result.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_loggedIn');
305 result.addCallback(MochiKit.Async.succeed, someParameters); 309 result.addCallback(MochiKit.Async.succeed, someParameters);
306 310
307 result.callback(); 311 result.callback();
308//MochiKit.Logging.logDebug("--- Connection.loginDone - 1 - result: "/* + Clipperz.Base.serializeJSON(result)*/); 312//MochiKit.Logging.logDebug("--- Connection.loginDone - 1 - result: "/* + Clipperz.Base.serializeJSON(result)*/);
309 } else { 313 } else {
310//MochiKit.Logging.logDebug("--- Connection.loginDone - 2 - ERROR"); 314//MochiKit.Logging.logDebug("--- Connection.loginDone - 2 - ERROR");
311//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); 315//deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;});
312 result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum); 316 result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum);
313 } 317 }
314//MochiKit.Logging.logDebug("<<< Connection.loginDone - result: " + Clipperz.Base.serializeJSON(result)); 318//MochiKit.Logging.logDebug("<<< Connection.loginDone - result: " + Clipperz.Base.serializeJSON(result));
315 319
@@ -568,14 +572,15 @@ Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.
568 //----------------------------------------------------------------------------- 572 //-----------------------------------------------------------------------------
569 573
570 'hash': function() { 574 'hash': function() {
571 return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash; 575 return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash;
572 }, 576 },
573 577
574 //----------------------------------------------------------------------------- 578 //-----------------------------------------------------------------------------
575 __syntaxFix__: "syntax fix" 579 __syntaxFix__: "syntax fix"
576 580
577}); 581});
578 582
579Clipperz.PM.Connection.exception = { 583Clipperz.PM.Connection.exception = {
580 WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue") 584 WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue"),
585 StaleData: new MochiKit.Base.NamedError("Stale data")
581}; 586};
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js
index ffb45de..ecb6c37 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js
@@ -630,29 +630,31 @@ console.log("Record.processData - currentVersionParameters", currentVersionParam
630 aDirectLogin.record().user().removeDirectLogin(aDirectLogin); 630 aDirectLogin.record().user().removeDirectLogin(aDirectLogin);
631 }); 631 });
632 632
633 this.resetRemovedDirectLogins(); 633 this.resetRemovedDirectLogins();
634//MochiKit.Logging.logDebug("<<< Record.syncDirectLoginReferenceValues"); 634//MochiKit.Logging.logDebug("<<< Record.syncDirectLoginReferenceValues");
635 }, 635 },
636 636
637 //------------------------------------------------------------------------- 637 //-------------------------------------------------------------------------
638 638
639 'saveChanges': function() { 639 'saveChanges': function() {
640 var result; 640 var result;
641 641
642 if (this.isBrandNew() == false) { 642 // if (this.isBrandNew() == false) {
643 result = this.user().saveRecords([this], 'updateData'); 643 // result = this.user().saveRecords([this], 'updateData');
644 } else { 644 // } else {
645 result = this.user().saveRecords([this], 'addNewRecords'); 645 // result = this.user().saveRecords([this], 'addNewRecords');
646 } 646 // }
647
648 result = this.user().saveRecords([this]);
647 649
648 return result; 650 return result;
649 }, 651 },
650 652
651/* 653/*
652 'saveChanges': function() { 654 'saveChanges': function() {
653 var deferredResult; 655 var deferredResult;
654 varresult; 656 varresult;
655 657
656 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'records', true); 658 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'records', true);
657//MochiKit.Logging.logDebug(">>> Record.saveChanges"); 659//MochiKit.Logging.logDebug(">>> Record.saveChanges");
658//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.saveChanges"); 660//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.saveChanges");
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/User.js b/frontend/beta/js/Clipperz/PM/DataModel/User.js
index dbbe9a0..b065557 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/User.js
@@ -276,32 +276,32 @@ MochiKit.Logging.logError("- User.errorHandler: " + anErrorString + " (" + anExc
276 276
277//MochiKit.Logging.logDebug(">>> User.addNewRecord"); 277//MochiKit.Logging.logDebug(">>> User.addNewRecord");
278 record = new Clipperz.PM.DataModel.Record({user:this}); 278 record = new Clipperz.PM.DataModel.Record({user:this});
279 this.addRecord(record); 279 this.addRecord(record);
280 Clipperz.NotificationCenter.notify(this, 'updatedSection', 'records', true); 280 Clipperz.NotificationCenter.notify(this, 'updatedSection', 'records', true);
281//MochiKit.Logging.logDebug("<<< User.addNewRecord"); 281//MochiKit.Logging.logDebug("<<< User.addNewRecord");
282 282
283 return record; 283 return record;
284 }, 284 },
285 285
286 //------------------------------------------------------------------------- 286 //-------------------------------------------------------------------------
287 287
288 'saveRecords': function(someRecords, aMethodName) { 288 'saveRecords': function(someRecords /*, aMethodName*/) {
289 var deferredResult; 289 var deferredResult;
290 var methodName; 290 // var methodName;
291 varresult; 291 varresult;
292 var i,c; 292 var i,c;
293 293
294//console.log("User.saveRecords - someRecords", someRecords); 294//console.log("User.saveRecords - someRecords", someRecords);
295 methodName = aMethodName || 'addNewRecords'; 295 // methodName = aMethodName || 'addNewRecords';
296 296
297 Clipperz.NotificationCenter.notify(this, 'updatedSection', 'records', true); 297 Clipperz.NotificationCenter.notify(this, 'updatedSection', 'records', true);
298//MochiKit.Logging.logDebug(">>> User.saveRecords"); 298//MochiKit.Logging.logDebug(">>> User.saveRecords");
299//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] User.saveRecords"); 299//MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] User.saveRecords");
300/* 300/*
301MochiKit.Logging.logDebug("--- User.saveRecords - 1"); 301MochiKit.Logging.logDebug("--- User.saveRecords - 1");
302 MochiKit.Iter.forEach(someRecords, function(aRecord) { 302 MochiKit.Iter.forEach(someRecords, function(aRecord) {
303 if (aRecord.headerNotes() != null) { 303 if (aRecord.headerNotes() != null) {
304 aRecord.setNotes(aRecord.headerNotes()); 304 aRecord.setNotes(aRecord.headerNotes());
305 } 305 }
306 aRecord.syncDirectLoginReferenceValues(); 306 aRecord.syncDirectLoginReferenceValues();
307 aRecord.currentVersion().createNewVersion(); 307 aRecord.currentVersion().createNewVersion();
@@ -358,34 +358,35 @@ MochiKit.Logging.logDebug("--- User.saveRecords - 2");
358 358
359 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', {} /*'saveCard_encryptRecordVersions'*/); 359 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', {} /*'saveCard_encryptRecordVersions'*/);
360//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.5 " + res); return res;}); 360//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.5 " + res); return res;});
361 deferredResult.addCallback(MochiKit.Base.method(someRecords[i].currentVersion(), 'encryptedData')); 361 deferredResult.addCallback(MochiKit.Base.method(someRecords[i].currentVersion(), 'encryptedData'));
362//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.6 " + res); return res;}); 362//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.6 " + res); return res;});
363 deferredResult.addCallback(function(aResult, res) { 363 deferredResult.addCallback(function(aResult, res) {
364 aResult['currentRecordVersion'] = res; 364 aResult['currentRecordVersion'] = res;
365 return aResult; 365 return aResult;
366 }, recordData); 366 }, recordData);
367//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.7 " + res); return res;}); 367//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.7 " + res); return res;});
368 368
369 deferredResult.addCallback(function(aResult, res) { 369 deferredResult.addCallback(function(aResult, res) {
370 aResult['records'].push(res); 370 aResult['records'] = { 'updated': [res] };
371 return aResult; 371 return aResult;
372 }, result); 372 }, result);
373//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.8 " + res); return res;}); 373//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 6.8 " + res); return res;});
374 } 374 }
375 375
376//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 7 " + res); return res;}); 376//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 7 " + res); return res;});
377 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_sendingData'); 377 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveCard_sendingData');
378//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 8 " + res); return res;}); 378//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 8 " + res); return res;});
379 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), methodName); 379 // deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), methodName);
380 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'saveChanges');
380//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9 " + res); return res;}); 381//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9 " + res); return res;});
381 382
382 for (i=0; i<c; i++) { 383 for (i=0; i<c; i++) {
383//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.1 " + res); return res;}); 384//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.1 " + res); return res;});
384 deferredResult.addCallback(MochiKit.Base.method(someRecords[i], 'takeSnapshotOfCurrentData')); 385 deferredResult.addCallback(MochiKit.Base.method(someRecords[i], 'takeSnapshotOfCurrentData'));
385//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.2 " + res); return res;}); 386//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.2 " + res); return res;});
386 deferredResult.addCallback(MochiKit.Base.method(someRecords[i], 'setIsBrandNew'), false); 387 deferredResult.addCallback(MochiKit.Base.method(someRecords[i], 'setIsBrandNew'), false);
387//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.3 " + res); return res;}); 388//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 9.3 " + res); return res;});
388 } 389 }
389 390
390//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 10 " + res); return res;}); 391//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.saveRecords - 10 " + res); return res;});
391 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'recordUpdated'); 392 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'recordUpdated');
@@ -422,42 +423,44 @@ MochiKit.Logging.logDebug("--- User.saveRecords - 2");
422//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 2 " + res); return res;}); 423//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 2 " + res); return res;});
423 deferredResult.addCallback(function(someParameters, someRecords) { 424 deferredResult.addCallback(function(someParameters, someRecords) {
424 var recordReferences; 425 var recordReferences;
425 426
426 recordReferences = MochiKit.Base.map(function(aRecord) { 427 recordReferences = MochiKit.Base.map(function(aRecord) {
427 var result; 428 var result;
428 429
429 result = aRecord.reference(); 430 result = aRecord.reference();
430 aRecord.remove(); 431 aRecord.remove();
431 432
432 return result; 433 return result;
433 }, someRecords); 434 }, someRecords);
434 someParameters.recordReferences = recordReferences; 435 // someParameters.recordReferences = recordReferences;
436 someParameters['records'] = { 'deleted': recordReferences};
435 437
436 return someParameters; 438 return someParameters;
437 }, parameters); 439 }, parameters);
438//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 3 " + res); return res;}); 440//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 3 " + res); return res;});
439 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_encryptData'); 441 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_encryptData');
440//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 4 " + res); return res;}); 442//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 4 " + res); return res;});
441 deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData')); 443 deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData'));
442//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 5 " + res); return res;}); 444//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 5 " + res); return res;});
443 deferredResult.addCallback(function(someParameters, anUserEncryptedData) { 445 deferredResult.addCallback(function(someParameters, anUserEncryptedData) {
444 someParameters.user = anUserEncryptedData; 446 someParameters.user = anUserEncryptedData;
445 return someParameters; 447 return someParameters;
446 }, parameters); 448 }, parameters);
447//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 6 " + res); return res;}); 449//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 6 " + res); return res;});
448 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_sendingData'); 450 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_sendingData');
449//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecords parameters: " + Clipperz.Base.serializeJSON(res)); return res;}); 451//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecords parameters: " + Clipperz.Base.serializeJSON(res)); return res;});
450//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 7 " + res); return res;}); 452//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 7 " + res); return res;});
451 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'deleteRecords'); 453 // deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'deleteRecords');
454 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'message'), 'saveChanges');
452//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 8 " + res); return res;}); 455//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 8 " + res); return res;});
453 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_updatingInterface'); 456 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'deleteRecord_updatingInterface');
454//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 9 " + res); return res;}); 457//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.deleteRecordsAction - 9 " + res); return res;});
455 deferredResult.callback(someRecords); 458 deferredResult.callback(someRecords);
456//MochiKit.Logging.logDebug("<<< User.deleteRecordsAction"); 459//MochiKit.Logging.logDebug("<<< User.deleteRecordsAction");
457 460
458 return deferredResult; 461 return deferredResult;
459 }, 462 },
460 463
461 //------------------------------------------------------------------------- 464 //-------------------------------------------------------------------------
462 465
463 'resetAllLocalData': function() { 466 'resetAllLocalData': function() {