| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- var ACTIVE_USER = null;
- steem.api.setOptions({ url: STEEMIT_API_URL});
- function loadDataAnon (pendingLogin) {
- if (!pendingLogin) {
- populateVotes();
- }
- }
- function loadDataAuthenticated () {
- populateVotes();
- }
- $(document).ready(function () {
- console.log('ready');
- var isPendingLogin = window.sessionStorage && window.sessionStorage.getItem('steemit-active-user') != null;
-
- loadDataAnon(isPendingLogin);
- });
- sessionLogin();
- function sessionLogin () {
- if (window.sessionStorage) {
- var s = window.sessionStorage;
- var activeUser = s.getItem('steemit-active-user');
-
- if (activeUser) {
- activeUser = JSON.parse(activeUser);
- login(activeUser.username, activeUser.postingKey, function (err, account) {
- if (err) {
- return;
- }
- loadDataAuthenticated();
- });
- }
- }
- }
- function storeSessionLogin() {
- if (window.sessionStorage) {
- var s = window.sessionStorage;
- s.setItem('steemit-active-user', JSON.stringify({username: ACTIVE_USER.username, postingKey: ACTIVE_USER.postingKey}));
- }
- }
- function login (username, postingKey, cb) {
- if (!steem.auth.isWif(postingKey)) {
- cb('login-invalid-postingKey');
- return;
- }
- steem.api.getAccounts([username], function (err, accounts) {
- if (err) {
- console.log('could not login: ' + err);
- if (cb) {
- cb('login-unknown');
- }
- return;
- }
- if (accounts.length > 1) {
- console.log('multiple accounts are not implemented... not picking a default. bug me or send a pull request');
- if (cb) {
- cb('login-multiple-accounts-not-implemented');
- }
- return;
- }
- var account = accounts[0];
-
-
- var pubWif = account.posting.key_auths[0][0];
- var isValid = steem.auth.wifIsValid(postingKey, pubWif);
-
- if (!isValid) {
- cb('login-invalid');
- return;
- }
-
- ACTIVE_USER = {
- username: username,
- postingKey: postingKey,
- account: account
- };
- if (cb) {
- cb(null, ACTIVE_USER);
- }
- });
- }
- function postsByTag (tag, limit) {
- limit = limit || 5; // todo: is 0 valid/no limit/default limit?
- steem.api.getDiscussionsByBlog({tag: tag, limit: limit}, function(err, result) {
- console.log(err, result);
- });
- }
- function votes (cb) {
- steem.api.getActiveVotes(STEEMIT_AUTHOR, STEEMIT_PERMLINK, function (err, votes) {
- if (err) {
- console.log('error getting votes: ' + err);
- if (cb) {
- cb('votes-unknown');
- }
- return;
- }
- if (cb) {
- cb(null, votes);
- }
- });
- }
- function vote (weight, power, cb) {
- if (!ACTIVE_USER) {
- console.err('could not vote because not logged in');
- if (cb) {
- cb('vote-not-logged-in');
- }
- return;
- }
-
- weight = weight || 100;
- power = power || 100;
- var voter = ACTIVE_USER.account.name;
- var voteWeight = power * weight;
-
- steem.broadcast.vote(ACTIVE_USER.postingKey, voter, STEEMIT_AUTHOR, STEEMIT_PERMLINK, voteWeight, function (err, result) {
- if (err) {
- console.error('could not vote: ' + err);
- if (cb) {
- cb('vote-unknown');
- }
- return;
- }
-
- if (cb) {
- cb();
- }
- });
- }
- function logoutUser (loginFormId) {
- if (window.sessionStorage) {
- var s = window.sessionStorage;
- s.removeItem('steemit-active-user');
- }
- ACTIVE_USER = null;
- loadDataAuthenticated();
- cancelLoginUser(loginFormId);
- }
- function cancelLoginUser (loginFormId) {
- $('#' + loginFormId + '-container').hide();
- $('#' + loginFormId + '-button').show();
- }
- function loginUser (loginFormId) {
- var loginForm = $('#' + loginFormId);
- var username = $('.username', loginForm).val();
- var postingKey = $('.postingKey', loginForm).val();
- var errorMessageBox = $('.error-message', loginForm);
-
- if (!username || !postingKey) {
- errorMessageBox.text('Enter values into the fields');
- return;
- }
- login(username, postingKey, function (err, activeUser) {
- if (err) {
- if (err == 'login-invalid') {
- errorMessageBox.text('Invalid login');
- } else if (err == 'login-invalid-postingKey') {
- errorMessageBox.text('Invalid private posting key');
- } else {
- errorMessageBox.text('Unknown error');
- }
- return;
- }
- errorMessageBox.text('');
- storeSessionLogin();
- loadDataAuthenticated();
- cancelLoginUser(loginFormId);
- });
- }
- // permlink = permlink for article (add to post)
- // author = author for article (add to post)
- // wif = wif(username, postingKey)
- // voter = accounts(username)[0] // multiple accounts (dialog)
- // weight = dialog for voting weight
- // vote(wif, voter, author, permlink, weight)
- // postsByTag('{{ steemit-tag }}', 5)
- function voteUp () {
- console.log("voteUp");
- vote(100, null, populateVotes);
- }
- function voteDown () {
- console.log("voteDown");
- vote(-100, null, populateVotes);
- }
- function populateVotes () {
- votes(function(err, activeVotes) {
- if (err) {
- return;
- }
-
- var ups = [], downs = [], activeUserVote = null;
- activeVotes.forEach(function (v) {
- if (ACTIVE_USER && ACTIVE_USER.account.name == v.voter) {
- activeUserVote = v;
- }
- if (v.percent > 0) {
- ups.push(v);
- } else if (v.percent < 0) {
- downs.push(v);
- } else {
- console.log('0 weight vote... not counting');
- }
- });
- var voteEl = $('#vote-video');
- if (ups.length) {
- $('.vote-up .count', voteEl).text('(' + ups.length + ')');
- } else {
- $('.vote-up .count', voteEl).text('');
- }
- if (downs.length) {
- $('.vote-down .count', voteEl).text('(' + downs.length + ')');
- } else {
- $('.vote-down .count', voteEl).text('');
- }
- if (activeUserVote) {
- if (activeUserVote.percent > 0) {
- $('.vote-up .count', voteEl).css('font-weight', 'bold');
- $('.vote-down .count', voteEl).css('font-weight', 'normal');
- } else {
- $('.vote-up .count', voteEl).css('font-weight', 'normal');
- $('.vote-down .count', voteEl).css('font-weight', 'bold');
- }
- } else {
- $('.vote-up .count', voteEl).css('font-weight', 'normal');
- $('.vote-down .count', voteEl).css('font-weight', 'normal') }
- });
- }
|