Skip to content

Commit

Permalink
SteemPlus V2: Steemconnect Integration
Browse files Browse the repository at this point in the history
  • Loading branch information
stoodkev committed Jan 4, 2018
1 parent 828de60 commit a5af8ae
Show file tree
Hide file tree
Showing 11 changed files with 217 additions and 207 deletions.
117 changes: 68 additions & 49 deletions main.js
Original file line number Diff line number Diff line change
@@ -1,70 +1,90 @@
var xhttp = new XMLHttpRequest();
const steemit =(window.location.href.match('steemit.com')||window.location.href.match('mspsteem.com'));
const busy =window.location.href.match('busy.org');
const user=steemit?document.getElementsByClassName("Header__logo")[0].firstChild.href.split('@')[1].split('/')[0]:($('.Topnav__item-user a')[0].href + '/feed').split('@')[1].split('/')[0];
var market =null,SBDperSteem=0;
const DEFAULT_FEED_SIZE=3;
var url=window.location.href;


steem.api.getDynamicGlobalProperties( {}).then((globalProp)=>
{
const totalSteem = Number(globalProp.total_vesting_fund_steem.split(' ')[0]);
const totalVests = Number(globalProp.total_vesting_shares.split(' ')[0]);
updateSteemPrice();
chrome.storage.local.get(['del','acc_v','ben','drop','badge','username', 'nb_posts','resteem','sort','tag','list_tags','voted_check', 'rep_feed', 'rep_feed_check', 'whitelist', 'blacklist','feedp'], function (items) {
const delegation=(items.del==undefined||items.del=="show");
const account_value=(items.acc_v==undefined||items.acc_v=="show");
const beneficiaries=(items.ben==undefined||items.ben=="show");
const dropdown=(items.drop==undefined||items.drop=="show");
const rank=(items.badge==undefined||items.badge=="show");
const feedp=(items.feedp==undefined||items.feedp=="show");
const resteem= (items.resteem !== undefined)?items.resteem:'show';
var whitelist=(items.whitelist !== undefined)?items.whitelist:"";
var blacklist=(items.blacklist !== undefined)?items.blacklist:"";
var rep_feed_check=(items.rep_feed_check!==undefined)?items.rep_feed_check:null;
var rep_feed=(items.rep_feed!==undefined)?items.rep_feed:null;
var sort=(items.sort!==undefined)?items.sort:null;
var tag=(items.tag!==undefined)?items.tag:'show';
var list_tags=(items.list_tags!==undefined)?items.list_tags:null;
var voted_check=(items.voted_check!==undefined)?items.voted_check:false;
var nb_posts=(items.nb_posts!==undefined&&items.nb_posts<10&&items.nb_posts!=='')?items.nb_posts:DEFAULT_FEED_SIZE;
chrome.storage.local.get(['del','acc_v','ben','drop','badge','username', 'nb_posts','resteem','sort','tag','list_tags','voted_check', 'rep_feed', 'rep_feed_check', 'whitelist', 'blacklist','feedp','sessionToken','tokenExpire'], function (items) {
var steemConnect=(items.sessionToken===undefined||items.tokenExpire===undefined)?{connect:false}:{connect:true,sessionToken:items.sessionToken,tokenExpire:items.tokenExpire};
chrome.runtime.sendMessage({ to: 'steemConnect', order: 'start',data:{steemConnect:steemConnect}} );

if(steemConnect.connect===true&&steemConnect.tokenExpire>Date.now()){
initializeSteemConnect(steemConnect.sessionToken);
sc2.me().then((me)=> {
console.log(me);
const account=me.account;
const user=me.name;
const delegation=(items.del==undefined||items.del=="show");
const account_value=(items.acc_v==undefined||items.acc_v=="show");
const beneficiaries=(items.ben==undefined||items.ben=="show");
const dropdown=(items.drop==undefined||items.drop=="show");
const rank=(items.badge==undefined||items.badge=="show");
const feedp=(items.feedp==undefined||items.feedp=="show");
const resteem= (items.resteem !== undefined)?items.resteem:'show';
var whitelist=(items.whitelist !== undefined)?items.whitelist:"";
var blacklist=(items.blacklist !== undefined)?items.blacklist:"";
var rep_feed_check=(items.rep_feed_check!==undefined)?items.rep_feed_check:null;
var rep_feed=(items.rep_feed!==undefined)?items.rep_feed:null;
var sort=(items.sort!==undefined)?items.sort:null;
var tag=(items.tag!==undefined)?items.tag:'show';
var list_tags=(items.list_tags!==undefined)?items.list_tags:null;
var voted_check=(items.voted_check!==undefined)?items.voted_check:false;
var nb_posts=(items.nb_posts!==undefined&&items.nb_posts<10&&items.nb_posts!=='')?items.nb_posts:DEFAULT_FEED_SIZE;

if(delegation)
chrome.runtime.sendMessage({ to: 'delegation', order: 'start',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests}} });
if(account_value)
chrome.runtime.sendMessage({ to: 'acc_v', order: 'start',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},market:market}});
if(beneficiaries&&steemit)
chrome.runtime.sendMessage({ to: 'ben', order: 'start'});
if(rank&&steemit)
chrome.runtime.sendMessage({ to: 'rank', order: 'start'});
if(steemit&&feedp&&resteem==='whitelist_radio'||resteem==='blacklist_radio')
chrome.runtime.sendMessage({ to: 'resteem', order: 'start',data:{steemit:steemit,busy:busy,resteem:{resteem:resteem,whitelist:whitelist,blacklist:blacklist}}});
if(steemit&&feedp)
chrome.runtime.sendMessage({ to: 'feedp', order: 'start',data:{steemit:steemit,busy:busy,feedp:{resteem:resteem,whitelist:whitelist,blacklist:blacklist,rep_feed:rep_feed,rep_feed_check:rep_feed_check,tag:tag,list_tags:list_tags,voted_check:voted_check,sort:sort,nb_posts:nb_posts}}});
if(delegation)
chrome.runtime.sendMessage({ to: 'delegation', order: 'start',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},user:user} });
if(account_value)
chrome.runtime.sendMessage({ to: 'acc_v', order: 'start',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},market:market}});
if(beneficiaries&&steemit)
chrome.runtime.sendMessage({ to: 'ben', order: 'start',data:{user:user}});
if(rank&&steemit)
chrome.runtime.sendMessage({ to: 'rank', order: 'start'});
if(steemit&&feedp&&resteem==='whitelist_radio'||resteem==='blacklist_radio')
chrome.runtime.sendMessage({ to: 'resteem', order: 'start',data:{steemit:steemit,busy:busy,resteem:{resteem:resteem,whitelist:whitelist,blacklist:blacklist}}});
if(steemit&&feedp)
chrome.runtime.sendMessage({ to: 'feedp', order: 'start',data:{steemit:steemit,busy:busy,feedp:{resteem:resteem,whitelist:whitelist,blacklist:blacklist,rep_feed:rep_feed,rep_feed_check:rep_feed_check,tag:tag,list_tags:list_tags,voted_check:voted_check,sort:sort,nb_posts:nb_posts}}});

$(document).click(function(){
setTimeout(function(){
if(url!==window.location.href)
{
console.log('onClick events',url,window.location.href);
if(delegation)
chrome.runtime.sendMessage({ to: 'delegation', order: 'click',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests}} });
if(account_value)
chrome.runtime.sendMessage({ to: 'acc_v', order: 'click',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},market:market} });
if(beneficiaries&&steemit)
chrome.runtime.sendMessage({ to: 'ben', order: 'click'});
if(rank&&steemit)
chrome.runtime.sendMessage({ to: 'rank', order: 'click'});
$(document).click(function(){
setTimeout(function(){
if(url!==window.location.href)
{
if(delegation)
chrome.runtime.sendMessage({ to: 'delegation', order: 'click',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},user:user} });
if(account_value)
chrome.runtime.sendMessage({ to: 'acc_v', order: 'click',data:{steemit:steemit,busy:busy,global:{totalSteem:totalSteem,totalVests:totalVests},market:market} });
if(beneficiaries&&steemit)
chrome.runtime.sendMessage({ to: 'ben', order: 'click',data:{user:user}});
if(rank&&steemit)
chrome.runtime.sendMessage({ to: 'rank', order: 'click'});

url=window.location.href;
}
if(dropdown&&steemit)
chrome.runtime.sendMessage({ to: 'drop', order: 'click',data:{market:market} });
},0);
url=window.location.href;
}
if(dropdown&&steemit)
chrome.runtime.sendMessage({ to: 'drop', order: 'click',data:{market:market} });
},200);
});
});
}
});
});

