Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
6a64545380 | |||
4e4edf40f0 | |||
df3d6e824d | |||
1abcee87ea | |||
f96ec96f56 | |||
afbfbe8487 | |||
87ad98f341 | |||
cc5434004e | |||
519cf82703 | |||
abfa1491fc | |||
59c02ba994 | |||
6cd74a9482 | |||
|
40f13d92aa | ||
172085bf2d | |||
4a93cb9964 | |||
|
cace2c5fb8 | ||
c6915193db | |||
2a3d30f018 |
@ -1,11 +1,9 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
extends: [
|
extends: [
|
||||||
'@nextcloud',
|
'@nextcloud/eslint-config/vue3',
|
||||||
'@vue/eslint-config-typescript/recommended',
|
|
||||||
'plugin:pinia/recommended',
|
'plugin:pinia/recommended',
|
||||||
'plugin:prettier/recommended',
|
'plugin:prettier/recommended',
|
||||||
],
|
],
|
||||||
parser: 'vue-eslint-parser',
|
|
||||||
rules: {
|
rules: {
|
||||||
'jsdoc/require-jsdoc': 'off',
|
'jsdoc/require-jsdoc': 'off',
|
||||||
'vue/first-attribute-linebreak': 'off',
|
'vue/first-attribute-linebreak': 'off',
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
## 3.5.4 - Under the spotlight - 2025-01-03
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- 🧑🎤 Added the episode author on the list and modal
|
||||||
|
- ✨ Added cover image and episode infos on desktop and mobile notifications
|
||||||
|
|
||||||
## 3.5.3 - Hangover - 2025-01-03
|
## 3.5.3 - Hangover - 2025-01-03
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
@ -14,7 +14,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>3.5.3</version>
|
<version>3.5.4</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>
|
||||||
@ -29,7 +29,7 @@ You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) inst
|
|||||||
<screenshot>https://git.crystalyx.net/Xefir/repod/raw/branch/main/screens/modal.png</screenshot>
|
<screenshot>https://git.crystalyx.net/Xefir/repod/raw/branch/main/screens/modal.png</screenshot>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<php min-version="8.1"/>
|
<php min-version="8.1"/>
|
||||||
<nextcloud min-version="29" max-version="30"/>
|
<nextcloud min-version="29" max-version="31"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<navigations>
|
<navigations>
|
||||||
<navigation>
|
<navigation>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"php": "^8.1"
|
"php": "^8.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"nextcloud/ocp": "^30.0.4",
|
"nextcloud/ocp": "^30.0.5",
|
||||||
"roave/security-advisories": "dev-latest",
|
"roave/security-advisories": "dev-latest",
|
||||||
"nextcloud/coding-standard": "^1.3.2",
|
"nextcloud/coding-standard": "^1.3.2",
|
||||||
"nextcloud/rector": "^0.2.1",
|
"nextcloud/rector": "^0.2.1",
|
||||||
|
72
composer.lock
generated
72
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"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": "8985893a48af49654e50784bda34fb89",
|
"content-hash": "413d85cb041646dc7aa0da4bcdf8f65c",
|
||||||
"packages": [],
|
"packages": [],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
@ -778,16 +778,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud/ocp",
|
"name": "nextcloud/ocp",
|
||||||
"version": "v30.0.4",
|
"version": "v30.0.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nextcloud-deps/ocp.git",
|
"url": "https://github.com/nextcloud-deps/ocp.git",
|
||||||
"reference": "6f98dac2ddd6c42e605bc453e5328c0a61f75b8d"
|
"reference": "8f9f1452b564a514938d0e7361479bb9afacab27"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/6f98dac2ddd6c42e605bc453e5328c0a61f75b8d",
|
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/8f9f1452b564a514938d0e7361479bb9afacab27",
|
||||||
"reference": "6f98dac2ddd6c42e605bc453e5328c0a61f75b8d",
|
"reference": "8f9f1452b564a514938d0e7361479bb9afacab27",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -816,9 +816,9 @@
|
|||||||
"description": "Composer package containing Nextcloud's public API (classes, interfaces)",
|
"description": "Composer package containing Nextcloud's public API (classes, interfaces)",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nextcloud-deps/ocp/issues",
|
"issues": "https://github.com/nextcloud-deps/ocp/issues",
|
||||||
"source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.4"
|
"source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.5"
|
||||||
},
|
},
|
||||||
"time": "2024-11-29T00:46:59+00:00"
|
"time": "2025-01-08T10:49:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nextcloud/rector",
|
"name": "nextcloud/rector",
|
||||||
@ -940,16 +940,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-cs-fixer/shim",
|
"name": "php-cs-fixer/shim",
|
||||||
"version": "v3.66.0",
|
"version": "v3.68.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHP-CS-Fixer/shim.git",
|
"url": "https://github.com/PHP-CS-Fixer/shim.git",
|
||||||
"reference": "6824b91b16d2e123afed9bf9c96ec283882346c9"
|
"reference": "eca7a809b6b5d35d0a033c63a14881107e22a7b6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/6824b91b16d2e123afed9bf9c96ec283882346c9",
|
"url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/eca7a809b6b5d35d0a033c63a14881107e22a7b6",
|
||||||
"reference": "6824b91b16d2e123afed9bf9c96ec283882346c9",
|
"reference": "eca7a809b6b5d35d0a033c63a14881107e22a7b6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -986,9 +986,9 @@
|
|||||||
"description": "A tool to automatically fix PHP code style",
|
"description": "A tool to automatically fix PHP code style",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/PHP-CS-Fixer/shim/issues",
|
"issues": "https://github.com/PHP-CS-Fixer/shim/issues",
|
||||||
"source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.66.0"
|
"source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.68.1"
|
||||||
},
|
},
|
||||||
"time": "2024-12-29T13:46:48+00:00"
|
"time": "2025-01-17T09:21:08+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@ -1214,16 +1214,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.12.14",
|
"version": "1.12.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "e73868f809e68fff33be961ad4946e2e43ec9e38"
|
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e73868f809e68fff33be961ad4946e2e43ec9e38",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c91d4e8bc056f46cf653656e6f71004b254574d1",
|
||||||
"reference": "e73868f809e68fff33be961ad4946e2e43ec9e38",
|
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1268,7 +1268,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-12-31T07:26:13+00:00"
|
"time": "2025-01-05T16:40:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/clock",
|
"name": "psr/clock",
|
||||||
@ -1536,12 +1536,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||||
"reference": "43628df4c324d77a9e4e6e5b7d0479586b5ee2b6"
|
"reference": "e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/43628df4c324d77a9e4e6e5b7d0479586b5ee2b6",
|
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec",
|
||||||
"reference": "43628df4c324d77a9e4e6e5b7d0479586b5ee2b6",
|
"reference": "e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
@ -1777,6 +1777,7 @@
|
|||||||
"gilacms/gila": "<=1.15.4",
|
"gilacms/gila": "<=1.15.4",
|
||||||
"gleez/cms": "<=1.3|==2",
|
"gleez/cms": "<=1.3|==2",
|
||||||
"globalpayments/php-sdk": "<2",
|
"globalpayments/php-sdk": "<2",
|
||||||
|
"goalgorilla/open_social": "<12.3.8|>=12.4,<12.4.5|>=13.0.0.0-alpha1,<13.0.0.0-alpha11",
|
||||||
"gogentooss/samlbase": "<1.2.7",
|
"gogentooss/samlbase": "<1.2.7",
|
||||||
"google/protobuf": "<3.15",
|
"google/protobuf": "<3.15",
|
||||||
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
|
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
|
||||||
@ -1785,6 +1786,7 @@
|
|||||||
"grumpydictator/firefly-iii": "<6.1.17",
|
"grumpydictator/firefly-iii": "<6.1.17",
|
||||||
"gugoan/economizzer": "<=0.9.0.0-beta1",
|
"gugoan/economizzer": "<=0.9.0.0-beta1",
|
||||||
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
|
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
|
||||||
|
"guzzlehttp/oauth-subscriber": "<0.8.1",
|
||||||
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
|
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
|
||||||
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
|
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
|
||||||
"harvesthq/chosen": "<1.8.7",
|
"harvesthq/chosen": "<1.8.7",
|
||||||
@ -1823,6 +1825,7 @@
|
|||||||
"intelliants/subrion": "<4.2.2",
|
"intelliants/subrion": "<4.2.2",
|
||||||
"inter-mediator/inter-mediator": "==5.5",
|
"inter-mediator/inter-mediator": "==5.5",
|
||||||
"ipl/web": "<0.10.1",
|
"ipl/web": "<0.10.1",
|
||||||
|
"islandora/crayfish": "<4.1",
|
||||||
"islandora/islandora": ">=2,<2.4.1",
|
"islandora/islandora": ">=2,<2.4.1",
|
||||||
"ivankristianto/phpwhois": "<=4.3",
|
"ivankristianto/phpwhois": "<=4.3",
|
||||||
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
|
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
|
||||||
@ -1905,6 +1908,7 @@
|
|||||||
"mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2",
|
"mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2",
|
||||||
"mediawiki/cargo": "<3.6.1",
|
"mediawiki/cargo": "<3.6.1",
|
||||||
"mediawiki/core": "<1.39.5|==1.40",
|
"mediawiki/core": "<1.39.5|==1.40",
|
||||||
|
"mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2",
|
||||||
"mediawiki/matomo": "<2.4.3",
|
"mediawiki/matomo": "<2.4.3",
|
||||||
"mediawiki/semantic-media-wiki": "<4.0.2",
|
"mediawiki/semantic-media-wiki": "<4.0.2",
|
||||||
"melisplatform/melis-asset-manager": "<5.0.1",
|
"melisplatform/melis-asset-manager": "<5.0.1",
|
||||||
@ -1945,6 +1949,8 @@
|
|||||||
"neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
|
"neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
|
||||||
"neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
|
"neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
|
||||||
"neos/swiftmailer": "<5.4.5",
|
"neos/swiftmailer": "<5.4.5",
|
||||||
|
"nesbot/carbon": "<2.72.6|>=3,<3.8.4",
|
||||||
|
"netcarver/textile": "<=4.1.2",
|
||||||
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
|
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
|
||||||
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
|
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
|
||||||
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
|
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
|
||||||
@ -2012,7 +2018,7 @@
|
|||||||
"phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1",
|
"phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1",
|
||||||
"phpoffice/common": "<0.2.9",
|
"phpoffice/common": "<0.2.9",
|
||||||
"phpoffice/phpexcel": "<1.8.1",
|
"phpoffice/phpexcel": "<1.8.1",
|
||||||
"phpoffice/phpspreadsheet": "<1.29.4|>=2,<2.1.3|>=2.2,<2.3.2|>=3.3,<3.4",
|
"phpoffice/phpspreadsheet": "<=1.29.6|>=2,<=2.1.5|>=2.2,<=2.3.4|>=3,<3.7",
|
||||||
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
|
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
|
||||||
"phpservermon/phpservermon": "<3.6",
|
"phpservermon/phpservermon": "<3.6",
|
||||||
"phpsysinfo/phpsysinfo": "<3.4.3",
|
"phpsysinfo/phpsysinfo": "<3.4.3",
|
||||||
@ -2098,7 +2104,7 @@
|
|||||||
"silverstripe/cms": "<4.11.3",
|
"silverstripe/cms": "<4.11.3",
|
||||||
"silverstripe/comments": ">=1.3,<3.1.1",
|
"silverstripe/comments": ">=1.3,<3.1.1",
|
||||||
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
|
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
|
||||||
"silverstripe/framework": "<5.2.16",
|
"silverstripe/framework": "<5.3.8",
|
||||||
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
|
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
|
||||||
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
|
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
|
||||||
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
|
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
|
||||||
@ -2138,6 +2144,7 @@
|
|||||||
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
|
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
|
||||||
"ssddanbrown/bookstack": "<24.05.1",
|
"ssddanbrown/bookstack": "<24.05.1",
|
||||||
"starcitizentools/citizen-skin": ">=2.6.3,<2.31",
|
"starcitizentools/citizen-skin": ">=2.6.3,<2.31",
|
||||||
|
"starcitizentools/tabber-neue": ">=1.9.1,<2.7.2",
|
||||||
"statamic/cms": "<=5.16",
|
"statamic/cms": "<=5.16",
|
||||||
"stormpath/sdk": "<9.9.99",
|
"stormpath/sdk": "<9.9.99",
|
||||||
"studio-42/elfinder": "<=2.1.64",
|
"studio-42/elfinder": "<=2.1.64",
|
||||||
@ -2229,13 +2236,20 @@
|
|||||||
"twig/twig": "<3.11.2|>=3.12,<3.14.1",
|
"twig/twig": "<3.11.2|>=3.12,<3.14.1",
|
||||||
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
|
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
|
||||||
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1",
|
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1",
|
||||||
"typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1",
|
"typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
|
"typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
|
"typo3/cms-core": "<=8.7.56|>=9,<=9.5.48|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
|
"typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
|
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
|
||||||
|
"typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
"typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
|
"typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
|
||||||
"typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
|
"typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
"typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
|
"typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
|
||||||
"typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
|
"typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
|
||||||
|
"typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2",
|
||||||
|
"typo3/cms-lowlevel": ">=11,<=11.5.41",
|
||||||
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
|
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
|
||||||
|
"typo3/cms-scheduler": ">=11,<=11.5.41",
|
||||||
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
|
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
|
||||||
"typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
|
"typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
|
||||||
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
|
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
|
||||||
@ -2293,7 +2307,7 @@
|
|||||||
"xpressengine/xpressengine": "<3.0.15",
|
"xpressengine/xpressengine": "<3.0.15",
|
||||||
"yab/quarx": "<2.4.5",
|
"yab/quarx": "<2.4.5",
|
||||||
"yeswiki/yeswiki": "<=4.4.4",
|
"yeswiki/yeswiki": "<=4.4.4",
|
||||||
"yetiforce/yetiforce-crm": "<=6.4",
|
"yetiforce/yetiforce-crm": "<6.5",
|
||||||
"yidashi/yii2cmf": "<=2",
|
"yidashi/yii2cmf": "<=2",
|
||||||
"yii2mod/yii2-cms": "<1.9.2",
|
"yii2mod/yii2-cms": "<1.9.2",
|
||||||
"yiisoft/yii": "<1.1.29",
|
"yiisoft/yii": "<1.1.29",
|
||||||
@ -2383,7 +2397,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-01-02T23:04:41+00:00"
|
"time": "2025-01-15T23:05:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
@ -3413,7 +3427,7 @@
|
|||||||
"platform": {
|
"platform": {
|
||||||
"php": "^8.1"
|
"php": "^8.1"
|
||||||
},
|
},
|
||||||
"platform-dev": {},
|
"platform-dev": [],
|
||||||
"platform-overrides": {
|
"platform-overrides": {
|
||||||
"php": "8.1"
|
"php": "8.1"
|
||||||
},
|
},
|
||||||
|
@ -19,9 +19,9 @@ OC.L10N.register(
|
|||||||
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
|
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
|
||||||
"Play" : "Abspielen",
|
"Play" : "Abspielen",
|
||||||
"Stop" : "Stopp",
|
"Stop" : "Stopp",
|
||||||
"Read" : "Gelesen",
|
"Read" : "gehört",
|
||||||
"Open website" : "Webseite aufrufen",
|
"Open website" : "Webseite aufrufen",
|
||||||
"Select" : "Wählen",
|
"Select" : "Auswählen",
|
||||||
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
|
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
|
||||||
"Read all" : "Alles lesen",
|
"Read all" : "Alles lesen",
|
||||||
"Unread all" : "Ungelesen",
|
"Unread all" : "Ungelesen",
|
||||||
@ -58,7 +58,7 @@ OC.L10N.register(
|
|||||||
"Error loading feed" : "Fehler beim Laden des Feeds",
|
"Error loading feed" : "Fehler beim Laden des Feeds",
|
||||||
"Missing required app" : "Benötigte App fehlt",
|
"Missing required app" : "Benötigte App fehlt",
|
||||||
"Install GPodder Sync" : "Installiere GPodder Sync",
|
"Install GPodder Sync" : "Installiere GPodder Sync",
|
||||||
"Pin some subscriptions to see their latest updates" : "Pinne einige Abonnements, um ihre neuesten Updates zu sehen",
|
"Pin some subscriptions to see their latest updates" : "Markiere Abonnements, um die neuesten Updates zu sehen",
|
||||||
"No favorites" : "Keine Favoriten",
|
"No favorites" : "Keine Favoriten",
|
||||||
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
|
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
|
||||||
},
|
},
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
|
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
|
||||||
"Play" : "Abspielen",
|
"Play" : "Abspielen",
|
||||||
"Stop" : "Stopp",
|
"Stop" : "Stopp",
|
||||||
"Read" : "Gelesen",
|
"Read" : "gehört",
|
||||||
"Open website" : "Webseite aufrufen",
|
"Open website" : "Webseite aufrufen",
|
||||||
"Select" : "Wählen",
|
"Select" : "Auswählen",
|
||||||
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
|
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
|
||||||
"Read all" : "Alles lesen",
|
"Read all" : "Alles lesen",
|
||||||
"Unread all" : "Ungelesen",
|
"Unread all" : "Ungelesen",
|
||||||
@ -56,7 +56,7 @@
|
|||||||
"Error loading feed" : "Fehler beim Laden des Feeds",
|
"Error loading feed" : "Fehler beim Laden des Feeds",
|
||||||
"Missing required app" : "Benötigte App fehlt",
|
"Missing required app" : "Benötigte App fehlt",
|
||||||
"Install GPodder Sync" : "Installiere GPodder Sync",
|
"Install GPodder Sync" : "Installiere GPodder Sync",
|
||||||
"Pin some subscriptions to see their latest updates" : "Pinne einige Abonnements, um ihre neuesten Updates zu sehen",
|
"Pin some subscriptions to see their latest updates" : "Markiere Abonnements, um die neuesten Updates zu sehen",
|
||||||
"No favorites" : "Keine Favoriten",
|
"No favorites" : "Keine Favoriten",
|
||||||
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
|
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
|
||||||
},"pluralForm" :"nplurals=2; plural=n != 1;"
|
},"pluralForm" :"nplurals=2; plural=n != 1;"
|
||||||
|
@ -40,7 +40,10 @@ class EpisodesController extends Controller
|
|||||||
usort($episodes, fn (EpisodeActionExtraData $a, EpisodeActionExtraData $b): int => $b->getPubDate() <=> $a->getPubDate());
|
usort($episodes, fn (EpisodeActionExtraData $a, EpisodeActionExtraData $b): int => $b->getPubDate() <=> $a->getPubDate());
|
||||||
$episodes = array_values(array_intersect_key($episodes, array_unique(array_map(fn (EpisodeActionExtraData $episode): string => $episode->getGuid(), $episodes))));
|
$episodes = array_values(array_intersect_key($episodes, array_unique(array_map(fn (EpisodeActionExtraData $episode): string => $episode->getGuid(), $episodes))));
|
||||||
|
|
||||||
return new JSONResponse($episodes, $feed->getStatusCode());
|
/** @var Http::STATUS_* $returnStatusCode */
|
||||||
|
$returnStatusCode = $feed->getStatusCode();
|
||||||
|
|
||||||
|
return new JSONResponse($episodes, $returnStatusCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[NoAdminRequired]
|
#[NoAdminRequired]
|
||||||
|
@ -12,7 +12,6 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
|||||||
use OCP\AppFramework\Http\ContentSecurityPolicy;
|
use OCP\AppFramework\Http\ContentSecurityPolicy;
|
||||||
use OCP\AppFramework\Http\TemplateResponse;
|
use OCP\AppFramework\Http\TemplateResponse;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\Util;
|
|
||||||
|
|
||||||
class PageController extends Controller
|
class PageController extends Controller
|
||||||
{
|
{
|
||||||
@ -26,9 +25,6 @@ class PageController extends Controller
|
|||||||
#[NoCSRFRequired]
|
#[NoCSRFRequired]
|
||||||
#[FrontpageRoute(verb: 'GET', url: '/')]
|
#[FrontpageRoute(verb: 'GET', url: '/')]
|
||||||
public function index(): TemplateResponse {
|
public function index(): TemplateResponse {
|
||||||
Util::addScript(Application::APP_ID, Application::APP_ID.'-main');
|
|
||||||
Util::addStyle(Application::APP_ID, Application::APP_ID.'-main');
|
|
||||||
|
|
||||||
$csp = new ContentSecurityPolicy();
|
$csp = new ContentSecurityPolicy();
|
||||||
$csp->addAllowedImageDomain('*');
|
$csp->addAllowedImageDomain('*');
|
||||||
$csp->addAllowedMediaDomain('*');
|
$csp->addAllowedMediaDomain('*');
|
||||||
|
@ -8,6 +8,7 @@ use OCA\GPodderSync\Core\PodcastData\PodcastData;
|
|||||||
use OCA\GPodderSync\Core\PodcastData\PodcastDataReader;
|
use OCA\GPodderSync\Core\PodcastData\PodcastDataReader;
|
||||||
use OCA\RePod\AppInfo\Application;
|
use OCA\RePod\AppInfo\Application;
|
||||||
use OCP\AppFramework\Controller;
|
use OCP\AppFramework\Controller;
|
||||||
|
use OCP\AppFramework\Http;
|
||||||
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
||||||
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
|
||||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||||
@ -55,6 +56,9 @@ class PodcastController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new JSONResponse($podcast, $feed->getStatusCode());
|
/** @var Http::STATUS_* $returnStatusCode */
|
||||||
|
$returnStatusCode = $feed->getStatusCode();
|
||||||
|
|
||||||
|
return new JSONResponse($podcast, $returnStatusCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ use OCA\GPodderSync\Core\EpisodeAction\EpisodeAction;
|
|||||||
* name: string,
|
* name: string,
|
||||||
* link: ?string,
|
* link: ?string,
|
||||||
* image: ?string,
|
* image: ?string,
|
||||||
|
* author: ?string,
|
||||||
* description: ?string,
|
* description: ?string,
|
||||||
* fetchedAtUnix: int,
|
* fetchedAtUnix: int,
|
||||||
* guid: string,
|
* guid: string,
|
||||||
@ -36,6 +37,7 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
|
|||||||
private readonly string $name,
|
private readonly string $name,
|
||||||
private readonly ?string $link,
|
private readonly ?string $link,
|
||||||
private readonly ?string $image,
|
private readonly ?string $image,
|
||||||
|
private readonly ?string $author,
|
||||||
private readonly ?string $description,
|
private readonly ?string $description,
|
||||||
private readonly int $fetchedAtUnix,
|
private readonly int $fetchedAtUnix,
|
||||||
private readonly string $guid,
|
private readonly string $guid,
|
||||||
@ -70,6 +72,10 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
|
|||||||
return $this->image;
|
return $this->image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAuthor(): ?string {
|
||||||
|
return $this->author;
|
||||||
|
}
|
||||||
|
|
||||||
public function getDescription(): ?string {
|
public function getDescription(): ?string {
|
||||||
return $this->description;
|
return $this->description;
|
||||||
}
|
}
|
||||||
@ -113,6 +119,7 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
|
|||||||
'name' => $this->name,
|
'name' => $this->name,
|
||||||
'link' => $this->link,
|
'link' => $this->link,
|
||||||
'image' => $this->image,
|
'image' => $this->image,
|
||||||
|
'author' => $this->author,
|
||||||
'description' => $this->description,
|
'description' => $this->description,
|
||||||
'fetchedAtUnix' => $this->fetchedAtUnix,
|
'fetchedAtUnix' => $this->fetchedAtUnix,
|
||||||
'guid' => $this->guid,
|
'guid' => $this->guid,
|
||||||
|
@ -81,6 +81,13 @@ class EpisodeActionReader extends CoreEpisodeActionReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get episode author
|
||||||
|
if (isset($iTunesItemChildren)) {
|
||||||
|
$author = $this->stringOrNull($iTunesItemChildren->author);
|
||||||
|
} else {
|
||||||
|
$author = $this->stringOrNull($item->author);
|
||||||
|
}
|
||||||
|
|
||||||
// Get episode description
|
// Get episode description
|
||||||
$itemContent = $item->children('content', true);
|
$itemContent = $item->children('content', true);
|
||||||
if (isset($itemContent)) {
|
if (isset($itemContent)) {
|
||||||
@ -116,6 +123,7 @@ class EpisodeActionReader extends CoreEpisodeActionReader
|
|||||||
$name,
|
$name,
|
||||||
$link,
|
$link,
|
||||||
$image,
|
$image,
|
||||||
|
$author,
|
||||||
$description,
|
$description,
|
||||||
$fetchedAtUnix ?? (new \DateTime())->getTimestamp(),
|
$fetchedAtUnix ?? (new \DateTime())->getTimestamp(),
|
||||||
$guid,
|
$guid,
|
||||||
|
1356
package-lock.json
generated
1356
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
13
package.json
13
package.json
@ -21,13 +21,13 @@
|
|||||||
"@nextcloud/initial-state": "^2.2.0",
|
"@nextcloud/initial-state": "^2.2.0",
|
||||||
"@nextcloud/l10n": "^3.1.0",
|
"@nextcloud/l10n": "^3.1.0",
|
||||||
"@nextcloud/router": "^3.0.1",
|
"@nextcloud/router": "^3.0.1",
|
||||||
"@nextcloud/vite-config": "^2.2.2",
|
"@nextcloud/vite-config": "^2.3.0",
|
||||||
"@nextcloud/vue": "9.0.0-alpha.5",
|
"@nextcloud/vue": "9.0.0-alpha.6",
|
||||||
"dompurify": "^3.2.3",
|
"dompurify": "^3.2.3",
|
||||||
"linkify-html": "^4.2.0",
|
"linkify-html": "^4.2.0",
|
||||||
"pinia": "^2.3.0",
|
"pinia": "^2.3.1",
|
||||||
"toastify-js": "^1.12.0",
|
"toastify-js": "^1.12.0",
|
||||||
"vite": "~5.4.11",
|
"vite": "~5.4.13",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
"vue-material-design-icons": "^5.3.1",
|
"vue-material-design-icons": "^5.3.1",
|
||||||
"vue-router": "^4.5.0"
|
"vue-router": "^4.5.0"
|
||||||
@ -38,11 +38,10 @@
|
|||||||
"@nextcloud/prettier-config": "^1.1.0",
|
"@nextcloud/prettier-config": "^1.1.0",
|
||||||
"@nextcloud/stylelint-config": "^3.0.1",
|
"@nextcloud/stylelint-config": "^3.0.1",
|
||||||
"@types/toastify-js": "^1.12.3",
|
"@types/toastify-js": "^1.12.3",
|
||||||
"@vue/eslint-config-typescript": "~13.0.0",
|
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^10.0.1",
|
||||||
"eslint-plugin-pinia": "^0.4.1",
|
"eslint-plugin-pinia": "^0.4.1",
|
||||||
"eslint-plugin-prettier": "^5.2.1",
|
"eslint-plugin-prettier": "^5.2.3",
|
||||||
"typescript": "~5.5.4",
|
"typescript": "~5.5.4",
|
||||||
"vue-tsc": "^2.2.0"
|
"vue-tsc": "^2.2.0"
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
:size="256"
|
:size="256"
|
||||||
:url="episode.image" />
|
:url="episode.image" />
|
||||||
<h2>{{ episode.name }}</h2>
|
<h2>{{ episode.name }}</h2>
|
||||||
|
<i v-if="episode.author">{{ episode.author }}</i>
|
||||||
|
<br />
|
||||||
<SafeHtml :source="episode.description || ''" />
|
<SafeHtml :source="episode.description || ''" />
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<NcButton v-if="episode.link" :href="episode.link" target="_blank">
|
<NcButton v-if="episode.link" :href="episode.link" target="_blank">
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
:one-line="oneLine"
|
:one-line="oneLine"
|
||||||
:style="{ opacity: hasEnded(episode) ? 0.4 : 1 }"
|
:style="{ opacity: hasEnded(episode) ? 0.4 : 1 }"
|
||||||
@click="modalEpisode = episode">
|
@click="modalEpisode = episode">
|
||||||
<template #actions>
|
<template #extra-actions>
|
||||||
<NcActionButton
|
<NcActionButton
|
||||||
v-if="!isCurrentEpisode(episode)"
|
v-if="!isCurrentEpisode(episode)"
|
||||||
:aria-label="t('repod', 'Play')"
|
:aria-label="t('repod', 'Play')"
|
||||||
@ -32,8 +32,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</NcActionButton>
|
</NcActionButton>
|
||||||
</template>
|
</template>
|
||||||
<template #extra>
|
<template #actions>
|
||||||
<NcActions v-if="displayActions">
|
|
||||||
<NcActionButton
|
<NcActionButton
|
||||||
v-if="episode.duration"
|
v-if="episode.duration"
|
||||||
:aria-label="t('repod', 'Read')"
|
:aria-label="t('repod', 'Read')"
|
||||||
@ -68,7 +67,8 @@
|
|||||||
<DownloadIcon :size="20" />
|
<DownloadIcon :size="20" />
|
||||||
</template>
|
</template>
|
||||||
</NcActionLink>
|
</NcActionLink>
|
||||||
</NcActions>
|
</template>
|
||||||
|
<template #extra>
|
||||||
<NcModal v-if="modalEpisode" @close="modalEpisode = null">
|
<NcModal v-if="modalEpisode" @close="modalEpisode = null">
|
||||||
<Modal :episode="episode" />
|
<Modal :episode="episode" />
|
||||||
</NcModal>
|
</NcModal>
|
||||||
@ -86,13 +86,18 @@
|
|||||||
</NcAvatar>
|
</NcAvatar>
|
||||||
</template>
|
</template>
|
||||||
<template #indicator>
|
<template #indicator>
|
||||||
|
<div class="indicator">
|
||||||
<NcProgressBar
|
<NcProgressBar
|
||||||
v-if="episode.action && isListening(episode) && !oneLine"
|
v-if="episode.action && isListening(episode) && !oneLine"
|
||||||
class="progress"
|
class="progress"
|
||||||
:value="(episode.action.position * 100) / episode.action.total" />
|
:value="
|
||||||
|
(episode.action.position * 100) / episode.action.total
|
||||||
|
" />
|
||||||
|
{{ episode.duration }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #subname>
|
<template #subname>
|
||||||
{{ episode.duration }}
|
{{ !oneLine ? episode.author : '' }}
|
||||||
</template>
|
</template>
|
||||||
</NcListItem>
|
</NcListItem>
|
||||||
</template>
|
</template>
|
||||||
@ -101,7 +106,6 @@
|
|||||||
import {
|
import {
|
||||||
NcActionButton,
|
NcActionButton,
|
||||||
NcActionLink,
|
NcActionLink,
|
||||||
NcActions,
|
|
||||||
NcAvatar,
|
NcAvatar,
|
||||||
NcListItem,
|
NcListItem,
|
||||||
NcModal,
|
NcModal,
|
||||||
@ -134,7 +138,6 @@ export default {
|
|||||||
Modal,
|
Modal,
|
||||||
NcActionButton,
|
NcActionButton,
|
||||||
NcActionLink,
|
NcActionLink,
|
||||||
NcActions,
|
|
||||||
NcAvatar,
|
NcAvatar,
|
||||||
NcListItem,
|
NcListItem,
|
||||||
NcModal,
|
NcModal,
|
||||||
@ -146,10 +149,6 @@ export default {
|
|||||||
StopIcon,
|
StopIcon,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
displayActions: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
episode: {
|
episode: {
|
||||||
type: Object as () => EpisodeInterface,
|
type: Object as () => EpisodeInterface,
|
||||||
required: true,
|
required: true,
|
||||||
@ -207,13 +206,14 @@ export default {
|
|||||||
.progress {
|
.progress {
|
||||||
margin-top: 0.4rem;
|
margin-top: 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.indicator {
|
||||||
|
display: flex;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.episode .list-item-content__name {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.episode .list-item-content__subname {
|
.episode .list-item-content__subname {
|
||||||
flex-basis: auto;
|
flex-basis: auto;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
episodes.filter((e: EpisodeInterface) => e.selected)
|
episodes.filter((e: EpisodeInterface) => e.selected)
|
||||||
.length < episodes.length
|
.length < episodes.length
|
||||||
"
|
"
|
||||||
|
class="avatar"
|
||||||
:display-name="t('repod', 'Select all')"
|
:display-name="t('repod', 'Select all')"
|
||||||
:is-no-user="true">
|
:is-no-user="true">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
@ -75,6 +76,7 @@
|
|||||||
episodes.filter((e: EpisodeInterface) => e.selected)
|
episodes.filter((e: EpisodeInterface) => e.selected)
|
||||||
.length >= episodes.length
|
.length >= episodes.length
|
||||||
"
|
"
|
||||||
|
class="avatar"
|
||||||
:display-name="t('repod', 'Unselect all')"
|
:display-name="t('repod', 'Unselect all')"
|
||||||
:is-no-user="true">
|
:is-no-user="true">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
@ -89,9 +91,6 @@
|
|||||||
<Episode
|
<Episode
|
||||||
v-for="episode in filteredEpisodes"
|
v-for="episode in filteredEpisodes"
|
||||||
:key="episode.guid"
|
:key="episode.guid"
|
||||||
:display-actions="
|
|
||||||
episodes.every((e: EpisodeInterface) => !e.selected)
|
|
||||||
"
|
|
||||||
:episode="episode"
|
:episode="episode"
|
||||||
:url="url"
|
:url="url"
|
||||||
@select="episode.selected = !episode.selected" />
|
@select="episode.selected = !episode.selected" />
|
||||||
@ -217,6 +216,10 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.avatar {
|
||||||
|
color: var(--color-main-text);
|
||||||
|
}
|
||||||
|
|
||||||
.progress {
|
.progress {
|
||||||
margin-top: 0.4rem;
|
margin-top: 0.4rem;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,10 @@
|
|||||||
<template #extra>
|
<template #extra>
|
||||||
<div class="extra">
|
<div class="extra">
|
||||||
<MinusIcon class="pointer" :size="20" @click="changeRate(-0.1)" />
|
<MinusIcon class="pointer" :size="20" @click="changeRate(-0.1)" />
|
||||||
<NcCounterBubble class="counter">x{{ rate }}</NcCounterBubble>
|
<NcCounterBubble
|
||||||
|
:active="rate !== 1"
|
||||||
|
class="counter"
|
||||||
|
:count="rate" />
|
||||||
<PlusIcon class="pointer" :size="20" @click="changeRate(0.1)" />
|
<PlusIcon class="pointer" :size="20" @click="changeRate(0.1)" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
:model-value="feed?.isFavorite"
|
:model-value="feed?.isFavorite"
|
||||||
:name="t('repod', 'Favorite')"
|
:name="t('repod', 'Favorite')"
|
||||||
:title="t('repod', 'Favorite')"
|
:title="t('repod', 'Favorite')"
|
||||||
@update:modelValue="switchFavorite($event)">
|
@update:model-value="switchFavorite($event)">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<StarPlusIcon v-if="!feed?.isFavorite" :size="20" />
|
<StarPlusIcon v-if="!feed?.isFavorite" :size="20" />
|
||||||
<StarRemoveIcon v-if="feed?.isFavorite" :size="20" />
|
<StarRemoveIcon v-if="feed?.isFavorite" :size="20" />
|
||||||
@ -29,9 +29,10 @@
|
|||||||
<NcAvatar
|
<NcAvatar
|
||||||
:display-name="feed?.data?.author || feed?.data?.title"
|
:display-name="feed?.data?.author || feed?.data?.title"
|
||||||
:is-no-user="true"
|
:is-no-user="true"
|
||||||
|
:size="20"
|
||||||
:title="feed?.data?.author"
|
:title="feed?.data?.author"
|
||||||
:url="feed?.data?.imageUrl" />
|
:url="feed?.data?.imageUrl" />
|
||||||
<StarIcon v-if="feed?.isFavorite" class="star" :size="20" />
|
<StarIcon v-if="feed?.isFavorite" class="star" :size="10" />
|
||||||
<AlertIcon v-if="failed" />
|
<AlertIcon v-if="failed" />
|
||||||
</template>
|
</template>
|
||||||
</NcAppNavigationItem>
|
</NcAppNavigationItem>
|
||||||
|
@ -48,6 +48,34 @@ export const usePlayer = defineStore('player', {
|
|||||||
conflict() {
|
conflict() {
|
||||||
this.playCount = 0
|
this.playCount = 0
|
||||||
},
|
},
|
||||||
|
metadatas(episode: EpisodeInterface) {
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API
|
||||||
|
navigator.mediaSession.metadata = new MediaMetadata({
|
||||||
|
title: episode.name,
|
||||||
|
artist: episode.author,
|
||||||
|
album: episode.title,
|
||||||
|
artwork: episode.image ? [{ src: episode.image }] : [],
|
||||||
|
})
|
||||||
|
|
||||||
|
navigator.mediaSession.setActionHandler('play', this.play)
|
||||||
|
navigator.mediaSession.setActionHandler('pause', this.pause)
|
||||||
|
navigator.mediaSession.setActionHandler('stop', this.stop)
|
||||||
|
navigator.mediaSession.setActionHandler(
|
||||||
|
'seekbackward',
|
||||||
|
(details: MediaSessionActionDetails) =>
|
||||||
|
this.seek(audio.currentTime - (details.seekOffset || 10)),
|
||||||
|
)
|
||||||
|
navigator.mediaSession.setActionHandler(
|
||||||
|
'seekforward',
|
||||||
|
(details: MediaSessionActionDetails) =>
|
||||||
|
this.seek(audio.currentTime + (details.seekOffset || 30)),
|
||||||
|
)
|
||||||
|
navigator.mediaSession.setActionHandler(
|
||||||
|
'seekto',
|
||||||
|
(details: MediaSessionActionDetails) =>
|
||||||
|
!details.fastSeek && this.seek(details.seekTime || 0),
|
||||||
|
)
|
||||||
|
},
|
||||||
async load(episode: EpisodeInterface | null, podcastUrl?: string) {
|
async load(episode: EpisodeInterface | null, podcastUrl?: string) {
|
||||||
this.episode = episode
|
this.episode = episode
|
||||||
this.podcastUrl = podcastUrl || null
|
this.podcastUrl = podcastUrl || null
|
||||||
@ -75,6 +103,7 @@ export const usePlayer = defineStore('player', {
|
|||||||
}
|
}
|
||||||
|
|
||||||
audio.play()
|
audio.play()
|
||||||
|
this.metadatas(this.episode)
|
||||||
} else {
|
} else {
|
||||||
this.loaded = false
|
this.loaded = false
|
||||||
this.podcastUrl = null
|
this.podcastUrl = null
|
||||||
|
@ -16,6 +16,7 @@ export interface EpisodeInterface {
|
|||||||
name: string
|
name: string
|
||||||
link?: string
|
link?: string
|
||||||
image?: string
|
image?: string
|
||||||
|
author?: string
|
||||||
description?: string
|
description?: string
|
||||||
fetchedAtUnix: number
|
fetchedAtUnix: number
|
||||||
guid: string
|
guid: string
|
||||||
|
@ -1 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use OCA\RePod\AppInfo\Application;
|
||||||
|
use OCP\Util;
|
||||||
|
|
||||||
|
Util::addScript(Application::APP_ID, Application::APP_ID.'-main');
|
||||||
|
Util::addStyle(Application::APP_ID, Application::APP_ID.'-main');
|
||||||
|
|
||||||
|
?>
|
||||||
<div id="content"></div>
|
<div id="content"></div>
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
# This file is distributed under the same license as the Nextcloud package.
|
# This file is distributed under the same license as the Nextcloud package.
|
||||||
# OiledAmoeba <florian+crystalyx@ruhnke.cloud>, 2024.
|
# OiledAmoeba <florian+crystalyx@ruhnke.cloud>, 2024.
|
||||||
# Michel Roux <xefir@crystalyx.net>, 2024.
|
# Michel Roux <xefir@crystalyx.net>, 2024.
|
||||||
# markus phi <repodtranslate@solinetcafe.org>, 2024.
|
# markus phi <repodtranslate@solinetcafe.org>, 2024, 2025.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Nextcloud 3.14159\n"
|
"Project-Id-Version: Nextcloud 3.14159\n"
|
||||||
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
||||||
"POT-Creation-Date: 2024-12-11 20:03+0000\n"
|
"POT-Creation-Date: 2025-01-10 22:55+0000\n"
|
||||||
"PO-Revision-Date: 2024-12-25 21:02+0000\n"
|
"PO-Revision-Date: 2025-01-04 19:02+0000\n"
|
||||||
"Last-Translator: markus phi <repodtranslate@solinetcafe.org>\n"
|
"Last-Translator: markus phi <repodtranslate@solinetcafe.org>\n"
|
||||||
"Language-Team: German <https://translate.crystalyx.net/projects/repod/gitea/"
|
"Language-Team: German <https://translate.crystalyx.net/projects/repod/gitea/"
|
||||||
"de/>\n"
|
"de/>\n"
|
||||||
@ -58,8 +58,8 @@ msgstr ""
|
|||||||
"## Funktionen\n"
|
"## Funktionen\n"
|
||||||
"- 🔍 Durchsuchen und abonnieren einer großen Sammlung von Podcasts\n"
|
"- 🔍 Durchsuchen und abonnieren einer großen Sammlung von Podcasts\n"
|
||||||
"- 🔊 Episoden direkt in Nextcloud anhören\n"
|
"- 🔊 Episoden direkt in Nextcloud anhören\n"
|
||||||
"- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod.org/)"
|
"- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod."
|
||||||
"\n"
|
"org/)\n"
|
||||||
"- 📱 Handy-freundliche Schnittstelle\n"
|
"- 📱 Handy-freundliche Schnittstelle\n"
|
||||||
"- 📡 Importieren und Exportieren Ihrer Abonnements\n"
|
"- 📡 Importieren und Exportieren Ihrer Abonnements\n"
|
||||||
"- ➡️ Vollständiger Funktionsvergleich [hier](https://git.crystalyx.net/Xefir/"
|
"- ➡️ Vollständiger Funktionsvergleich [hier](https://git.crystalyx.net/Xefir/"
|
||||||
@ -133,9 +133,8 @@ msgstr "Stopp"
|
|||||||
#: /app/specialVueFakeDummyForL10nScript.js:20
|
#: /app/specialVueFakeDummyForL10nScript.js:20
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:21
|
#: /app/specialVueFakeDummyForL10nScript.js:21
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:22
|
#: /app/specialVueFakeDummyForL10nScript.js:22
|
||||||
#, fuzzy
|
|
||||||
msgid "Read"
|
msgid "Read"
|
||||||
msgstr "Gelesen"
|
msgstr "gehört"
|
||||||
|
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:23
|
#: /app/specialVueFakeDummyForL10nScript.js:23
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:24
|
#: /app/specialVueFakeDummyForL10nScript.js:24
|
||||||
@ -143,9 +142,8 @@ msgid "Open website"
|
|||||||
msgstr "Webseite aufrufen"
|
msgstr "Webseite aufrufen"
|
||||||
|
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:27
|
#: /app/specialVueFakeDummyForL10nScript.js:27
|
||||||
#, fuzzy
|
|
||||||
msgid "Select"
|
msgid "Select"
|
||||||
msgstr "Wählen"
|
msgstr "Auswählen"
|
||||||
|
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:28
|
#: /app/specialVueFakeDummyForL10nScript.js:28
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:38
|
#: /app/specialVueFakeDummyForL10nScript.js:38
|
||||||
@ -309,14 +307,13 @@ msgid "Install GPodder Sync"
|
|||||||
msgstr "Installiere GPodder Sync"
|
msgstr "Installiere GPodder Sync"
|
||||||
|
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:75
|
#: /app/specialVueFakeDummyForL10nScript.js:75
|
||||||
#, fuzzy
|
|
||||||
msgid "Pin some subscriptions to see their latest updates"
|
msgid "Pin some subscriptions to see their latest updates"
|
||||||
msgstr "Pinne einige Abonnements, um ihre neuesten Updates zu sehen"
|
msgstr "Markiere Abonnements, um die neuesten Updates zu sehen"
|
||||||
|
|
||||||
#: /app/specialVueFakeDummyForL10nScript.js:76
|
#: /app/specialVueFakeDummyForL10nScript.js:76
|
||||||
msgid "No favorites"
|
msgid "No favorites"
|
||||||
msgstr "Keine Favoriten"
|
msgstr "Keine Favoriten"
|
||||||
|
|
||||||
#: /app/src/store/player.ts:93
|
#: /app/src/store/player.ts:122
|
||||||
msgid "A browser extension conflict with RePod"
|
msgid "A browser extension conflict with RePod"
|
||||||
msgstr "Ein Browser-Plugin Problem mit RePod"
|
msgstr "Ein Browser-Plugin Problem mit RePod"
|
||||||
|
@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Nextcloud 3.14159\n"
|
"Project-Id-Version: Nextcloud 3.14159\n"
|
||||||
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
||||||
"POT-Creation-Date: 2024-12-11 20:03+0000\n"
|
"POT-Creation-Date: 2025-01-10 22:55+0000\n"
|
||||||
"PO-Revision-Date: 2024-12-11 20:06+0000\n"
|
"PO-Revision-Date: 2024-12-11 20:06+0000\n"
|
||||||
"Last-Translator: Michel Roux <xefir@crystalyx.net>\n"
|
"Last-Translator: Michel Roux <xefir@crystalyx.net>\n"
|
||||||
"Language-Team: French <https://translate.crystalyx.net/projects/repod/gitea/"
|
"Language-Team: French <https://translate.crystalyx.net/projects/repod/gitea/"
|
||||||
@ -313,6 +313,6 @@ msgstr ""
|
|||||||
msgid "No favorites"
|
msgid "No favorites"
|
||||||
msgstr "Aucun favoris"
|
msgstr "Aucun favoris"
|
||||||
|
|
||||||
#: /app/src/store/player.ts:93
|
#: /app/src/store/player.ts:122
|
||||||
msgid "A browser extension conflict with RePod"
|
msgid "A browser extension conflict with RePod"
|
||||||
msgstr "Une extension de votre navigateur entre en conflit avec RePod"
|
msgstr "Une extension de votre navigateur entre en conflit avec RePod"
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Nextcloud 3.14159\n"
|
"Project-Id-Version: Nextcloud 3.14159\n"
|
||||||
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
||||||
"POT-Creation-Date: 2024-12-11 20:03+0000\n"
|
"POT-Creation-Date: 2025-01-10 22:55+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -298,6 +298,6 @@ msgstr ""
|
|||||||
msgid "No favorites"
|
msgid "No favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /app/src/store/player.ts:93
|
#: /app/src/store/player.ts:122
|
||||||
msgid "A browser extension conflict with RePod"
|
msgid "A browser extension conflict with RePod"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user