binFiles.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. const API = require("./API/API");
  2. const api = API();
  3. var taskInfos=[];
  4. var sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
  5. async function empty_recycle() { // 清空回收站
  6. let pd = await $input.confirm({
  7. title: "确认框",
  8. message: `是否清空回收站`,
  9. okBtn: "清空"
  10. })
  11. if (pd) {
  12. var res = await api.createBatchTask("EMPTY_RECYCLE", JSON.stringify([]), "", "", cookie);
  13. if (res != false) {
  14. var taskId = res.taskId;
  15. do {
  16. res = await api.checkBatchTask("EMPTY_RECYCLE", taskId, cookie);
  17. sleep(500);
  18. } while (res != false && res.taskStatus == 1);
  19. if (res != false) {
  20. if (res.taskStatus == 4) {
  21. $ui.toast("清空成功!");
  22. } else {
  23. $ui.toast("清空失败!");
  24. }
  25. } else {
  26. $ui.toast("未知错误!");
  27. }
  28. } else {
  29. $ui.toast("未知错误!");
  30. }
  31. } else {
  32. $ui.toast("取消清空");
  33. }
  34. }
  35. async function delete_file(m) { // 删除文件
  36. let pd = await $input.confirm({
  37. title: "确认框",
  38. message: `是否删除文件: ${m.name}`,
  39. okBtn: "删除"
  40. })
  41. if (pd) {
  42. var data = await api.createBatchTask("CLEAR_RECYCLE", JSON.stringify([{
  43. fileId: m.id,
  44. fileName: m.name,
  45. isFolder: 0
  46. }]), "", "", cookie);
  47. data = await api.checkBatchTask("CLEAR_RECYCLE", data.taskId, cookie);
  48. if (data != false) {
  49. $ui.toast("删除成功!");
  50. } else {
  51. $ui.toast("删除失败!");
  52. }
  53. } else {
  54. $ui.toast("取消删除");
  55. }
  56. }
  57. async function restore(m) { // 还原文件
  58. var data = await api.createBatchTask("RESTORE", JSON.stringify([{
  59. fileId: m.id,
  60. fileName: m.name,
  61. isFolder: 0
  62. }]), "", "", cookie);
  63. data = await api.checkBatchTask("RESTORE", data.taskId, cookie);
  64. if (data != false) {
  65. $ui.toast("还原成功!");
  66. } else {
  67. $ui.toast("还原失败!");
  68. }
  69. }
  70. async function Restore() { // 还原30文件
  71. var data = await api.createBatchTask("RESTORE", JSON.stringify(taskInfos), "", "", cookie);
  72. if (data != false) {
  73. var taskId = data.taskId;
  74. do {
  75. data = await api.checkBatchTask("RESTORE", taskId, cookie);
  76. sleep(500);
  77. } while (data != false && data.taskStatus == 3);
  78. if (data != false) {
  79. if (data.taskStatus == 4) {
  80. $ui.toast("还原成功!");
  81. } else {
  82. $ui.toast("还原失败!");
  83. }
  84. } else {
  85. $ui.toast("未知错误!");
  86. }
  87. } else {
  88. $ui.toast("未知错误!");
  89. }
  90. }
  91. async function attribute(m) { // 属性
  92. $ui.showCode(`文件名: ${m.name}\n文件大小: ${(m.size/1024/1024).toFixed(2)} M\n恢复路径: ${m.pathStr}\n创建时间: ${m.createDate}\n删除时间: ${m.lastOpTime}`)
  93. }
  94. module.exports = {
  95. type: 'list',
  96. title: '回收站',
  97. actions: [
  98. {
  99. title: "清空回收站",
  100. onClick: async () => {
  101. empty_recycle();
  102. }
  103. },
  104. {
  105. title: "还原",
  106. onClick: async () => {
  107. Restore();
  108. }
  109. }
  110. ],
  111. async fetch({page}) {
  112. getCookie();
  113. page = page || 1;
  114. var list = await api.listRecycleBinFiles(page, cookie);
  115. var data = [];
  116. if (list != false) {
  117. list.fileList.forEach(m => {
  118. taskInfos.push({
  119. fileId: m.id,
  120. fileName: m.name,
  121. isFolder: 0
  122. })
  123. data.push({
  124. title: m.name,
  125. onClick: () => {
  126. $ui.toast(m.name);
  127. },
  128. onLongClick: async () => {
  129. var options = [];
  130. options.push({title: '删除文件', fun: delete_file})
  131. options.push({title: '还原文件', fun: restore})
  132. options.push({title: '属性', fun: attribute})
  133. if (options.length > 0) {
  134. var selected = await $input.select({
  135. title: '选择哪一个',
  136. options: options
  137. })
  138. selected != null ? selected.fun(m) : null;
  139. }
  140. }
  141. })
  142. })
  143. if (list.fileListSize < 30) {
  144. return data;
  145. } else {
  146. console.log(list.fileListSize, page)
  147. return {
  148. nextPage: page+1,
  149. items: data
  150. }
  151. }
  152. }
  153. }
  154. }