snappymail/dev/Model/OpenPgpKey.js

111 lines
2.3 KiB
JavaScript
Raw Normal View History

2014-09-05 06:49:03 +08:00
(function () {
2014-08-20 23:03:12 +08:00
2014-08-25 23:49:01 +08:00
'use strict';
2014-08-20 23:03:12 +08:00
var
2014-10-04 19:58:01 +08:00
_ = require('_'),
ko = require('ko'),
Utils = require('Common/Utils'),
PgpStore = require('Stores/User/Pgp'),
2014-10-04 19:58:01 +08:00
AbstractModel = require('Knoin/AbstractModel')
2014-08-20 23:03:12 +08:00
;
/**
* @param {string} iIndex
* @param {string} sGuID
* @param {string} sID
* @param {array} aIDs
* @param {array} aUserIDs
* @param {array} aEmails
2014-08-20 23:03:12 +08:00
* @param {boolean} bIsPrivate
* @param {string} sArmor
* @param {string} sUserID
2014-08-20 23:03:12 +08:00
* @constructor
*/
function OpenPgpKeyModel(iIndex, sGuID, sID, aIDs, aUserIDs, aEmails, bIsPrivate, sArmor, sUserID)
2014-08-20 23:03:12 +08:00
{
2014-10-04 19:58:01 +08:00
AbstractModel.call(this, 'OpenPgpKeyModel');
2014-08-20 23:03:12 +08:00
this.index = iIndex;
this.id = sID;
this.ids = Utils.isNonEmptyArray(aIDs) ? aIDs : [sID];
2014-08-20 23:03:12 +08:00
this.guid = sGuID;
this.users = aUserIDs;
this.emails = aEmails;
2014-08-20 23:03:12 +08:00
this.armor = sArmor;
this.isPrivate = !!bIsPrivate;
this.selectUser(sUserID);
2014-08-20 23:03:12 +08:00
this.deleteAccess = ko.observable(false);
}
2014-10-04 19:58:01 +08:00
_.extend(OpenPgpKeyModel.prototype, AbstractModel.prototype);
2014-08-20 23:03:12 +08:00
OpenPgpKeyModel.prototype.index = 0;
OpenPgpKeyModel.prototype.id = '';
OpenPgpKeyModel.prototype.ids = [];
2014-08-20 23:03:12 +08:00
OpenPgpKeyModel.prototype.guid = '';
OpenPgpKeyModel.prototype.user = '';
OpenPgpKeyModel.prototype.users = [];
2014-08-20 23:03:12 +08:00
OpenPgpKeyModel.prototype.email = '';
OpenPgpKeyModel.prototype.emails = [];
2014-08-20 23:03:12 +08:00
OpenPgpKeyModel.prototype.armor = '';
OpenPgpKeyModel.prototype.isPrivate = false;
OpenPgpKeyModel.prototype.getNativeKey = function ()
{
var oKey = null;
try
{
oKey = PgpStore.openpgp.key.readArmored(this.armor);
if (oKey && !oKey.err && oKey.keys && oKey.keys[0])
{
return oKey;
}
}
catch (e)
{
Utils.log(e);
}
return null;
};
OpenPgpKeyModel.prototype.getNativeKeys = function ()
{
var oKey = this.getNativeKey();
return oKey && oKey.keys ? oKey.keys : null;
};
OpenPgpKeyModel.prototype.select = function (sPattern, sProperty)
{
if (this[sProperty])
{
var index = this[sProperty].indexOf(sPattern);
if (index !== -1)
{
this.user = this.users[index];
this.email = this.emails[index];
}
}
2016-04-21 01:12:51 +08:00
};
OpenPgpKeyModel.prototype.selectUser = function (sUser)
{
this.select(sUser, 'users');
2016-04-21 01:12:51 +08:00
};
OpenPgpKeyModel.prototype.selectEmail = function (sEmail)
{
this.select(sEmail, 'emails');
2016-04-21 01:12:51 +08:00
};
2014-08-20 23:03:12 +08:00
module.exports = OpenPgpKeyModel;
}());