fix: episode listing crashing if an invalid publication date is present in the RSS
This commit is contained in:
parent
abf73c0ce9
commit
d808ac0609
@ -1,3 +1,11 @@
|
|||||||
|
## 1.5.3 - 2024-02-01
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Update @nextcloud/vue to v8.6.1
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fix episode listing crashing if an invalid publication date is present in the RSS
|
||||||
|
|
||||||
## 1.5.2 - 2024-02-01
|
## 1.5.2 - 2024-02-01
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) installed to use this app!]]></description>
|
You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) installed to use this app!]]></description>
|
||||||
<version>1.5.2</version>
|
<version>1.5.3</version>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author mail="xefir@crystalyx.net" homepage="https://crystalyx.net">Michel Roux</author>
|
<author mail="xefir@crystalyx.net" homepage="https://crystalyx.net">Michel Roux</author>
|
||||||
<namespace>RePod</namespace>
|
<namespace>RePod</namespace>
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
"description": "🔊 Browse, manage and listen to podcasts",
|
"description": "🔊 Browse, manage and listen to podcasts",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"nextcloud/ocp": "^28.0.1",
|
"nextcloud/ocp": "^28.0.1",
|
||||||
"psalm/phar": "^5.21.1",
|
"psalm/phar": "^5.21.1",
|
||||||
"nextcloud/coding-standard": "^v1.2.0"
|
"nextcloud/coding-standard": "v1.2.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
||||||
|
14
composer.lock
generated
14
composer.lock
generated
@ -4,21 +4,21 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "f3354db16358ec4a9e1cd09f8d24b2c2",
|
"content-hash": "541949d4ff9cb82157134483415930b6",
|
||||||
"packages": [],
|
"packages": [],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "nextcloud/coding-standard",
|
"name": "nextcloud/coding-standard",
|
||||||
"version": "v1.2.0",
|
"version": "v1.2.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nextcloud/coding-standard.git",
|
"url": "https://github.com/nextcloud/coding-standard.git",
|
||||||
"reference": "424cdd9e3befacd71fdd923cb52ccb3693de0e1a"
|
"reference": "cf5f18d989ec62fb4cdc7fc92a36baf34b3d829e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/424cdd9e3befacd71fdd923cb52ccb3693de0e1a",
|
"url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/cf5f18d989ec62fb4cdc7fc92a36baf34b3d829e",
|
||||||
"reference": "424cdd9e3befacd71fdd923cb52ccb3693de0e1a",
|
"reference": "cf5f18d989ec62fb4cdc7fc92a36baf34b3d829e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -44,9 +44,9 @@
|
|||||||
"description": "Nextcloud coding standards for the php cs fixer",
|
"description": "Nextcloud coding standards for the php cs fixer",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nextcloud/coding-standard/issues",
|
"issues": "https://github.com/nextcloud/coding-standard/issues",
|
||||||
"source": "https://github.com/nextcloud/coding-standard/tree/v1.2.0"
|
"source": "https://github.com/nextcloud/coding-standard/tree/v1.2.1"
|
||||||
},
|
},
|
||||||
"time": "2024-02-01T12:54:46+00:00"
|
"time": "2024-02-01T14:54:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud/ocp",
|
"name": "nextcloud/ocp",
|
||||||
|
@ -99,8 +99,14 @@ class EpisodeActionReader extends CoreEpisodeActionReader
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get episode pubDate
|
// Get episode pubDate
|
||||||
$rawPubDate = $this->stringOrNull($item->pubDate);
|
$pubDate = $this->stringOrNull($item->pubDate);
|
||||||
$pubDate = isset($rawPubDate) ? new \DateTime($rawPubDate) : null;
|
if (isset($pubDate)) {
|
||||||
|
try {
|
||||||
|
$pubDate = new \DateTime($pubDate);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$pubDate = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$episodes[] = new EpisodeActionExtraData(
|
$episodes[] = new EpisodeActionExtraData(
|
||||||
$title,
|
$title,
|
||||||
|
45
package-lock.json
generated
45
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "repod",
|
"name": "repod",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "repod",
|
"name": "repod",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"license": "agpl",
|
"license": "agpl",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nextcloud/axios": "^2.4.0",
|
"@nextcloud/axios": "^2.4.0",
|
||||||
@ -14,7 +14,7 @@
|
|||||||
"@nextcloud/initial-state": "^2.1.0",
|
"@nextcloud/initial-state": "^2.1.0",
|
||||||
"@nextcloud/l10n": "^2.2.0",
|
"@nextcloud/l10n": "^2.2.0",
|
||||||
"@nextcloud/router": "^3.0.0",
|
"@nextcloud/router": "^3.0.0",
|
||||||
"@nextcloud/vue": "^8.6.0",
|
"@nextcloud/vue": "^8.6.1",
|
||||||
"vue": "^2",
|
"vue": "^2",
|
||||||
"vue-material-design-icons": "^5.3.0",
|
"vue-material-design-icons": "^5.3.0",
|
||||||
"vue-router": "^3",
|
"vue-router": "^3",
|
||||||
@ -3333,9 +3333,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@nextcloud/vue": {
|
"node_modules/@nextcloud/vue": {
|
||||||
"version": "8.6.0",
|
"version": "8.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.6.1.tgz",
|
||||||
"integrity": "sha512-0nW8qHvPHAmF/NuWWMiYnWSGNNtDAtfev3OK/mjcwru6G6lBRlEcxHleud03d8f4FMEReLpgdtVcAPNLORPEnQ==",
|
"integrity": "sha512-CPPo3A1Az0DDRNI0pn7w6Yn8pJtEDktTXnrfym2Pd+lTzqTj4P2ywf+spArXMHu0BPIB95Eero7XlCiRpmhg/g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@floating-ui/dom": "^1.1.0",
|
"@floating-ui/dom": "^1.1.0",
|
||||||
"@linusborg/vue-simple-portal": "^0.1.5",
|
"@linusborg/vue-simple-portal": "^0.1.5",
|
||||||
@ -3750,9 +3750,9 @@
|
|||||||
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
|
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.11.15",
|
"version": "20.11.16",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.15.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
|
||||||
"integrity": "sha512-gscmuADZfvNULx1eyirVbr3kVOVZtpQtzKMCZpeSZcN6MfbkRXAR4s9/gsQ4CzxLHw6EStDtKLNtSDL3vbq05A==",
|
"integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~5.26.4"
|
||||||
}
|
}
|
||||||
@ -9387,14 +9387,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/has-tostringtag": {
|
"node_modules/has-tostringtag": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.1.tgz",
|
||||||
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
|
"integrity": "sha512-6J4rC9ROz0UkOpjn0BRtSSqlewDTDYJNQvy8N8RSrPCduUWId1o9BQPEVII/KKBqRk/ZIQff1YbRkUDCH2N5Sg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
|
||||||
"has-symbols": "^1.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
@ -18075,9 +18072,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.90.0",
|
"version": "5.90.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz",
|
||||||
"integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==",
|
"integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -18363,17 +18360,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/which-typed-array": {
|
"node_modules/which-typed-array": {
|
||||||
"version": "1.1.13",
|
"version": "1.1.14",
|
||||||
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
|
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz",
|
||||||
"integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
|
"integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"available-typed-arrays": "^1.0.5",
|
"available-typed-arrays": "^1.0.6",
|
||||||
"call-bind": "^1.0.4",
|
"call-bind": "^1.0.5",
|
||||||
"for-each": "^0.3.3",
|
"for-each": "^0.3.3",
|
||||||
"gopd": "^1.0.1",
|
"gopd": "^1.0.1",
|
||||||
"has-tostringtag": "^1.0.0"
|
"has-tostringtag": "^1.0.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "repod",
|
"name": "repod",
|
||||||
"description": "🔊 Browse, manage and listen to podcasts",
|
"description": "🔊 Browse, manage and listen to podcasts",
|
||||||
"version": "1.5.2",
|
"version": "1.5.3",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://git.crystalyx.net/Xefir/repod/issues"
|
"url": "https://git.crystalyx.net/Xefir/repod/issues"
|
||||||
},
|
},
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"@nextcloud/initial-state": "^2.1.0",
|
"@nextcloud/initial-state": "^2.1.0",
|
||||||
"@nextcloud/l10n": "^2.2.0",
|
"@nextcloud/l10n": "^2.2.0",
|
||||||
"@nextcloud/router": "^3.0.0",
|
"@nextcloud/router": "^3.0.0",
|
||||||
"@nextcloud/vue": "^8.6.0",
|
"@nextcloud/vue": "^8.6.1",
|
||||||
"vue": "^2",
|
"vue": "^2",
|
||||||
"vue-material-design-icons": "^5.3.0",
|
"vue-material-design-icons": "^5.3.0",
|
||||||
"vue-router": "^3",
|
"vue-router": "^3",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
:key="episode.guid"
|
:key="episode.guid"
|
||||||
:active="isCurrentEpisode(episode)"
|
:active="isCurrentEpisode(episode)"
|
||||||
:class="hasEnded(episode) ? 'ended': ''"
|
:class="hasEnded(episode) ? 'ended': ''"
|
||||||
:details="formatLocaleDate(new Date(episode.pubDate.date))"
|
:details="formatLocaleDate(new Date(episode.pubDate?.date))"
|
||||||
:force-display-actions="true"
|
:force-display-actions="true"
|
||||||
:name="episode.name"
|
:name="episode.name"
|
||||||
:title="episode.description"
|
:title="episode.description"
|
||||||
@ -116,7 +116,7 @@ export default {
|
|||||||
try {
|
try {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
const episodes = await axios.get(generateUrl('/apps/repod/episodes/list?url={url}', { url: this.url }))
|
const episodes = await axios.get(generateUrl('/apps/repod/episodes/list?url={url}', { url: this.url }))
|
||||||
this.episodes = [...episodes.data].sort((a, b) => new Date(b.pubDate.date) - new Date(a.pubDate.date))
|
this.episodes = [...episodes.data].sort((a, b) => new Date(b.pubDate?.date) - new Date(a.pubDate?.date))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
showError(t('repod', 'Could not fetch episodes'))
|
showError(t('repod', 'Could not fetch episodes'))
|
||||||
|
Loading…
Reference in New Issue
Block a user