import _ from 'lodash'; /* * notifications examples * * NewCopayer - * NewAddress - * NewTxProposal - (amount) * TxProposalAcceptedBy - (txProposalId, copayerId) * TxProposalRejectedBy - (txProposalId, copayerId) * txProposalFinallyRejected - txProposalId * txProposalFinallyAccepted - txProposalId * * NewIncomingTx (address, txid) * NewOutgoingTx - (txProposalId, txid) * * data Examples: * { amount: 'xxx', address: 'xxx'} * { txProposalId: 'xxx', copayerId: 'xxx' } * * Data is meant to provide only the needed information * to notify the user * */ export interface INotification { version: string; createdOn: number; id: number; type: string; data: any; walletId: string; creatorId: string; isCreator: boolean; } export class Notification { version: string; createdOn: number; id: string | number; type: string; data: any; walletId: string; creatorId: string; isCreator: boolean; static create(opts) { opts = opts || {}; const x = new Notification(); x.version = '1.0.0'; const now = Date.now(); x.createdOn = Math.floor(now / 1000); x.id = _.padStart(now.toString(), 14, '0') + _.padStart(opts.ticker || 0, 4, '0'); x.type = opts.type || 'general'; x.data = opts.data; x.walletId = opts.walletId; x.creatorId = opts.creatorId; x.isCreator = opts.isCreator; return x; } static fromObj(obj) { const x = new Notification(); x.version = obj.version; x.createdOn = obj.createdOn; x.id = obj.id; (x.type = obj.type), (x.data = obj.data); x.walletId = obj.walletId; x.creatorId = obj.creatorId; x.isCreator = obj.isCreator; return x; } }