dgf-prototype/backend/src/proposals.js

30 lines
942 B
JavaScript
Raw Normal View History

const { proposals } = require('./contracts');
const read = require('./read');
const { broadcastMessage } = require('./matrix');
// Subscribe to proposal events
const start = () => {
proposals.on('NewProposal', async (proposalIndex) => {
// TODO: Cache these in leveldb so we know when we've already seen one and sent to matrix
console.log('New Proposal, index', proposalIndex);
const proposal = await proposals.proposals(proposalIndex);
console.log('postId:', proposal.postId);
// Read post from database
const post = await read(proposal.postId);
console.log('post.content:', post.content);
// Send matrix room event
let message = `Proposal ${proposalIndex}\n\n${post.content}`;
if (post.embeddedData && Object.entries(post.embeddedData).length) {
message += `\n\n${JSON.stringify(post.embeddedData, null, 2)}`;
}
broadcastMessage(message);
});
};
module.exports = {
start,
};