mirror of
http://git.whoc.org.uk/git/password-manager.git
synced 2025-10-25 17:47:34 +02:00
Interim synchronization with internal repository
This is an intermir commit to share what is going on with the development of the new /delta version.
This commit is contained in:
@@ -30,6 +30,7 @@ Clipperz.PM.DataModel.Record = function(args) {
|
||||
Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments);
|
||||
|
||||
this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter'));
|
||||
this._accessDate = (args.accessDate ? Clipperz.PM.Date.parse(args.accessDate) : Clipperz.Base.exception.raise('MandatoryParameter'));
|
||||
|
||||
this._retrieveIndexDataFunction = args.retrieveIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
|
||||
this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
|
||||
@@ -40,6 +41,8 @@ Clipperz.PM.DataModel.Record = function(args) {
|
||||
|
||||
this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null;
|
||||
|
||||
this._tags = [];
|
||||
|
||||
this._directLogins = {};
|
||||
|
||||
this._versions = {};
|
||||
@@ -128,22 +131,109 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
|
||||
return deferredResult;
|
||||
},
|
||||
|
||||
//=========================================================================
|
||||
//============================================================================
|
||||
/*
|
||||
'key': function () {
|
||||
return this.getIndexDataForKey('key');
|
||||
},
|
||||
*/
|
||||
//=========================================================================
|
||||
//============================================================================
|
||||
|
||||
'fullLabel': function () {
|
||||
return this.getIndexDataForKey('label');
|
||||
},
|
||||
|
||||
'updateFullLabelWithTags': function (someTags) {
|
||||
return Clipperz.Async.callbacks("Record.updateFullLabelWithTags", [
|
||||
MochiKit.Base.method(this, 'label'),
|
||||
function (aLabel) {
|
||||
return aLabel + ' ' + MochiKit.Base.map(function (aTag) { return Clipperz.PM.DataModel.Record.tagChar + aTag; }, MochiKit.Base.keys(someTags)).join(' ');
|
||||
},
|
||||
MochiKit.Base.method(this, 'setIndexDataForKey', 'label')
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
//............................................................................
|
||||
|
||||
'tagChar': function () {
|
||||
return Clipperz.PM.DataModel.Record.tagChar;
|
||||
},
|
||||
|
||||
'tagRegExp': function () {
|
||||
return new RegExp('\\' + this.tagChar() + '(\\w+)', 'g');
|
||||
},
|
||||
|
||||
'trimSpacesRegExp': function () {
|
||||
return new RegExp('^\\s+|\\s+$', 'g');
|
||||
},
|
||||
|
||||
//............................................................................
|
||||
|
||||
'filterOutTags': function (aValue) {
|
||||
var value;
|
||||
|
||||
value = aValue;
|
||||
value = value.replace(this.tagRegExp(), '');
|
||||
value = value.replace(this.trimSpacesRegExp(), '');
|
||||
|
||||
return value;
|
||||
},
|
||||
|
||||
'label': function () {
|
||||
return this.getIndexDataForKey('label');
|
||||
return Clipperz.Async.callbacks("Record.label", [
|
||||
MochiKit.Base.method(this, 'fullLabel'),
|
||||
MochiKit.Base.method(this, 'filterOutTags')
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
'setLabel': function (aValue) {
|
||||
return this.setIndexDataForKey('label', aValue); // [???]
|
||||
},
|
||||
|
||||
//.........................................................................
|
||||
|
||||
'setLabel': function (aValue) {
|
||||
return this.setIndexDataForKey('label', aValue);
|
||||
'extractTags': function (aLabel) {
|
||||
var tagRegEx;
|
||||
var result;
|
||||
var match;
|
||||
|
||||
result = {};
|
||||
tagRegEx = this.tagRegExp();
|
||||
match = tagRegEx.exec(aLabel);
|
||||
while (match != null) {
|
||||
result[match[1]] = true;
|
||||
match = tagRegEx.exec(aLabel);
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
'tags': function () {
|
||||
return Clipperz.Async.callbacks("Record.label", [
|
||||
MochiKit.Base.method(this, 'fullLabel'),
|
||||
MochiKit.Base.method(this, 'extractTags'),
|
||||
MochiKit.Base.keys
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
'addTag': function (aNewTag) {
|
||||
//console.log("ADD TAG", aNewTag);
|
||||
return Clipperz.Async.callbacks("Record.addTag", [
|
||||
MochiKit.Base.method(this, 'fullLabel'),
|
||||
MochiKit.Base.method(this, 'extractTags'),
|
||||
function (someTags) { someTags[aNewTag] = true; console.log("UPDATED TAGS", someTags); return someTags; },
|
||||
MochiKit.Base.method(this, 'updateFullLabelWithTags')
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
'removeTag': function (aTag) {
|
||||
//console.log("ADD TAG", aNewTag);
|
||||
return Clipperz.Async.callbacks("Record.removeTag", [
|
||||
MochiKit.Base.method(this, 'fullLabel'),
|
||||
MochiKit.Base.method(this, 'extractTags'),
|
||||
function (someTags) { delete someTags[aTag]; return someTags; },
|
||||
MochiKit.Base.method(this, 'updateFullLabelWithTags')
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
//=========================================================================
|
||||
@@ -183,6 +273,10 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
|
||||
return MochiKit.Async.succeed(this._updateDate);
|
||||
},
|
||||
|
||||
'accessDate': function () {
|
||||
return MochiKit.Async.succeed(this._accessDate);
|
||||
},
|
||||
|
||||
//=========================================================================
|
||||
|
||||
'favicon': function () {
|
||||
@@ -208,7 +302,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
|
||||
deferredResult = new Clipperz.Async.Deferred("Record.searchableContent", {trace:false});
|
||||
|
||||
deferredResult.collectResults({
|
||||
'recordLabel': MochiKit.Base.method(this, 'label'),
|
||||
'recordLabel': MochiKit.Base.method(this, 'fullLabel'),
|
||||
'directLoginLabels': [
|
||||
MochiKit.Base.method(this, 'directLoginReferences'),
|
||||
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.itemgetter('label'))
|
||||
@@ -889,3 +983,20 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
|
||||
});
|
||||
|
||||
|
||||
Clipperz.PM.DataModel.Record.defaultCardInfo = {
|
||||
'_rowObject': MochiKit.Async.succeed,
|
||||
'_reference': MochiKit.Base.methodcaller('reference'),
|
||||
'_searchableContent': MochiKit.Base.methodcaller('searchableContent'),
|
||||
'_accessDate': MochiKit.Base.methodcaller('accessDate'),
|
||||
'label': MochiKit.Base.methodcaller('label'),
|
||||
'favicon': MochiKit.Base.methodcaller('favicon')
|
||||
};
|
||||
Clipperz.PM.DataModel.Record.defaultSearchField = '_searchableContent';
|
||||
|
||||
Clipperz.PM.DataModel.Record.tagChar = '#';
|
||||
Clipperz.PM.DataModel.Record.regExpForTag = function (aTag) {
|
||||
return new RegExp('\\' + Clipperz.PM.DataModel.Record.tagChar + aTag, 'g');
|
||||
};
|
||||
Clipperz.PM.DataModel.Record.regExpForSearch = function (aSearch) {
|
||||
return new RegExp(aSearch.replace(/[^A-Za-z0-9]/g, '\\$&'), 'i');
|
||||
};
|
||||
|
||||
@@ -25,26 +25,26 @@ try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catc
|
||||
throw "Clipperz.PM.DataModel.User.Subscription depends on Clipperz.PM.DataModel.User!";
|
||||
}
|
||||
|
||||
Clipperz.PM.DataModel.User.Subscription = function(args) {
|
||||
Clipperz.PM.DataModel.User.AccountInfo = function(args) {
|
||||
this._attributes = args;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
Clipperz.Base.extend(Clipperz.PM.DataModel.User.Subscription, Object, {
|
||||
Clipperz.Base.extend(Clipperz.PM.DataModel.User.AccountInfo, Object, {
|
||||
|
||||
'features': function () {
|
||||
return this._attributes['features'];
|
||||
},
|
||||
|
||||
'type': function () {
|
||||
return this._attributes['type'];
|
||||
'featureSet': function () {
|
||||
return this._attributes['featureSet'];
|
||||
},
|
||||
|
||||
'validity': function () {
|
||||
return {
|
||||
'from': this._attributes['fromDate'],
|
||||
'to': this._attributes['toDate']
|
||||
// 'from': this._attributes['fromDate'],
|
||||
'to': this._attributes['expirationDate']
|
||||
};
|
||||
},
|
||||
|
||||
@@ -133,6 +133,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataM
|
||||
'retrieveIndexDataFunction': MochiKit.Base.method(this, 'getRecordIndexData'),
|
||||
'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'),
|
||||
'updateDate': someObjectData['recordsStats'][reference]['updateDate'],
|
||||
'accessDate': someObjectData['recordsStats'][reference]['accessDate'],
|
||||
|
||||
'retrieveDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'getDirectLoginIndexData'),
|
||||
'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
|
||||
|
||||
@@ -29,7 +29,7 @@ if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.Data
|
||||
|
||||
Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) {
|
||||
Clipperz.PM.DataModel.User.Header.RecordIndex.superclass.constructor.apply(this, arguments);
|
||||
|
||||
//console.log("RECORD INDEX ARGS", args);
|
||||
this._recordsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
|
||||
'name': 'recordsData',
|
||||
'retrieveKeyFunction': args.retrieveKeyFunction,
|
||||
@@ -37,9 +37,7 @@ Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) {
|
||||
'data': args.recordsData['data'],
|
||||
'version': args.encryptedDataVersion,
|
||||
'recordsStats': args.recordsStats
|
||||
}//,
|
||||
// 'encryptedDataKeypath': 'data',
|
||||
// 'encryptedVersionKeypath': 'version'
|
||||
}
|
||||
});
|
||||
|
||||
this._directLoginsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
|
||||
@@ -48,11 +46,10 @@ Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) {
|
||||
'remoteData': {
|
||||
'data': args.directLoginsData['data'],
|
||||
'version': args.encryptedDataVersion
|
||||
}//,
|
||||
// 'encryptedDataKeypath': 'data',
|
||||
// 'encryptedVersionKeypath': 'version'
|
||||
}
|
||||
});
|
||||
|
||||
this._tagsData =
|
||||
this._lock = new MochiKit.Async.DeferredLock();
|
||||
this._transientState = null;
|
||||
|
||||
@@ -154,9 +151,6 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
},
|
||||
|
||||
'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) {
|
||||
//if (MochiKit.Base.isUndefinedOrNull(this.directLoginsIndex()[aDirectLoginReference])) {
|
||||
// throw "PIPPO";
|
||||
//}
|
||||
return this.directLoginsData().setValue(this.directLoginsIndex()[aDirectLoginReference] + '.' + aKey, aValue);
|
||||
},
|
||||
|
||||
@@ -182,8 +176,6 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
innerDeferredResult = new Clipperz.Async.Deferred("User.Header.RecordIndex.records <inner deferred>", {trace:false});
|
||||
innerDeferredResult.collectResults({
|
||||
'records': [
|
||||
// MochiKit.Base.method(this.recordsData(), 'getObjectDataStore'),
|
||||
// MochiKit.Base.methodcaller('values')
|
||||
MochiKit.Base.method(this.recordsData(), 'values')
|
||||
],
|
||||
'recordsStats': [
|
||||
@@ -191,8 +183,6 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
MochiKit.Base.itemgetter('recordsStats')
|
||||
],
|
||||
'directLogins': [
|
||||
// MochiKit.Base.method(this.directLoginsData(), 'getObjectDataStore'),
|
||||
// MochiKit.Base.methodcaller('values')
|
||||
MochiKit.Base.method(this.directLoginsData(), 'values')
|
||||
]
|
||||
})
|
||||
@@ -210,11 +200,13 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
var record;
|
||||
var reference;
|
||||
var updateDate;
|
||||
var accessDate;
|
||||
|
||||
reference = recordsInvertedIndex[indexReference];
|
||||
|
||||
if (typeof(someData['recordsStats'][reference]) != 'undefined') {
|
||||
updateDate = someData['recordsStats'][reference]['updateDate'];
|
||||
accessDate = someData['recordsStats'][reference]['accessDate'];
|
||||
|
||||
record = new Clipperz.PM.DataModel.Record({
|
||||
'reference': reference,
|
||||
@@ -224,6 +216,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
'retrieveIndexDataFunction': MochiKit.Base.method(this, 'getRecordIndexData'),
|
||||
'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'),
|
||||
'updateDate': updateDate,
|
||||
'accessDate': accessDate,
|
||||
|
||||
'retrieveDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'getDirectLoginIndexData'),
|
||||
'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
|
||||
@@ -235,13 +228,10 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
|
||||
this._records[reference] = record;
|
||||
} else {
|
||||
Clipperz.log("SKIPPING record " + reference + " as there are no stas associated - " + Clipperz.Base.serializeJSON(someData['records'][reference]));
|
||||
// # skip the record, as it seems it is not present in the DB
|
||||
// updateDate = Clipperz.PM.Date.formatDateWithUTCFormat(new Date());
|
||||
}
|
||||
}
|
||||
|
||||
for (indexReference in someData['directLogins']) {
|
||||
// var directLogin;
|
||||
var reference;
|
||||
var record;
|
||||
|
||||
@@ -249,7 +239,6 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
record = this._records[recordsInvertedIndex[someData['directLogins'][indexReference]['record']]];
|
||||
|
||||
if (record != null) {
|
||||
// directLogin = new Clipperz.PM.DataModel.DirectLogin({
|
||||
new Clipperz.PM.DataModel.DirectLogin({
|
||||
'reference': reference,
|
||||
'record': record
|
||||
@@ -301,6 +290,7 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
'retrieveIndexDataFunction': MochiKit.Base.method(this, 'getRecordIndexData'),
|
||||
'updateIndexDataFunction': MochiKit.Base.method(this, 'updateRecordIndexData'),
|
||||
'updateDate': Clipperz.PM.Date.formatDateWithUTCFormat(new Date()),
|
||||
'accessDate': Clipperz.PM.Date.formatDateWithUTCFormat(new Date()),
|
||||
|
||||
'retrieveDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'getDirectLoginIndexData'),
|
||||
'setDirectLoginIndexDataFunction': MochiKit.Base.method(this, 'setDirectLoginIndexData'),
|
||||
@@ -384,10 +374,6 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
|
||||
'deleteAllCleanTextData': function () {
|
||||
return Clipperz.Async.callbacks("User.Header.RecordIndex.deleteAllCleanTextData", [
|
||||
// MochiKit.Base.method(this, 'records'),
|
||||
// MochiKit.Base.values,
|
||||
// MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('deleteAllCleanTextData')),
|
||||
|
||||
MochiKit.Base.method(this, 'recordsData'),
|
||||
MochiKit.Base.methodcaller('deleteAllCleanTextData'),
|
||||
MochiKit.Base.method(this, 'directLoginsData'),
|
||||
@@ -410,21 +396,9 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
MochiKit.Base.method(this, 'directLoginsData'),
|
||||
MochiKit.Base.methodcaller('hasAnyCleanTextData')
|
||||
],
|
||||
// 'records': [
|
||||
// MochiKit.Base.method(this, 'records'),
|
||||
// MochiKit.Base.values,
|
||||
// MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('hasAnyCleanTextData')),
|
||||
// Clipperz.Async.collectAll
|
||||
// ]
|
||||
});
|
||||
|
||||
// deferredResult.addCallback(MochiKit.Base.values);
|
||||
// deferredResult.addCallback(MochiKit.Base.flattenArguments);
|
||||
// deferredResult.addCallback(function(someValues) {
|
||||
// return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);
|
||||
// });
|
||||
deferredResult.addCallback(Clipperz.Async.or);
|
||||
|
||||
deferredResult.callback();
|
||||
|
||||
return deferredResult;
|
||||
@@ -447,11 +421,6 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
]
|
||||
});
|
||||
deferredResult.addCallback(Clipperz.Async.or);
|
||||
// deferredResult.addCallback(MochiKit.Base.values);
|
||||
// deferredResult.addCallback(MochiKit.Base.flattenArguments);
|
||||
// deferredResult.addCallback(function(someValues) {
|
||||
// return MochiKit.Iter.some(someValues, MochiKit.Base.operator.identity);
|
||||
// });
|
||||
deferredResult.callback();
|
||||
|
||||
return deferredResult;
|
||||
@@ -482,9 +451,6 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
MochiKit.Base.method(this, 'recordsData'),
|
||||
MochiKit.Base.methodcaller('revertChanges'),
|
||||
|
||||
// MochiKit.Base.method(this, 'directLoginsData'),
|
||||
// MochiKit.Base.methodcaller('revertChanges'),
|
||||
|
||||
MochiKit.Base.method(this, 'records'),
|
||||
MochiKit.Base.bind(function (someRecords) {
|
||||
var recordReference;
|
||||
@@ -500,22 +466,10 @@ Clipperz.log("SKIPPING record " + reference + " as there are no stas associated
|
||||
}
|
||||
}, this),
|
||||
|
||||
// MochiKit.Base.method(this, 'directLogins'),
|
||||
MochiKit.Base.bind(function () {
|
||||
var directLoginReference;
|
||||
|
||||
// this.transientState().setValue('newDirectLoginReferences' + '.' + newDirectLogin.reference(), newDirectLogin);
|
||||
//
|
||||
// this.directLoginsIndex()[newDirectLogin.reference()] = newDirectLoginIndexValue;
|
||||
// this.directLoginsData().setValue(this.directLoginsIndex()[newDirectLogin.reference()], {'record': this.recordsIndex()[aRecord.reference()]});
|
||||
|
||||
|
||||
// for (directLoginReference in this.transientState().getValue('deleteDirectLoginReferences')) {
|
||||
// someDirectLogins[directLoginReference] = this.transientState().getValue('deleteDirectLoginReferences' + '.' + recordReference);
|
||||
// }
|
||||
|
||||
for (directLoginReference in this.transientState().getValue('newDirectLoginReferences')) {
|
||||
// this.directLoginsData().removeValue(this.directLoginsIndex()[directLoginReference]);
|
||||
delete this.directLoginsIndex()[directLoginReference];
|
||||
}
|
||||
}, this),
|
||||
|
||||
@@ -41,7 +41,7 @@ Clipperz.PM.DataModel.User = function (args) {
|
||||
this._connection = null;
|
||||
this._connectionVersion = 'current';
|
||||
|
||||
this._subscription = null;
|
||||
this._accountInfo = null;
|
||||
this._serverData = null;
|
||||
// this._serverLockValue = null;
|
||||
this._transientState = null;
|
||||
@@ -78,12 +78,12 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// this.setSubscription(new Clipperz.PM.DataModel.User.Subscription(someServerData['subscription']));
|
||||
'subscription': function () {
|
||||
return this._subscription;
|
||||
'accountInfo': function () {
|
||||
return this._accountInfo;
|
||||
},
|
||||
|
||||
'setSubscription': function (aValue) {
|
||||
this._subscription = aValue;
|
||||
'setAccountInfo': function (aValue) {
|
||||
this._accountInfo = aValue;
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@@ -247,19 +247,16 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
var deferredResult;
|
||||
|
||||
deferredResult = new Clipperz.Async.Deferred("User.login", {trace:false});
|
||||
// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3});
|
||||
deferredResult.addMethod(this, 'getPassphrase');
|
||||
deferredResult.addCallback(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue);
|
||||
deferredResult.addCallback(Clipperz.Async.deferredIf("Is the passphrase an OTP", [
|
||||
// MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':1}),
|
||||
MochiKit.Base.method(this, 'getCredentials'),
|
||||
MochiKit.Base.method(this.connection(), 'redeemOneTimePassword'),
|
||||
MochiKit.Base.method(this.data(), 'setValue', 'passphrase')
|
||||
], []));
|
||||
deferredResult.addErrback(MochiKit.Base.method(this, 'getPassphrase'));
|
||||
deferredResult.addMethod(this.connection(), 'login', false);
|
||||
deferredResult.addMethod(this, 'setupConnectionInfo');
|
||||
// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn');
|
||||
deferredResult.addMethod(this, 'setupAccountInfo');
|
||||
deferredResult.addErrback (MochiKit.Base.method(this, 'handleConnectionFallback'));
|
||||
|
||||
deferredResult.callback();
|
||||
@@ -295,9 +292,10 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
'setupConnectionInfo': function (aValue) {
|
||||
'setupAccountInfo': function (aValue) {
|
||||
//console.log("User.setupAccountInfo", aValue, aValue['accountInfo']);
|
||||
// this.setLoginInfo(aValue['loginInfo']);
|
||||
this.setSubscription(new Clipperz.PM.DataModel.User.Subscription(aValue['subscription']));
|
||||
this.setAccountInfo(new Clipperz.PM.DataModel.User.AccountInfo(aValue['accountInfo']));
|
||||
},
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@@ -511,6 +509,19 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
|
||||
//=========================================================================
|
||||
|
||||
'getTags': function () {
|
||||
return Clipperz.Async.callbacks("User.getTags", [
|
||||
MochiKit.Base.method(this, 'getRecords'),
|
||||
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('tags')),
|
||||
Clipperz.Async.collectAll,
|
||||
MochiKit.Base.flattenArray,
|
||||
Clipperz.Base.arrayWithUniqueValues
|
||||
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
//=========================================================================
|
||||
|
||||
'getRecords': function () {
|
||||
return Clipperz.Async.callbacks("User.getRecords", [
|
||||
MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'),
|
||||
@@ -519,6 +530,36 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
'getRecordsInfo': function (someInfo, shouldIncludeArchivedCards) {
|
||||
return Clipperz.Async.callbacks("User.getRecordsInfo", [
|
||||
MochiKit.Base.method(this, 'getRecords'),
|
||||
MochiKit.Base.partial(MochiKit.Base.map, Clipperz.Async.collectResults("collectResults", someInfo, {trace:false})),
|
||||
Clipperz.Async.collectAll
|
||||
], {trace:false});
|
||||
},
|
||||
/*
|
||||
'filterRecordsInfo': function (someArgs) {
|
||||
var info = (someArgs.info ? someArgs.info : Clipperz.PM.DataModel.Record.defaultCardInfo);
|
||||
var searchField = (someArgs.searchField ? someArgs.searchField : Clipperz.PM.DataModel.Record.defaultSearchField);
|
||||
var includeArchived = (someArgs.includeArchived ? someArgs.includeArchived : false);
|
||||
var regExp = (someArgs.regExp ? someArgs.regExp : Clipperz.PM.DataModel.Record.regExpForSearch(''));
|
||||
|
||||
if (someArgs.regExp) {
|
||||
regExp = regExp;
|
||||
} else if (someArgs.search) {
|
||||
regExp = Clipperz.PM.DataModel.Record.regExpForSearch(someArgs.search);
|
||||
} else if (someArgs.tag) {
|
||||
regExp = Clipperz.PM.DataModel.Record.regExpForTag(someArgs.tag);
|
||||
} else {
|
||||
regExp = Clipperz.PM.DataModel.Record.regExpForSearch('');
|
||||
};
|
||||
|
||||
return Clipperz.Async.callbacks("User.filterRecordsInfo", [
|
||||
MochiKit.Base.method(this, 'getRecordsInfo', info, includeArchived),
|
||||
MochiKit.Base.partial(MochiKit.Base.filter, function (aCardInfo) { regExp.lastIndex = 0; return regExp.test(aCardInfo[searchField]);})
|
||||
], {trace:false});
|
||||
},
|
||||
*/
|
||||
'recordWithLabel': function (aLabel) {
|
||||
return Clipperz.Async.callbacks("User.recordWithLabel", [
|
||||
MochiKit.Base.method(this, 'getRecords'),
|
||||
|
||||
Reference in New Issue
Block a user