listshare.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. const share_list = require("./API/share_list");
  2. const share_download = require("./API/share_download");
  3. const share_save = require("./API/share_save");
  4. var key;
  5. async function file_down(m) { // 文件下载
  6. var url = await share_download(m.key, cookie);
  7. if (url != false) {
  8. $ui.browser(url);
  9. $ui.toast("开始下载...");
  10. } else {
  11. $ui.toast("获取失败");
  12. }
  13. }
  14. async function copySourceUrl(m) { // 复制分享链接和密码
  15. var url = `https://mo.own-cloud.cn/s/${key}?path=${m.path}/${m.name}`;
  16. $clipboard.text = url;
  17. $ui.toast("复制链接成功");
  18. }
  19. async function file_info(m) {
  20. $ui.showCode(`文件名: ${m.name}\n文件大小: ${(m.size/1024/1024).toFixed(2)}M\n创建时间: ${m.date}\n文件路径: ${m.path}`);
  21. }
  22. async function dir_info(m) {
  23. $ui.showCode(`文件夹名: ${m.name}\n创建时间: ${m.date}\n文件路径: ${m.path}`);
  24. }
  25. async function save_to(m) {
  26. if(await share_save(key, '/', cookie)) {
  27. $ui.toast("保存成功!");
  28. } else {
  29. $ui.toast("保存失败!");
  30. }
  31. }
  32. module.exports = {
  33. type: 'list',
  34. beforeCreate() {
  35. getCookie();
  36. },
  37. async fetch({args}) {
  38. this.title = args.title;
  39. key = args.key;
  40. var list = await share_list(args.key, args.path, cookie);
  41. if (list != false) {
  42. var dir = [];
  43. list.forEach(m => {
  44. if (m.type == "dir") {
  45. m.path.substring(m.path.length-1) == "/" ? m.path = m.path.substring(0, m.path.length-1) : null;
  46. dir.push({
  47. title: m.name,
  48. route: $route("listshare", {
  49. title: m.name,
  50. key: args.key,
  51. path: m.path + '/' + m.name,
  52. }),
  53. onLongClick: async () => {
  54. var selected = await $input.select({
  55. title: '选择哪一个',
  56. options: [
  57. {title: '保存', fun: save_to},
  58. {title: '复制链接', fun: copySourceUrl},
  59. {title: '属性', fun: dir_info}
  60. ]
  61. })
  62. selected != null ? selected.fun(m) : null;
  63. }
  64. });
  65. }
  66. });
  67. if (dir.length > 0) {
  68. dir.splice(0, 0, {
  69. title: '文件夹 (单点打开)',
  70. style: 'category'
  71. })
  72. }
  73. var file = [];
  74. list.map(m => {
  75. if (m.type == "file") {
  76. file.push({
  77. title: m.name,
  78. onClick: () => {
  79. file_down(m);
  80. },
  81. onLongClick: async () => {
  82. var selected = await $input.select({
  83. title: '选择哪一个',
  84. options: [
  85. {title: '保存', fun: save_to},
  86. // {title: '复制链接', fun: copySourceUrl},
  87. {title: '属性', fun: file_info}
  88. ]
  89. })
  90. selected != null ? selected.fun(m) : null;
  91. }
  92. });
  93. }
  94. });
  95. if (file.length > 0) {
  96. file.splice(0, 0, {
  97. title: '文件 (单点下载)',
  98. style: 'category'
  99. })
  100. }
  101. file.forEach(f => {
  102. dir.push(f);
  103. })
  104. return dir;
  105. }
  106. }
  107. }