@owstack/wallet-service
Version:
A service for multisignature HD wallets
71 lines (61 loc) • 1.72 kB
JavaScript
const owsCommon = require('@owstack/ows-common');
const Uuid = require('uuid');
const lodash = owsCommon.deps.lodash;
class Email {}
Email.create = function (opts) {
opts = opts || {};
const x = new Email();
x.version = 2;
const now = Date.now();
x.createdOn = Math.floor(now / 1000);
x.id = lodash.padStart(now, 14, '0') + Uuid.v4();
x.walletId = opts.walletId;
x.copayerId = opts.copayerId;
x.from = opts.from;
x.to = opts.to;
x.subject = opts.subject;
x.bodyPlain = opts.bodyPlain;
x.bodyHtml = opts.bodyHtml;
x.status = 'pending';
x.attempts = 0;
x.lastAttemptOn = null;
x.notificationId = opts.notificationId;
x.language = opts.language || 'en';
return x;
};
Email.fromObj = function (obj) {
const x = new Email();
x.version = obj.version;
x.createdOn = obj.createdOn;
x.id = obj.id;
x.walletId = obj.walletId;
x.copayerId = obj.copayerId;
x.from = obj.from;
x.to = obj.to;
x.subject = obj.subject;
if (parseInt(x.version) == 1) {
x.bodyPlain = obj.body;
x.version = 2;
} else {
x.bodyPlain = obj.bodyPlain;
}
x.bodyHtml = obj.bodyHtml;
x.status = obj.status;
x.attempts = obj.attempts;
x.lastAttemptOn = obj.lastAttemptOn;
x.notificationId = obj.notificationId;
x.language = obj.language;
return x;
};
Email.prototype._logAttempt = function (result) {
this.attempts++;
this.lastAttemptOn = Math.floor(Date.now() / 1000);
this.status = result;
};
Email.prototype.setSent = function () {
this._logAttempt('sent');
};
Email.prototype.setFail = function () {
this._logAttempt('fail');
};
module.exports = Email;