Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. // USERCOUNT PROMISE
  2. var userCount = promisify('userCount');
  3.  
  4. userCount.then(function(_userCount) {
  5.  
  6. // MAKE SURE THERE ARE RECORDS
  7. if (_userCount > 0) {
  8.  
  9. // LOG FOR CLARITY
  10. log('Reconds found: ' + _userCount);
  11.  
  12. // LOOP THROUGH ALL USERS
  13. for (var x = 0; x < _userCount; x++) {
  14.  
  15. // USER PROMISE
  16. var user = promisify('user', x);
  17.  
  18. // LOG FOR CLARITY
  19. log('Rendering record #' + x);
  20.  
  21. user.then(function(_user) {
  22.  
  23. // GENERATE STRING
  24. var output = _user[0] + '<br>';
  25.  
  26. // APPEND SELECTOR CONTENT
  27. $('body').append(output);
  28. });
  29. }
  30.  
  31. } else {
  32. console.log('No records found.')
  33. }
  34. });
  35.  
  36. function promisify(query, value = null) {
  37. return new Promise(function(resolve, reject) {
  38.  
  39. switch(query) {
  40.  
  41. // FETCH NUMBER OF RECORDS
  42. case 'userCount':
  43. contract.userCount((err, result) => {
  44. result = JSON.parse(JSON.stringify(result));
  45. resolve(result);
  46. });
  47. break;
  48.  
  49. // FETCH DATA OF USER
  50. case 'user':
  51. contract.users(value, (err, result) => {
  52. result = JSON.parse(JSON.stringify(result));
  53. resolve(result);
  54. });
  55. break;
  56.  
  57. // SET RANDOM NUMBER
  58. case 'setRandomNumber':
  59. contract.setRandomNumber(value, (error, result) => {
  60. // STUFF
  61. });
  62. break;
  63.  
  64. // RANDOM NUMBER EVENT LISTENER
  65. case 'watchRandomNumber':
  66. contract.generateNumber((error, result) => {
  67. // STUFF
  68. });
  69. break;
  70.  
  71. // FALLBACK
  72. default:
  73. log('Error in Switch.')
  74. break;
  75. }
  76.  
  77. });
  78. }
  79.  
  80. // USER ADDED EVENT
  81. contract.userAdded(function(error, result) {
  82. var user = result.args.user;
  83. log('User "' + user + '" has been added!');
  84.  
  85. // GENERATE OUTPUT
  86. var output = user + '<br>';
  87.  
  88. // APPEND SELECTORS OLD CONTENT
  89. $('body').append(output);
  90. });
  91.  
  92. // RANDOM NUMBER FUNCTIONALITY
  93. promisify('watchRandomNumber').then(() => {
  94.  
  95. log('Random number needed!');
  96. var randomNumber = Math.floor((Math.random() * 10) + 1);
  97.  
  98. promisify('setRandomNumber', randomNumber).then(() => {
  99. log('Random number set to: ' + randomNumber);
  100. });
  101. });
  102.  
  103. // SHORTHAND
  104. function log(stuff) {
  105. console.log(stuff);
  106. }
  107.  
  108. pragma solidity ^0.4.2;
  109.  
  110. contract Main {
  111.  
  112. // VARIABLES
  113. mapping(uint256 => User) public users;
  114. uint256 public userCount;
  115. uint256 public maxPlayers;
  116. uint256 public randomNumber;
  117.  
  118. // EVENTS
  119. event generateNumber();
  120. event userAdded(string user);
  121. event fullGame();
  122.  
  123. struct User {
  124. string username;
  125. address owner;
  126. uint256 joined;
  127. }
  128.  
  129. function add(string _username) public {
  130.  
  131. if (userCount < maxPlayers) {
  132. users[userCount].username = _username;
  133. users[userCount].owner = msg.sender;
  134. users[userCount].joined = now;
  135. userCount++;
  136. userAdded(_username);
  137.  
  138. if (userCount == maxPlayers) {
  139. generateNumber();
  140. finish();
  141. }
  142.  
  143. } else {
  144. fullGame();
  145. }
  146. }
  147.  
  148. function setRandomNumber(uint256 _number) public {
  149. randomNumber = _number;
  150. }
  151.  
  152. function finish() public view returns(uint256) {
  153. return randomNumber;
  154. }
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement