diff --git a/.github/workflows/floccus.yml b/.github/workflows/floccus.yml
index a2d19204c..959ed79cb 100644
--- a/.github/workflows/floccus.yml
+++ b/.github/workflows/floccus.yml
@@ -87,7 +87,7 @@ jobs:
matrix:
node-version: [20.x]
npm-version: [10.x]
- server-version: ['30']
+ server-version: ['32']
floccus-branch: ['master', 'develop']
floccus-adapter:
- nextcloud-bookmarks
@@ -156,7 +156,7 @@ jobs:
path: ./
- name: Checkout bookmarks app
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
path: ${{ env.APP_NAME }}
diff --git a/.github/workflows/repair.yml b/.github/workflows/repair.yml
index 48c2f2206..31d629c73 100644
--- a/.github/workflows/repair.yml
+++ b/.github/workflows/repair.yml
@@ -17,16 +17,31 @@ permissions:
contents: read
jobs:
+ matrix:
+ runs-on: ubuntu-latest-low
+ outputs:
+ php-version: ${{ steps.versions.outputs.php-available-list }}
+ server-max: ${{ steps.versions.outputs.branches-max-list }}
+ steps:
+ - name: Checkout app
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Get version matrix
+ id: versions
+ uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
+
php:
runs-on: ubuntu-latest
+ needs: [matrix]
+
strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
- php-versions: ['8.1']
databases: ['sqlite', 'mysql', 'pgsql']
- server-versions: ['master', 'stable31', 'stable30']
+ php-versions: ${{ fromJson(needs.matrix.outputs.php-version) }}
+ server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
name: Repair step on ${{ matrix.databases }}-${{ matrix.server-versions }}
diff --git a/.github/workflows/upgrade.yml b/.github/workflows/upgrade.yml
index 95a9cc45c..812a9b896 100644
--- a/.github/workflows/upgrade.yml
+++ b/.github/workflows/upgrade.yml
@@ -24,10 +24,10 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
- php-versions: ['8.1']
+ php-versions: ['8.1', '8.2', '8.3', '8.4']
databases: ['sqlite', 'mysql', 'pgsql']
- server-versions: ['stable30', 'stable31', 'master']
- prev-version: ['stable14', 'stable']
+ server-versions: ['stable32', 'master']
+ prev-version: ['stable']
name: Update from ${{ matrix.prev-version }} on ${{ matrix.databases }}-${{ matrix.server-versions }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb4d974f8..bd7244527 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,7 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
* fix(FolderService): Always make sure description is set
-* chore: Update nextcloud/vue Marcel Klehr 2 minutes ago
+* chore: Update nextcloud/vue
* fix(UNDELETE_FOLDER): Make sure to reload childrenOrder of -1
* fix(BookmarkMapper): Fix duplicated filter
* fix(CopyDialog): Fix onSubmit action
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 47bc51d3a..aa78b2718 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -23,7 +23,7 @@ Requirements:
- mbstring: *
- when using MySQL, use at least v8.0
]]>
- 15.2.0
+ 16.0.0-dev.0
agpl
Marcel Klehr
Arthur Schiwon
@@ -42,7 +42,7 @@ Requirements:
pgsql
intl
mbstring
-
+
OCA\Bookmarks\BackgroundJobs\CrawlJob
diff --git a/composer.json b/composer.json
index b2b7c3e5e..518ee66d6 100644
--- a/composer.json
+++ b/composer.json
@@ -12,7 +12,7 @@
},
"require-dev": {
"phpunit/phpunit": "^9.5.26",
- "nextcloud/coding-standard": "^1.0.0",
+ "nextcloud/coding-standard": "1.x",
"vimeo/psalm": "6.x",
"nextcloud/ocp": "dev-master"
},
diff --git a/lib/Db/TreeMapper.php b/lib/Db/TreeMapper.php
index 5d6d11b25..d8296424a 100644
--- a/lib/Db/TreeMapper.php
+++ b/lib/Db/TreeMapper.php
@@ -1065,13 +1065,13 @@ public function countBookmarksInFolder(int $folderId): int {
*/
public function getChildren(int $folderId, int $layers = 0): array {
$children = $this->treeCache->get(TreeCacheManager::CATEGORY_CHILDREN, TreeMapper::TYPE_FOLDER, $folderId);
- if ($children !== null) {
+ if ($children !== null && is_array($children)) {
return $children;
}
$children = $this->treeCache->get(TreeCacheManager::CATEGORY_CHILDREN_LAYER, TreeMapper::TYPE_FOLDER, $folderId);
- if ($children === null) {
+ if ($children === null || !is_array($children)) {
$qb = $this->getChildrenQuery[TreeMapper::TYPE_BOOKMARK];
$this->selectFromType(TreeMapper::TYPE_BOOKMARK, ['t.index', 't.type'], $qb);
$qb->setParameter('parent_folder', $folderId);
diff --git a/package-lock.json b/package-lock.json
index bd721e892..730f671ef 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,20 @@
{
"name": "bookmarks",
+<<<<<<< HEAD
"version": "15.2.0",
+=======
+ "version": "16.0.0",
+>>>>>>> 1493a1ee (enh: Support nextcloud 32)
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "bookmarks",
+<<<<<<< HEAD
"version": "15.2.0",
+=======
+ "version": "16.0.0",
+>>>>>>> 1493a1ee (enh: Support nextcloud 32)
"license": "AGPL-3.0-or-later",
"dependencies": {
"@nextcloud/auth": "^2.1.0",
@@ -1939,6 +1947,7 @@
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/@file-type/xml/-/xml-0.4.4.tgz",
"integrity": "sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==",
+<<<<<<< HEAD
"license": "MIT",
"dependencies": {
"sax": "^1.4.1",
@@ -1949,25 +1958,37 @@
"version": "1.6.9",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
"integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
+=======
+>>>>>>> 1493a1ee (enh: Support nextcloud 32)
"license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.9"
+ "sax": "^1.4.1",
+ "strtok3": "^10.3.4"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
+ "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.10"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.6.13",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz",
- "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==",
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
"license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.6.0",
- "@floating-ui/utils": "^0.2.9"
+ "@floating-ui/core": "^1.7.3",
+ "@floating-ui/utils": "^0.2.10"
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
- "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==",
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
"license": "MIT"
},
"node_modules/@humanwhocodes/config-array": {
@@ -2705,14 +2726,14 @@
}
},
"node_modules/@nextcloud/vue": {
- "version": "8.28.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.28.0.tgz",
- "integrity": "sha512-m0Ei6LpySq5OBb2zNqOx5vasDsmmiDTYtCoWb20ZBCT3+uk3D2m02US9g+1dS4v/Gb4BcwFLYm5mwlRH9zNERw==",
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.31.0.tgz",
+ "integrity": "sha512-P5m3Odfw4m0siu7qs88WJutu2C8mEknqMS1ijlqYtQvc8qZwmpQshgCV5GhyyBTTK9Baicthm+ULglIf/Eq/sg==",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@floating-ui/dom": "^1.1.0",
+ "@floating-ui/dom": "^1.7.4",
"@linusborg/vue-simple-portal": "^0.1.5",
- "@nextcloud/auth": "^2.4.0",
+ "@nextcloud/auth": "^2.5.2",
"@nextcloud/axios": "^2.5.0",
"@nextcloud/browser-storage": "^0.4.0",
"@nextcloud/capabilities": "^1.2.0",
@@ -2721,22 +2742,22 @@
"@nextcloud/l10n": "^3.4.0",
"@nextcloud/logger": "^3.0.2",
"@nextcloud/router": "^3.0.1",
- "@nextcloud/sharing": "^0.2.3",
+ "@nextcloud/sharing": "^0.3.0",
"@nextcloud/timezones": "^0.2.0",
- "@nextcloud/vue-select": "^3.25.1",
+ "@nextcloud/vue-select": "^3.26.0",
"@vueuse/components": "^11.0.0",
"@vueuse/core": "^11.0.0",
"blurhash": "^2.0.5",
"clone": "^2.1.2",
"debounce": "^2.2.0",
"dompurify": "^3.2.4",
- "emoji-mart-vue-fast": "^15.0.4",
+ "emoji-mart-vue-fast": "^15.0.5",
"escape-html": "^1.0.3",
"floating-vue": "^1.0.0-beta.19",
"focus-trap": "^7.4.3",
- "linkify-string": "^4.0.0",
+ "linkify-string": "^4.3.2",
"md5": "^2.3.0",
- "p-queue": "^8.1.0",
+ "p-queue": "^8.1.1",
"rehype-external-links": "^3.0.0",
"rehype-highlight": "^7.0.2",
"rehype-react": "^7.1.2",
@@ -2759,17 +2780,16 @@
"vue2-datepicker": "^3.11.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/vue-select": {
- "version": "3.25.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.25.1.tgz",
- "integrity": "sha512-jqCi4G+Q0H6+Hm8wSN3vRX2+eXG2jXR2bwBX/sErVEsH5UaxT4Nb7KqgdeIjVfeF7ccIdRqpmIb4Pkf0lao67w==",
+ "version": "3.26.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.26.0.tgz",
+ "integrity": "sha512-UvJExrxzx5pP3lv7j6zrv2yj6B1dXph7sh3lLNPnbJPjPoH/yg58mHNFBcPJrRYMbpy2t3hlC6F7s33KCTr9FA==",
"license": "MIT",
"engines": {
- "node": "^20.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
},
"peerDependencies": {
"vue": "2.x"
@@ -2804,6 +2824,46 @@
"npm": "^10.0.0"
}
},
+ "node_modules/@nextcloud/vue/node_modules/@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.0"
+ }
+ },
+ "node_modules/@nextcloud/vue/node_modules/@nextcloud/sharing/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/vue/node_modules/is-svg": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz",
+ "integrity": "sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==",
+ "license": "MIT",
+ "dependencies": {
+ "@file-type/xml": "^0.4.3"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@nextcloud/webpack-vue-config": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-6.2.0.tgz",
@@ -6773,9 +6833,9 @@
"license": "MIT"
},
"node_modules/emoji-mart-vue-fast": {
- "version": "15.0.4",
- "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.4.tgz",
- "integrity": "sha512-OjuxqoMJRTTG7Vevz0mR1ZnqY1DI8gGnmoskuuC8qL8VwwTjrGdwAO4WRWtAUN8P6Di7kxvY6cUgNETNFmbP4A==",
+ "version": "15.0.5",
+ "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.5.tgz",
+ "integrity": "sha512-wnxLor8ggpqshoOPwIc33MdOC3A1XFeDLgUwYLPtNPL8VeAtXJAVrnFq1CN5PeCYAFoLo4IufHQZ9CfHD4IZiw==",
"license": "BSD-3-Clause",
"dependencies": {
"@babel/runtime": "^7.18.6",
@@ -10459,9 +10519,9 @@
}
},
"node_modules/linkify-string": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/linkify-string/-/linkify-string-4.2.0.tgz",
- "integrity": "sha512-LqOKk0+RlqibFkxjPAGOL7Mfssqj6/SdG9QWGvzeVDpoWXhaw9OXxseCtFanjIl7C6UyTTZizhyGr4IWLfijiw==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/linkify-string/-/linkify-string-4.3.2.tgz",
+ "integrity": "sha512-JqBuQpSa+CSj2tskIII70SKOjPfjXwDFyjRRNFTrlg76gp2nap36xeRj/cWaXxukqBNrxM+L07XyKRsUtH/DpQ==",
"license": "MIT",
"peerDependencies": {
"linkifyjs": "^4.0.0"
@@ -13280,9 +13340,9 @@
}
},
"node_modules/p-queue": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz",
- "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz",
+ "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==",
"license": "MIT",
"dependencies": {
"eventemitter3": "^5.0.1",
diff --git a/package.json b/package.json
index af0f73246..30d5e6006 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bookmarks",
- "version": "15.2.0",
+ "version": "16.0.0",
"main": "js/index.js",
"scripts": {
"build": "webpack --node-env production --progress --config webpack.js",
diff --git a/src/components/Bookmark.vue b/src/components/Bookmark.vue
index bdf52ea7f..2030f94c3 100644
--- a/src/components/Bookmark.vue
+++ b/src/components/Bookmark.vue
@@ -26,7 +26,7 @@
@click="onClick">
-
+
@@ -138,7 +138,7 @@