75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
|
function cleanJsonString(jsonString) {
|
|||
|
// Remove invisible and non-printable characters (excluding newlines, carriage returns, and tabs)
|
|||
|
const cleanedString = jsonString.replace(/[^\x20-\x7E\r\n\t]+/g, '');
|
|||
|
|
|||
|
// Remove leading or trailing whitespace
|
|||
|
const trimmedString = cleanedString.trim();
|
|||
|
|
|||
|
// Ensure the string is enclosed within curly braces if it’s a JSON object
|
|||
|
if (!trimmedString.startsWith('{') || !trimmedString.endsWith('}')) {
|
|||
|
throw new Error('Invalid JSON format: Missing opening or closing brace.');
|
|||
|
}
|
|||
|
|
|||
|
return trimmedString;
|
|||
|
}
|
|||
|
|
|||
|
const addressNames = {
|
|||
|
"0x6cb4b39bec23a921c9a20d061bf17d4640b0d39e":"woodburn.au"
|
|||
|
};
|
|||
|
function addressName(address) {
|
|||
|
if (addressNames.hasOwnProperty(address)){
|
|||
|
return addressNames[address];
|
|||
|
}
|
|||
|
return address;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
var message = "New DAO transaction: ";
|
|||
|
const parsed = $('Parser').first().json;
|
|||
|
message += parsed.method;
|
|||
|
|
|||
|
if (parsed.method == "Submit Vote"){
|
|||
|
message += "\n"+ addressName(parsed.member) + " voted ";
|
|||
|
if (parsed.vote == 1){
|
|||
|
message += "for";
|
|||
|
} else {
|
|||
|
message += "against";
|
|||
|
}
|
|||
|
message += " proposal #"+parsed.proposal;
|
|||
|
message += " using " + parsed.votes + " votes";
|
|||
|
}
|
|||
|
else if (parsed.method == "Sponsor Proposal"){
|
|||
|
message += "\n"+ addressName(parsed.member) + " sponsored ";
|
|||
|
message += "proposal #"+parsed.proposal;
|
|||
|
}
|
|||
|
else if (parsed.method == "Submit Proposal"){
|
|||
|
message += "\n"+ addressName($('HTTP Request').first().json.result.from);
|
|||
|
message += " created proposal #" + parsed.proposal;
|
|||
|
try {
|
|||
|
const cleanedJsonString = cleanJsonString(parsed.data.details);
|
|||
|
const details = JSON.parse(cleanedJsonString);
|
|||
|
message += "\nProposal: " + details.title;
|
|||
|
message += "\nDescription: " + details.description;
|
|||
|
|
|||
|
if (details.contentURI != ""){
|
|||
|
message += "\nURL: " + details.contentURI;
|
|||
|
}
|
|||
|
}
|
|||
|
catch (error){
|
|||
|
message += "\nProposal details failed to parse";
|
|||
|
message += error;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (parsed.method == "Process Proposal"){
|
|||
|
message += "\n"+ addressName($('HTTP Request').first().json.result.from);
|
|||
|
message += " executed proposal #" + parsed.proposal;
|
|||
|
}
|
|||
|
|
|||
|
return {
|
|||
|
"message":message,
|
|||
|
"explorer":"https://optimistic.etherscan.io/tx/"+$('HTTP Request').first().json.result.transactionHash,
|
|||
|
"proposalURL":"https://admin.daohaus.club/#/molochV3/0xa/0xf4604948ad5365840803297bf81cd9a46c36fce7/proposal/"+parsed.proposal
|
|||
|
};
|
|||
|
|
|||
|
|