function initializeSteemConnect(sessionToken){
sc2.init({
app: 'steem-plus',
callbackURL: 'https://steemit.com/@stoodkev',
accessToken: sessionToken,
scope: ['vote', 'comment','comment_options']
});
}


function updateSteemPrice()
{
getSteemPrice();
Expand All @@ -89,5 +109,4 @@ function getSteemPrice(){
market={SBDperSteem:SBDperSteem,priceSteem:priceSteem,changeSteem:changeSteem,priceSBD:priceSBD,changeSBD:changeSBD};

});

}
6 changes: 4 additions & 2 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

"name": "SteemPlus",
"description": "Lightweight toolbox for Steemit",
"version": "1.13.2.0",
"version": "2.0.0.0",

"browser_action": {
"default_icon": "src/img/logo.png",
Expand Down Expand Up @@ -47,6 +47,7 @@
"matches": ["https://steemit.com/*","https://busy.org/*","https://mspsteem.com/*"],
"js": ["vendor/jquery.js","vendor/sc2.min.js","vendor/timeago.js","vendor/steemjs.js",
"main.js",
"src/js/loginSteemPlus.js",
"src/js/delegate.js",
"src/js/account_val.js",
"src/js/beneficiaries.js",
Expand All @@ -59,7 +60,8 @@
"src/css/beneficiaries.css",
"src/css/rank.css",
"src/css/resteem.css",
"src/css/feedplus.css"],
"src/css/feedplus.css",
"src/css/loginSteemPlus.css"],
"permissions": [
"activeTab",
"storage"
Expand Down
27 changes: 12 additions & 15 deletions popup.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,22 @@
</head>
<body>
<div>
<div id='disconnected'>
<h1>SteemPlus</h1>
<img src='src/img/unlogged.png'/>
<p>Please connect to SteemPlus via SteemConnect.</p>
</div>
<div id='connected'>
<img id="logo" src="src/img/steemplus.png" width="200px">
<div class="menu">Upvote<div class="more"></div></div>
<div class="content">
<div class="back_menu">Back</div>
<div id="vote" >Upvote</div>
<br/><h4>Voting weight (%)</h4>
<div id="slidecontainer">
<input type="range" min="0" max="100" value="0" class="slider" id="myRange">
</div>
<input id="weight" type="number">
<br/><h4>Username</h4>
<input id="username" type="text">
<br/><div class="w3-light-grey w3-round" style="margin-top: 10px;">
<div id="bar" class="w3-container w3-round w3-blue w3-center" style="width:0%">0%</div>
</div>
<h4>Private Posting WIF</h4>
<input id="wif" type="password" type="text">
<br/><br/>
<p style=" text-align: justify;">All this data will be stored on your PC, nothing is kept online.</p>
<br/><h4>Voting weight (%)</h4>
<div id="slidecontainer">
<input type="range" min="0" max="100" value="0" class="slider" id="myRange">
</div>
<input id="weight" type="number">
</div>
<div class="menu">Options<div class="more"></div></div>
<div class="content">
Expand All @@ -60,7 +57,7 @@ <h4>Account Value</h4>
<input type="radio" name="acc_v" value="show" id="show"> <label for="show">Show</label> <br>
<input type="radio" name="acc_v" value="hide" id="hide"> <label for="hide">Hide</label> <br>
</div>

</div>
<div id="powered"><p>Powered by <b>Adsactly</b></p></div>
<script src="vendor/sc2.min.js"></script>
<script src="vendor/jquery.js"></script>
Expand Down
102 changes: 41 additions & 61 deletions popup.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,36 @@
document.getElementById('vote').addEventListener("click", Upvote);



var username;
var wif;
var weight;
var vpow;
var width=0;
var badge,ben,feedp,del,drop,acc_v;

var me,acc;
var menus=document.getElementsByClassName("menu");
var content=document.getElementsByClassName("content");
var back=document.getElementsByClassName("back_menu");
// Get local parameters stored using Chrome Storage API
chrome.storage.local.get(['username','wif','weight','resteem','blacklist','whitelist','reputation','rep','badge','del','ben','feedp','drop','acc_v'], function (items) {
username=items.username;
wif=items.wif;
chrome.storage.local.get(['sessionToken','tokenExpire','weight','resteem','blacklist','whitelist','reputation','rep','badge','del','ben','feedp','drop','acc_v'], function (items) {
var steemConnect=(items.sessionToken===undefined||items.tokenExpire===undefined||items.tokenExpire<Date.now())?{connect:false}:{connect:true,sessionToken:items.sessionToken,tokenExpire:items.tokenExpire};

if(steemConnect.connect===true)
{
sc2.init({
app: 'steem-plus',
callbackURL: 'https://steemit.com/@stoodkev',
accessToken: steemConnect.sessionToken,
scope: ['vote', 'comment','comment_options']
});
sc2.me().then((mee)=> {
me=mee.name;
acc=mee.account;
console.log(me,acc,mee);
$('#connected').css('display','block');
$('#disconnected').css('display','none');
});
}
else {
$('#disconnected').css('display','block');
$('#connected').css('display','none');
}
weight=items.weight;
badge=items.badge==undefined?'show':items.badge;
feedp=items.feedp==undefined?'show':items.feedp;
Expand All @@ -25,24 +40,18 @@ chrome.storage.local.get(['username','wif','weight','resteem','blacklist','white
drop=items.drop==undefined?'show':items.drop;
//console.log(items.resteem);
if(weight!==undefined)
{
document.getElementById('weight').value=weight;
document.getElementById("myRange").value=weight;
}
if(username!==undefined)
document.getElementById('username').value=username;
if(wif!==undefined)
document.getElementById('wif').value=wif;
{
document.getElementById('weight').value=weight;
document.getElementById("myRange").value=weight;
}

$('input[name=badges][value='+badge+']').prop('checked',true);
$('input[name=feedp][value='+feedp+']').prop('checked',true);
$('input[name=del][value='+del+']').prop('checked',true);
$('input[name=ben][value='+ben+']').prop('checked',true);
$('input[name=drop][value='+drop+']').prop('checked',true);
$('input[name=acc_v][value='+acc_v+']').prop('checked',true);



getAccounts();
});

//Handles menu navigation
Expand All @@ -63,7 +72,6 @@ Array.from(back).forEach(function(element, i, arr) {
});
});

//Handles user inputs (username/voting weight/WIF)
document.getElementById("myRange").oninput = function() {
document.getElementById("weight").value = this.value;
}
Expand All @@ -74,12 +82,8 @@ document.getElementById("weight").onblur = function() {
weight:document.getElementById('weight').value
});
}
$("#username").blur(function(){chrome.storage.local.set({
username: document.getElementById('username').value
});});
$("#wif").blur(function(){chrome.storage.local.set({
wif:document.getElementById('wif').value
});});


$("#myRange").blur(function(){chrome.storage.local.set({
weight:document.getElementById('weight').value
});});
Expand Down Expand Up @@ -117,47 +121,26 @@ $(document).on("change","input[name=drop]",function(){
});
});




