summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgreta <gretadoci@gmail.com>2023-10-18 12:54:11 +0200
committergreta <gretadoci@gmail.com>2023-11-01 16:23:55 +0100
commit5493404f7dd4d6cd88c1a2ed35b4569b5c5a2c4d (patch)
tree6a596cb2598bd1452048679ab81298901890bb6d
parent3c2c70c32b29aa2e6e215071cf0783eb856b8a87 (diff)
Import file FileAction 28 compatibility
Signed-off-by: greta <gretadoci@gmail.com>
-rw-r--r--lib/Listener/LoadContactsFilesActions.php7
-rw-r--r--package-lock.json396
-rw-r--r--package.json2
-rw-r--r--src/files-action.js59
-rw-r--r--webpack.config.js8
5 files changed, 440 insertions, 32 deletions
diff --git a/lib/Listener/LoadContactsFilesActions.php b/lib/Listener/LoadContactsFilesActions.php
index 0d9052fb..87f93e75 100644
--- a/lib/Listener/LoadContactsFilesActions.php
+++ b/lib/Listener/LoadContactsFilesActions.php
@@ -38,6 +38,11 @@ class LoadContactsFilesActions implements IEventListener {
return;
}
- Util::addScript(Application::APP_ID, 'contacts-files-action');
+ // only available since Nc 28
+ if (method_exists(Util::class, 'addInitScript')) {
+ Util::addInitScript(Application::APP_ID, 'contacts-files-action');
+ } else {
+ Util::addScript(Application::APP_ID, 'contacts-files-action');
+ }
}
}
diff --git a/package-lock.json b/package-lock.json
index 5ae194ba..5b64ac91 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,12 +10,14 @@
"license": "agpl",
"dependencies": {
"@mattkrick/sanitize-svg": "^0.4.0",
+ "@mdi/svg": "^7.3.67",
"@nextcloud/auth": "^2.2.1",
"@nextcloud/axios": "^2.4.0",
"@nextcloud/capabilities": "^1.1.0",
"@nextcloud/cdav-library": "^1.1.0",
"@nextcloud/dialogs": "^4.1.0",
"@nextcloud/event-bus": "^3.1.0",
+ "@nextcloud/files": "^3.0.0-beta.26",
"@nextcloud/initial-state": "^2.1.0",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/logger": "^2.7.0",
@@ -1814,6 +1816,14 @@
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
},
+ "node_modules/@buttercup/fetch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@buttercup/fetch/-/fetch-0.1.2.tgz",
+ "integrity": "sha512-mDBtsysQ0Gnrp4FamlRJGpu7HUHwbyLC4uUav1I7QAqThFAa/4d1cdZCxrV5gKvh6zO1fu95bILNJi4Y2hALhQ==",
+ "optionalDependencies": {
+ "node-fetch": "^3.3.0"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -2779,6 +2789,11 @@
"tslib": "^1.9.3"
}
},
+ "node_modules/@mdi/svg": {
+ "version": "7.3.67",
+ "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.3.67.tgz",
+ "integrity": "sha512-KNr7D8jbu8DEprgRckVywVBkajsGGqocFjOzlekv35UedLjpkMDTkFO8VYnhnLySL0QaPBa568fe8BZsB0TBJQ=="
+ },
"node_modules/@nextcloud/auth": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.2.1.tgz",
@@ -3001,6 +3016,38 @@
"node": ">=10"
}
},
+ "node_modules/@nextcloud/files": {
+ "version": "3.0.0-beta.26",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.26.tgz",
+ "integrity": "sha512-IOIY9clVxB0+a/xcA7I6szeZ0VcVCNYJwkY0CyuOXC/ZW/tGeevmZ8JPWmiH+HAHz574V3Up53xTwXSzAxeN5A==",
+ "dependencies": {
+ "@nextcloud/auth": "^2.2.1",
+ "@nextcloud/l10n": "^2.2.0",
+ "@nextcloud/logger": "^2.7.0",
+ "@nextcloud/paths": "^2.1.0",
+ "@nextcloud/router": "^2.1.2",
+ "is-svg": "^5.0.0",
+ "webdav": "^5.3.0"
+ },
+ "engines": {
+ "node": "^20.0.0",
+ "npm": "^9.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/is-svg": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.0.tgz",
+ "integrity": "sha512-sRl7J0oX9yUNamSdc8cwgzh9KBLnQXNzGmW0RVHwg/jEYjGNYHC6UvnYD8+hAeut9WwxRvhG9biK7g/wDGxcMw==",
+ "dependencies": {
+ "fast-xml-parser": "^4.1.3"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@nextcloud/initial-state": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.1.0.tgz",
@@ -5236,6 +5283,11 @@
"version": "1.0.0",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
+ "node_modules/base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -5615,6 +5667,11 @@
"node": ">=10"
}
},
+ "node_modules/byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz",
+ "integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q=="
+ },
"node_modules/bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -6825,6 +6882,15 @@
"node": ">=12"
}
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "optional": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/data-urls": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
@@ -8588,6 +8654,29 @@
"bser": "2.1.1"
}
},
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -8774,6 +8863,18 @@
"node": ">= 6"
}
},
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "optional": true,
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -9280,7 +9381,6 @@
"node_modules/he": {
"version": "1.2.0",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
"bin": {
"he": "bin/he"
}
@@ -9307,6 +9407,11 @@
"node": ">=10"
}
},
+ "node_modules/hot-patcher": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz",
+ "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q=="
+ },
"node_modules/hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
@@ -12067,6 +12172,11 @@
"integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==",
"dev": true
},
+ "node_modules/layerr": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layerr/-/layerr-2.0.1.tgz",
+ "integrity": "sha512-z0730CwG/JO24evdORnyDkwG1Q7b7mF2Tp1qRQ0YvrMMARbt1DFG694SOv439Gm7hYKolyZyaB49YIrYIfZBdg=="
+ },
"node_modules/leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -13081,6 +13191,48 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"peer": true
},
+ "node_modules/nested-property": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nested-property/-/nested-property-4.0.0.tgz",
+ "integrity": "sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA=="
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "optional": true,
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "optional": true,
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -13535,6 +13687,11 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
+ "node_modules/path-posix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz",
+ "integrity": "sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA=="
+ },
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -13937,8 +14094,7 @@
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -14412,8 +14568,7 @@
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/resolve": {
"version": "1.22.4",
@@ -16627,11 +16782,18 @@
"querystring": "0.2.0"
}
},
+ "node_modules/url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
"node_modules/url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -17179,6 +17341,60 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/web-streams-polyfill": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+ "optional": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/webdav": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.0.tgz",
+ "integrity": "sha512-xRu/URZGCxDPXmT+9Gu6tNGvlETBwjcuz69lx/6Qlq/0q3Gu2GSVyRt+mP0vTlLFfaY3xZ5O/SPTQ578tC/45Q==",
+ "dependencies": {
+ "@buttercup/fetch": "^0.1.1",
+ "base-64": "^1.0.0",
+ "byte-length": "^1.0.2",
+ "fast-xml-parser": "^4.2.4",
+ "he": "^1.2.0",
+ "hot-patcher": "^2.0.0",
+ "layerr": "^2.0.1",
+ "md5": "^2.3.0",
+ "minimatch": "^7.4.6",
+ "nested-property": "^4.0.0",
+ "path-posix": "^1.0.0",
+ "url-join": "^5.0.0",
+ "url-parse": "^1.5.10"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/webdav/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/webdav/node_modules/minimatch": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
+ "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
@@ -19011,6 +19227,14 @@
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
},
+ "@buttercup/fetch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@buttercup/fetch/-/fetch-0.1.2.tgz",
+ "integrity": "sha512-mDBtsysQ0Gnrp4FamlRJGpu7HUHwbyLC4uUav1I7QAqThFAa/4d1cdZCxrV5gKvh6zO1fu95bILNJi4Y2hALhQ==",
+ "requires": {
+ "node-fetch": "^3.3.0"
+ }
+ },
"@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -19737,6 +19961,11 @@
"integrity": "sha512-TnPI97WVAxo8SQcPy8aV3OF9/2WjXB5/+pRNVudIWR7Bhi5ZjtR/ur162So08GkvsvB914AXCW2sxFh1x6KhHA==",
"requires": {}
},
+ "@mdi/svg": {
+ "version": "7.3.67",
+ "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.3.67.tgz",
+ "integrity": "sha512-KNr7D8jbu8DEprgRckVywVBkajsGGqocFjOzlekv35UedLjpkMDTkFO8VYnhnLySL0QaPBa568fe8BZsB0TBJQ=="
+ },
"@nextcloud/auth": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.2.1.tgz",
@@ -19876,6 +20105,30 @@
}
}
},
+ "@nextcloud/files": {
+ "version": "3.0.0-beta.26",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.26.tgz",
+ "integrity": "sha512-IOIY9clVxB0+a/xcA7I6szeZ0VcVCNYJwkY0CyuOXC/ZW/tGeevmZ8JPWmiH+HAHz574V3Up53xTwXSzAxeN5A==",
+ "requires": {
+ "@nextcloud/auth": "^2.2.1",
+ "@nextcloud/l10n": "^2.2.0",
+ "@nextcloud/logger": "^2.7.0",
+ "@nextcloud/paths": "^2.1.0",
+ "@nextcloud/router": "^2.1.2",
+ "is-svg": "^5.0.0",
+ "webdav": "^5.3.0"
+ },
+ "dependencies": {
+ "is-svg": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.0.tgz",
+ "integrity": "sha512-sRl7J0oX9yUNamSdc8cwgzh9KBLnQXNzGmW0RVHwg/jEYjGNYHC6UvnYD8+hAeut9WwxRvhG9biK7g/wDGxcMw==",
+ "requires": {
+ "fast-xml-parser": "^4.1.3"
+ }
+ }
+ }
+ },
"@nextcloud/initial-state": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.1.0.tgz",
@@ -21702,6 +21955,11 @@
"version": "1.0.0",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
+ "base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
+ },
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -21991,6 +22249,11 @@
}
}
},
+ "byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz",
+ "integrity": "sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q=="
+ },
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -22878,6 +23141,12 @@
"d3-transition": "2 - 3"
}
},
+ "data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "optional": true
+ },
"data-urls": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
@@ -24181,6 +24450,16 @@
"bser": "2.1.1"
}
},
+ "fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "optional": true,
+ "requires": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ }
+ },
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -24324,6 +24603,15 @@
"mime-types": "^2.1.12"
}
},
+ "formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "optional": true,
+ "requires": {
+ "fetch-blob": "^3.1.2"
+ }
+ },
"forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -24690,8 +24978,7 @@
},
"he": {
"version": "1.2.0",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"hmac-drbg": {
"version": "1.0.1",
@@ -24712,6 +24999,11 @@
"lru-cache": "^6.0.0"
}
},
+ "hot-patcher": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hot-patcher/-/hot-patcher-2.0.1.tgz",
+ "integrity": "sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q=="
+ },
"hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
@@ -26673,6 +26965,11 @@
"integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==",
"dev": true
},
+ "layerr": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layerr/-/layerr-2.0.1.tgz",
+ "integrity": "sha512-z0730CwG/JO24evdORnyDkwG1Q7b7mF2Tp1qRQ0YvrMMARbt1DFG694SOv439Gm7hYKolyZyaB49YIrYIfZBdg=="
+ },
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -27346,6 +27643,28 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"peer": true
},
+ "nested-property": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nested-property/-/nested-property-4.0.0.tgz",
+ "integrity": "sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA=="
+ },
+ "node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "optional": true
+ },
+ "node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "optional": true,
+ "requires": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ }
+ },
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -27687,6 +28006,11 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
+ "path-posix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz",
+ "integrity": "sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA=="
+ },
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -27980,8 +28304,7 @@
"querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"queue-microtask": {
"version": "1.2.3",
@@ -28341,8 +28664,7 @@
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"resolve": {
"version": "1.22.4",
@@ -29936,11 +30258,15 @@
}
}
},
+ "url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA=="
+ },
"url-parse": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -30345,6 +30671,50 @@
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
"integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="
},
+ "web-streams-polyfill": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+ "optional": true
+ },
+ "webdav": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.0.tgz",
+ "integrity": "sha512-xRu/URZGCxDPXmT+9Gu6tNGvlETBwjcuz69lx/6Qlq/0q3Gu2GSVyRt+mP0vTlLFfaY3xZ5O/SPTQ578tC/45Q==",
+ "requires": {
+ "@buttercup/fetch": "^0.1.1",
+ "base-64": "^1.0.0",
+ "byte-length": "^1.0.2",
+ "fast-xml-parser": "^4.2.4",
+ "he": "^1.2.0",
+ "hot-patcher": "^2.0.0",
+ "layerr": "^2.0.1",
+ "md5": "^2.3.0",
+ "minimatch": "^7.4.6",
+ "nested-property": "^4.0.0",
+ "path-posix": "^1.0.0",
+ "url-join": "^5.0.0",
+ "url-parse": "^1.5.10"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
+ "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
"webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
diff --git a/package.json b/package.json
index 6563199c..6335758d 100644
--- a/package.json
+++ b/package.json
@@ -37,12 +37,14 @@
},
"dependencies": {
"@mattkrick/sanitize-svg": "^0.4.0",
+ "@mdi/svg": "^7.3.67",
"@nextcloud/auth": "^2.2.1",
"@nextcloud/axios": "^2.4.0",
"@nextcloud/capabilities": "^1.1.0",
"@nextcloud/cdav-library": "^1.1.0",
"@nextcloud/dialogs": "^4.1.0",
"@nextcloud/event-bus": "^3.1.0",
+ "@nextcloud/files": "^3.0.0-beta.26",
"@nextcloud/initial-state": "^2.1.0",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/logger": "^2.7.0",
diff --git a/src/files-action.js b/src/files-action.js
index d2aff3df..3b62764a 100644
--- a/src/files-action.js
+++ b/src/files-action.js
@@ -2,6 +2,7 @@
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
+ * @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -20,25 +21,47 @@
*
*/
import { generateUrl } from '@nextcloud/router'
+import { translate as t } from '@nextcloud/l10n'
+import { registerFileAction, FileAction, Permission, DefaultType } from '@nextcloud/files'
+/* eslint-disable-next-line import/no-unresolved */
+import ContactSvg from '@mdi/svg/svg/account-multiple.svg?raw'
const mime = 'text/vcard'
const name = 'contacts-import'
+const nextcloudVersionIsGreaterThanOr28 = parseInt(OC.config.version.split('.')[0]) >= 28
-window.addEventListener('DOMContentLoaded', () => {
- if (OCA.Files && OCA.Files.fileActions) {
- OCA.Files.fileActions.registerAction({
- name,
- displayName: t('contacts', 'Import'),
- mime,
- permissions: OC.PERMISSION_READ,
- iconClass: 'icon-contacts-dark',
- actionHandler(fileName, context) {
- const absPath = `${context.dir === '/' ? '' : context.dir}/${fileName}`
- window.location = generateUrl(`/apps/contacts/import?file=${absPath}`)
- },
- })
- OCA.Files.fileActions.setDefault(mime, name)
- return
- }
- console.error('Unable to register vcf import action')
-})
+if (nextcloudVersionIsGreaterThanOr28) {
+ registerFileAction(new FileAction({
+ id: name,
+ displayName: () => t('contacts', 'Import'),
+ default: DefaultType.DEFAULT,
+ mime,
+ enabled: (nodes) => {
+ return nodes.every((node) => node.mime === mime && (node.permissions & Permission.READ))
+ },
+ iconSvgInline: () => ContactSvg,
+ async exec(file) {
+ window.location = generateUrl(`/apps/contacts/import?file=${file.path}`)
+ return true
+ },
+ }))
+} else {
+ window.addEventListener('DOMContentLoaded', () => {
+ if (OCA.Files && OCA.Files.fileActions) {
+ OCA.Files.fileActions.registerAction({
+ name,
+ displayName: t('contacts', 'Import'),
+ mime,
+ permissions: OC.PERMISSION_READ,
+ iconClass: 'icon-contacts-dark',
+ actionHandler(fileName, context) {
+ const absPath = `${context.dir === '/' ? '' : context.dir}/${fileName}`
+ window.location = generateUrl(`/apps/contacts/import?file=${absPath}`)
+ },
+ })
+ OCA.Files.fileActions.setDefault(mime, name)
+ return
+ }
+ console.error('Unable to register vcf import action')
+ })
+}
diff --git a/webpack.config.js b/webpack.config.js
index dc9726b3..9227e07a 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,9 +1,17 @@
const path = require('path')
const webpackConfig = require('@nextcloud/webpack-vue-config')
+const webpackRules = require('@nextcloud/webpack-vue-config/rules')
webpackConfig.entry['files-action'] = path.join(__dirname, 'src', 'files-action.js')
webpackConfig.entry['admin-settings'] = path.join(__dirname, 'src', 'admin-settings.js')
+// Include mdi icons as raw svg strings
+webpackRules.RULE_SVG = {
+ resourceQuery: /raw/,
+ type: 'asset/source',
+}
+webpackConfig.module.rules = Object.values(webpackRules)
+
webpackConfig.module.rules.push({
test: /\.tsx?$/,
use: 'ts-loader',