supports.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #!/usr/bin/env node
  2. const fs = require("fs");
  3. const path = require("path");
  4. const homedir = require('os').homedir();
  5. const supportingPath = path.join(homedir, ".ssb/flume/contacts2.json");
  6. const {
  7. a,
  8. br,
  9. li,
  10. } = require("hyperaxe");
  11. const envPaths = require("env-paths");
  12. const cli = require("./cli");
  13. const ssb = require("./ssb");
  14. const defaultConfig = {};
  15. const defaultConfigFile = path.join(
  16. envPaths("oasis", { suffix: "" }).config,
  17. "/default.json"
  18. );
  19. const config = cli(defaultConfig, defaultConfigFile);
  20. if (config.debug) {
  21. process.env.DEBUG = "oasis,oasis:*";
  22. }
  23. const cooler = ssb({ offline: config.offline });
  24. const { about} = require("./models")({
  25. cooler,
  26. isPublic: config.public,
  27. });
  28. async function getNameByIdSupported(supported){
  29. name_supported = await about.name(supported);
  30. return name_supported
  31. }
  32. async function getNameByIdBlocked(blocked){
  33. name_blocked = await about.name(blocked);
  34. return name_blocked
  35. }
  36. async function getNameByIdRecommended(recommended){
  37. name_recommended = await about.name(recommended);
  38. return name_recommended
  39. }
  40. try{
  41. var supporting = JSON.parse(fs.readFileSync(supportingPath, {encoding:'utf8', flag:'r'})).value;
  42. }catch{
  43. var supporting = undefined;
  44. }
  45. if (supporting == undefined) {
  46. var supportingValue = "false";
  47. }else{
  48. var keys = Object.keys(supporting);
  49. if (keys[0] === undefined){
  50. var supportingValue = "false";
  51. }else{
  52. var supportingValue = "true";
  53. }
  54. }
  55. if (supportingValue === "true") {
  56. var arr = [];
  57. var keys = Object.keys(supporting);
  58. var data = Object.entries(supporting[keys[0]]);
  59. Object.entries(data).forEach(([key, value]) => {
  60. if (value[1]===1){
  61. var supported = (value[0])
  62. if (!arr.includes(supported)) {
  63. getNameSupported(supported);
  64. async function getNameSupported(supported){
  65. name_supported = await getNameByIdSupported(supported);
  66. arr.push(
  67. li(
  68. name_supported,br,
  69. a(
  70. { href: `/author/${encodeURIComponent(supported)}` },
  71. supported
  72. )
  73. ), br
  74. );
  75. }
  76. }
  77. }
  78. });
  79. }else{
  80. var arr = [];
  81. }
  82. var supports = arr;
  83. if (supportingValue === "true") {
  84. var arr2 = [];
  85. var keys = Object.keys(supporting);
  86. var data = Object.entries(supporting[keys[0]]);
  87. Object.entries(data).forEach(([key, value]) => {
  88. if (value[1]===-1){
  89. var blocked = (value[0])
  90. if (!arr2.includes(blocked)) {
  91. getNameBlocked(blocked);
  92. async function getNameBlocked(blocked){
  93. name_blocked = await getNameByIdBlocked(blocked);
  94. arr2.push(
  95. li(
  96. name_blocked,br,
  97. a(
  98. { href: `/author/${encodeURIComponent(blocked)}` },
  99. blocked
  100. )
  101. ), br
  102. );
  103. }
  104. }
  105. }
  106. });
  107. }else{
  108. var arr2 = [];
  109. }
  110. var blocks = arr2;
  111. if (supportingValue === "true") {
  112. var arr3 = [];
  113. var keys = Object.keys(supporting);
  114. var data = Object.entries(supporting[keys[0]]);
  115. Object.entries(data).forEach(([key, value]) => {
  116. if (value[1]===-2){
  117. var recommended = (value[0])
  118. if (!arr3.includes(recommended)) {
  119. getNameRecommended(recommended);
  120. async function getNameRecommended(recommended){
  121. name_recommended = await getNameByIdRecommended(recommended);
  122. arr3.push(
  123. li(
  124. name_recommended,br,
  125. a(
  126. { href: `/author/${encodeURIComponent(recommended)}` },
  127. recommended
  128. )
  129. ), br
  130. );
  131. }
  132. }
  133. }
  134. });
  135. }else{
  136. var arr3 = [];
  137. }
  138. var recommends = arr3;
  139. module.exports.supporting = supports;
  140. module.exports.blocking = blocks;
  141. module.exports.recommending = recommends;