function getAccounts(){
steem.api.getAccounts([document.getElementById('username').value], function(err, response){
if(response[0]!=null&&response[0]!=undefined&&document.getElementById('wif').value!='')
{getVotingPower(response)}});
}

// Save all parameters locally before upvote
function SaveParameters(){
if(document.getElementById('weight').value<=0||document.getElementById('weight').value>100||document.getElementById('weight').value=='')
if(document.getElementById('weight').value<0||document.getElementById('weight').value>100||document.getElementById('weight').value=='')
{
alert('The voting power has to be between 0 and 100%');
}
else
{
steem.api.getAccounts([document.getElementById('username').value], function(err, response){
if(response[0]!=null&&response[0]!=undefined&&document.getElementById('wif').value!='')
{
chrome.storage.local.set({
username: document.getElementById('username').value,
weight:document.getElementById('weight').value,
wif:document.getElementById('wif').value
});
username=document.getElementById('username').value;
wif=document.getElementById('wif').value;
weight=document.getElementById('weight').value;
getVotingPower(response);

}
else alert('Check your username and private wif!');

chrome.storage.local.set({
weight:document.getElementById('weight').value
});
weight=document.getElementById('weight').value;
getVotingPower();
}
}

// Calculates and show voting power
function getVotingPower(response) {
var secondsago = (new Date - new Date(response[0].last_vote_time + "Z")) / 1000;
vpow = response[0].voting_power + (10000 * secondsago / 432000);
function getVotingPower() {
var secondsago = (new Date - new Date(acc.last_vote_time + "Z")) / 1000;
vpow = acc.voting_power + (10000 * secondsago / 432000);
vpow = Math.min(vpow / 100, 100).toFixed(2);

if (width === 0) {
Expand Down Expand Up @@ -187,18 +170,15 @@ function Upvote(){
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
tab=tabs[0].url;
if(tab.split('@')[tab.split('@').length-1].split('/')[0]!==''&&tab.split('@')[tab.split('@').length-1].split('/')[1]!=='' )
steem.broadcast.vote(
document.getElementById('wif').value,
document.getElementById('username').value, // Voter
sc2.vote(
me, // Voter
tab.split('@')[tab.split('@').length-1].split('/')[0], // Author
tab.split('@')[tab.split('@').length-1].split('/')[1], // Permlink
document.getElementById('weight').value*100, // Weight (10000 = 100%)
function(err, result) {
console.log(err,result);
if(err!==undefined&&err!==null&&err.cause!==undefined&&err.cause.toString().includes('Voting weight is too small, please accumulate more voting power or steem power.'))
alert('Voting weight is too small, please accumulate more voting power or steem power.');
else if(err!==null&&err.name!==null)
alert('Check your WIF');
else {
chrome.tabs.getSelected(null, function (tab) {
var code = 'window.location.reload();';
Expand Down

0 comments on commit a5af8ae

Please sign in to comment.