Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
df17f399d2 | |||
a4af911ff3 | |||
b0e68b6b4e | |||
9ad2e4f824 | |||
a104b7c460 | |||
7045716799 | |||
|
ef3fc2d6ea | ||
6cd1058048 |
@ -19,11 +19,11 @@
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"nextcloud/ocp": "^30.0.3",
|
||||
"nextcloud/ocp": "^30.0.4",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"nextcloud/coding-standard": "^1.3.2",
|
||||
"nextcloud/rector": "^0.2.1",
|
||||
"rector/rector": "^1.2.10",
|
||||
"rector/rector": "~1.2.10",
|
||||
"vimeo/psalm": "^5.26.1"
|
||||
},
|
||||
"config": {
|
||||
|
51
composer.lock
generated
51
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "637d36247b6b2a581d855299334035e8",
|
||||
"content-hash": "8985893a48af49654e50784bda34fb89",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
@ -194,13 +194,13 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.x-dev"
|
||||
},
|
||||
"phpstan": {
|
||||
"includes": [
|
||||
"extension.neon"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -778,7 +778,7 @@
|
||||
},
|
||||
{
|
||||
"name": "nextcloud/ocp",
|
||||
"version": "v30.0.3",
|
||||
"version": "v30.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nextcloud-deps/ocp.git",
|
||||
@ -816,7 +816,7 @@
|
||||
"description": "Composer package containing Nextcloud's public API (classes, interfaces)",
|
||||
"support": {
|
||||
"issues": "https://github.com/nextcloud-deps/ocp/issues",
|
||||
"source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.3"
|
||||
"source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.4"
|
||||
},
|
||||
"time": "2024-11-29T00:46:59+00:00"
|
||||
},
|
||||
@ -1214,16 +1214,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.12.12",
|
||||
"version": "1.12.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0"
|
||||
"reference": "9b469068840cfa031e1deaf2fa1886d00e20680f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0",
|
||||
"reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b469068840cfa031e1deaf2fa1886d00e20680f",
|
||||
"reference": "9b469068840cfa031e1deaf2fa1886d00e20680f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1268,7 +1268,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-28T22:13:23+00:00"
|
||||
"time": "2024-12-17T17:00:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/clock",
|
||||
@ -1536,12 +1536,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||
"reference": "1fd8b74024b8938b25df3a9971c7ad9d57d4f592"
|
||||
"reference": "4aa68d3ea343b9576b5fdebef1332f701a7bc994"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1fd8b74024b8938b25df3a9971c7ad9d57d4f592",
|
||||
"reference": "1fd8b74024b8938b25df3a9971c7ad9d57d4f592",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4aa68d3ea343b9576b5fdebef1332f701a7bc994",
|
||||
"reference": "4aa68d3ea343b9576b5fdebef1332f701a7bc994",
|
||||
"shasum": ""
|
||||
},
|
||||
"conflict": {
|
||||
@ -1651,7 +1651,7 @@
|
||||
"contao/managed-edition": "<=1.5",
|
||||
"corveda/phpsandbox": "<1.3.5",
|
||||
"cosenary/instagram": "<=2.3",
|
||||
"craftcms/cms": "<=4.12.6.1|>=5,<=5.4.7.1",
|
||||
"craftcms/cms": "<4.13.2|>=5,<5.5.2",
|
||||
"croogo/croogo": "<4",
|
||||
"cuyz/valinor": "<0.12",
|
||||
"czim/file-handling": "<1.5|>=2,<2.3",
|
||||
@ -1865,6 +1865,7 @@
|
||||
"laravel/fortify": "<1.11.1",
|
||||
"laravel/framework": "<6.20.45|>=7,<7.30.7|>=8,<8.83.28|>=9,<9.52.17|>=10,<10.48.23|>=11,<11.31",
|
||||
"laravel/laravel": ">=5.4,<5.4.22",
|
||||
"laravel/pulse": "<1.3.1",
|
||||
"laravel/reverb": "<1.4",
|
||||
"laravel/socialite": ">=1,<2.0.10",
|
||||
"latte/latte": "<2.10.8",
|
||||
@ -1945,7 +1946,6 @@
|
||||
"neos/swiftmailer": "<5.4.5",
|
||||
"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/database": "<=3.2.4",
|
||||
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
|
||||
"nilsteampassnet/teampass": "<3.0.10",
|
||||
"nonfiction/nterchange": "<4.1.1",
|
||||
@ -2090,6 +2090,7 @@
|
||||
"shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev",
|
||||
"shopxo/shopxo": "<=6.1",
|
||||
"showdoc/showdoc": "<2.10.4",
|
||||
"shuchkin/simplexlsx": ">=1.0.12,<1.1.12",
|
||||
"silverstripe-australia/advancedreports": ">=1,<=2",
|
||||
"silverstripe/admin": "<1.13.19|>=2,<2.1.8",
|
||||
"silverstripe/assets": ">=1,<1.11.1",
|
||||
@ -2127,7 +2128,7 @@
|
||||
"snipe/snipe-it": "<=7.0.13",
|
||||
"socalnick/scn-social-auth": "<1.15.2",
|
||||
"socialiteproviders/steam": "<1.1",
|
||||
"spatie/browsershot": "<3.57.4",
|
||||
"spatie/browsershot": "<5.0.2",
|
||||
"spatie/image-optimizer": "<1.7.3",
|
||||
"spencer14420/sp-php-email-handler": "<1",
|
||||
"spipu/html2pdf": "<5.2.8",
|
||||
@ -2240,7 +2241,7 @@
|
||||
"typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
|
||||
"ua-parser/uap-php": "<3.8",
|
||||
"uasoft-indonesia/badaso": "<=2.9.7",
|
||||
"unisharp/laravel-filemanager": "<2.6.4",
|
||||
"unisharp/laravel-filemanager": "<2.9.1",
|
||||
"unopim/unopim": "<0.1.5",
|
||||
"userfrosting/userfrosting": ">=0.3.1,<4.6.3",
|
||||
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
|
||||
@ -2379,7 +2380,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-12-10T21:04:50+00:00"
|
||||
"time": "2024-12-18T20:05:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
@ -2450,16 +2451,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/array-to-xml",
|
||||
"version": "3.3.0",
|
||||
"version": "3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/array-to-xml.git",
|
||||
"reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876"
|
||||
"reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876",
|
||||
"reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876",
|
||||
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
|
||||
"reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2502,7 +2503,7 @@
|
||||
"xml"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/spatie/array-to-xml/tree/3.3.0"
|
||||
"source": "https://github.com/spatie/array-to-xml/tree/3.4.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2514,7 +2515,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-01T10:20:27+00:00"
|
||||
"time": "2024-12-16T12:45:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
|
847
package-lock.json
generated
847
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
<NcAppNavigationList class="list">
|
||||
<NcAppNavigationNewItem
|
||||
:name="t('repod', 'Add a RSS link')"
|
||||
@new-item="(url) => $router.push(toFeedUrl(url))">
|
||||
@new-item="(url: string) => $router.push(toFeedUrl(url))">
|
||||
<template #icon>
|
||||
<PlusIcon :size="20" />
|
||||
</template>
|
||||
|
@ -110,7 +110,8 @@ export default {
|
||||
)
|
||||
if (currentSearch === this.value) {
|
||||
this.feeds = [...feeds.data].sort(
|
||||
(a, b) => b.fetchedAtUnix - a.fetchedAtUnix,
|
||||
(a: PodcastDataInterface, b: PodcastDataInterface) =>
|
||||
b.fetchedAtUnix - a.fetchedAtUnix,
|
||||
)
|
||||
}
|
||||
} catch (e) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<Loading v-if="loading" />
|
||||
<ul v-if="!loading">
|
||||
<NcListItem
|
||||
v-if="!episodes.every((e) => !e.selected)"
|
||||
v-if="!episodes.every((e: EpisodeInterface) => !e.selected)"
|
||||
:active="true"
|
||||
:force-display-actions="true"
|
||||
:name="
|
||||
@ -11,7 +11,7 @@
|
||||
'repod',
|
||||
'%n episode selected',
|
||||
'%n episodes selected',
|
||||
episodes.filter((e) => e.selected).length,
|
||||
episodes.filter((e: EpisodeInterface) => e.selected).length,
|
||||
)
|
||||
"
|
||||
:one-line="true">
|
||||
@ -19,14 +19,14 @@
|
||||
<NcActionButton
|
||||
v-if="
|
||||
episodes
|
||||
.filter((e) => e.selected)
|
||||
.filter((e) => !hasEnded(e)).length
|
||||
.filter((e: EpisodeInterface) => e.selected)
|
||||
.filter((e: EpisodeInterface) => !hasEnded(e)).length
|
||||
"
|
||||
:aria-label="t('repod', 'Read all')"
|
||||
:disabled="
|
||||
!episodes
|
||||
.filter((e) => e.selected)
|
||||
.every((e) => e.duration)
|
||||
.filter((e: EpisodeInterface) => e.selected)
|
||||
.every((e: EpisodeInterface) => e.duration)
|
||||
"
|
||||
:name="t('repod', 'Read all')"
|
||||
:title="t('repod', 'Read all')"
|
||||
@ -38,14 +38,14 @@
|
||||
<NcActionButton
|
||||
v-if="
|
||||
episodes
|
||||
.filter((e) => e.selected)
|
||||
.every((e) => hasEnded(e))
|
||||
.filter((e: EpisodeInterface) => e.selected)
|
||||
.every((e: EpisodeInterface) => hasEnded(e))
|
||||
"
|
||||
:aria-label="t('repod', 'Unread all')"
|
||||
:disabled="
|
||||
!episodes
|
||||
.filter((e) => e.selected)
|
||||
.every((e) => e.duration)
|
||||
.filter((e: EpisodeInterface) => e.selected)
|
||||
.every((e: EpisodeInterface) => e.duration)
|
||||
"
|
||||
:name="t('repod', 'Unread all')"
|
||||
:title="t('repod', 'Unread all')"
|
||||
@ -58,8 +58,8 @@
|
||||
<template #icon>
|
||||
<NcAvatar
|
||||
v-if="
|
||||
episodes.filter((e) => e.selected).length <
|
||||
episodes.length
|
||||
episodes.filter((e: EpisodeInterface) => e.selected)
|
||||
.length < episodes.length
|
||||
"
|
||||
:display-name="t('repod', 'Select all')"
|
||||
:is-no-user="true">
|
||||
@ -72,8 +72,8 @@
|
||||
</NcAvatar>
|
||||
<NcAvatar
|
||||
v-if="
|
||||
episodes.filter((e) => e.selected).length >=
|
||||
episodes.length
|
||||
episodes.filter((e: EpisodeInterface) => e.selected)
|
||||
.length >= episodes.length
|
||||
"
|
||||
:display-name="t('repod', 'Unselect all')"
|
||||
:is-no-user="true">
|
||||
@ -89,7 +89,9 @@
|
||||
<Episode
|
||||
v-for="episode in filteredEpisodes"
|
||||
:key="episode.guid"
|
||||
:display-actions="episodes.every((e) => !e.selected)"
|
||||
:display-actions="
|
||||
episodes.every((e: EpisodeInterface) => !e.selected)
|
||||
"
|
||||
:episode="episode"
|
||||
:url="url"
|
||||
@select="episode.selected = !episode.selected" />
|
||||
@ -137,7 +139,7 @@ export default {
|
||||
...mapState(usePlayer, ['episode']),
|
||||
...mapState(useSettings, ['filters']),
|
||||
filteredEpisodes() {
|
||||
return this.episodes.filter((episode) => {
|
||||
return this.episodes.filter((episode: EpisodeInterface) => {
|
||||
if (!this.filters.listened && this.hasEnded(episode)) {
|
||||
return false
|
||||
}
|
||||
@ -157,7 +159,7 @@ export default {
|
||||
watch: {
|
||||
episode() {
|
||||
if (this.episode) {
|
||||
this.episodes = this.episodes.map((episode) =>
|
||||
this.episodes = this.episodes.map((episode: EpisodeInterface) =>
|
||||
episode.url === this.episode?.url ? this.episode : episode,
|
||||
)
|
||||
}
|
||||
@ -172,7 +174,7 @@ export default {
|
||||
}),
|
||||
)
|
||||
this.episodes = [...episodes.data].sort(
|
||||
(a, b) =>
|
||||
(a: EpisodeInterface, b: EpisodeInterface) =>
|
||||
new Date(b.pubDate?.date || '').getTime() -
|
||||
new Date(a.pubDate?.date || '').getTime(),
|
||||
)
|
||||
@ -190,14 +192,14 @@ export default {
|
||||
t,
|
||||
async read(read: boolean) {
|
||||
try {
|
||||
this.episodes = this.episodes.map((episode) =>
|
||||
this.episodes = this.episodes.map((episode: EpisodeInterface) =>
|
||||
episode.selected ? markAs(episode, read, this.url) : episode,
|
||||
)
|
||||
await axios.post(
|
||||
generateUrl('/apps/gpoddersync/episode_action/create'),
|
||||
this.episodes
|
||||
.filter((episode) => episode.selected)
|
||||
.map((episode) => episode.action),
|
||||
.filter((episode: EpisodeInterface) => episode.selected)
|
||||
.map((episode: EpisodeInterface) => episode.action),
|
||||
)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
@ -205,7 +207,7 @@ export default {
|
||||
}
|
||||
},
|
||||
select(all: boolean) {
|
||||
this.episodes = this.episodes.map((episode) => {
|
||||
this.episodes = this.episodes.map((episode: EpisodeInterface) => {
|
||||
episode.selected = all
|
||||
return episode
|
||||
})
|
||||
|
@ -63,11 +63,11 @@ export default {
|
||||
)
|
||||
this.episodes = [...episodes.data]
|
||||
.sort(
|
||||
(a, b) =>
|
||||
(a: EpisodeInterface, b: EpisodeInterface) =>
|
||||
new Date(b.pubDate?.date || '').getTime() -
|
||||
new Date(a.pubDate?.date || '').getTime(),
|
||||
)
|
||||
.filter((episode) => !this.hasEnded(episode))
|
||||
.filter((episode: EpisodeInterface) => !this.hasEnded(episode))
|
||||
.slice(0, 4)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
|
@ -39,10 +39,13 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { NcActionButton, NcAppNavigationItem, NcAvatar } from '@nextcloud/vue'
|
||||
import type {
|
||||
PersonalSettingsPodcastDataInterface,
|
||||
SubscriptionInterface,
|
||||
} from '../../utils/types.ts'
|
||||
import { mapActions, mapState } from 'pinia'
|
||||
import AlertIcon from 'vue-material-design-icons/Alert.vue'
|
||||
import DeleteIcon from 'vue-material-design-icons/Delete.vue'
|
||||
import type { PersonalSettingsPodcastDataInterface } from '../../utils/types.ts'
|
||||
import StarIcon from 'vue-material-design-icons/Star.vue'
|
||||
import StarPlusIcon from 'vue-material-design-icons/StarPlus.vue'
|
||||
import StarRemoveIcon from 'vue-material-design-icons/StarRemove.vue'
|
||||
@ -128,7 +131,10 @@ export default {
|
||||
},
|
||||
switchFavorite(value: boolean) {
|
||||
if (value) {
|
||||
if (this.subs.filter((sub) => sub.isFavorite).length >= 10) {
|
||||
if (
|
||||
this.subs.filter((sub: SubscriptionInterface) => sub.isFavorite)
|
||||
.length >= 10
|
||||
) {
|
||||
showError(t('repod', 'You can only have 10 favorites'))
|
||||
return
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import type {
|
||||
PersonalSettingsMetricsInterface,
|
||||
PodcastDataInterface,
|
||||
PodcastMetricsInterface,
|
||||
SubscriptionInterface,
|
||||
} from '../utils/types.ts'
|
||||
import { getCookie, setCookie } from '../utils/cookies.ts'
|
||||
@ -14,7 +15,7 @@ export const useSubscriptions = defineStore('subscriptions', {
|
||||
}),
|
||||
getters: {
|
||||
getSubByUrl: (state) => (url: string) =>
|
||||
state.subs.find((sub) => sub.metrics.url === url),
|
||||
state.subs.find((sub: SubscriptionInterface) => sub.metrics.url === url),
|
||||
},
|
||||
actions: {
|
||||
async fetch() {
|
||||
@ -28,20 +29,23 @@ export const useSubscriptions = defineStore('subscriptions', {
|
||||
)
|
||||
|
||||
this.subs = [...metrics.data.subscriptions]
|
||||
.sort((a, b) => b.listenedSeconds - a.listenedSeconds)
|
||||
.map((sub) => ({
|
||||
.sort(
|
||||
(a: PodcastMetricsInterface, b: PodcastMetricsInterface) =>
|
||||
b.listenedSeconds - a.listenedSeconds,
|
||||
)
|
||||
.map((sub: PodcastMetricsInterface) => ({
|
||||
metrics: sub,
|
||||
isFavorite: favorites.includes(sub.url),
|
||||
data: this.getSubByUrl(sub.url)?.data,
|
||||
}))
|
||||
},
|
||||
addMetadatas(link: string, data: PodcastDataInterface) {
|
||||
this.subs = this.subs.map((sub) =>
|
||||
this.subs = this.subs.map((sub: SubscriptionInterface) =>
|
||||
sub.metrics.url === link ? { ...sub, data } : sub,
|
||||
)
|
||||
},
|
||||
setFavorite(link: string, isFavorite: boolean) {
|
||||
this.subs = this.subs.map((sub) =>
|
||||
this.subs = this.subs.map((sub: SubscriptionInterface) =>
|
||||
sub.metrics.url === link ? { ...sub, isFavorite } : sub,
|
||||
)
|
||||
|
||||
@ -49,8 +53,8 @@ export const useSubscriptions = defineStore('subscriptions', {
|
||||
'repod.favorites',
|
||||
JSON.stringify(
|
||||
this.subs
|
||||
.filter((sub) => sub.isFavorite)
|
||||
.map((sub) => sub.metrics.url),
|
||||
.filter((sub: SubscriptionInterface) => sub.isFavorite)
|
||||
.map((sub: SubscriptionInterface) => sub.metrics.url),
|
||||
),
|
||||
365,
|
||||
)
|
||||
|
@ -6,7 +6,9 @@
|
||||
*/
|
||||
export const getCookie = (name: string): string | null => {
|
||||
const cookies = document.cookie.split('; ')
|
||||
const value = cookies.find((c) => c.startsWith(name + '='))?.split('=')[1]
|
||||
const value = cookies
|
||||
.find((c: string) => c.startsWith(name + '='))
|
||||
?.split('=')[1]
|
||||
if (value === undefined) {
|
||||
return null
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import AppContent from '../components/Atoms/AppContent.vue'
|
||||
import EmptyContent from '../components/Atoms/EmptyContent.vue'
|
||||
import Favorite from '../components/Feed/Favorite.vue'
|
||||
import StarOffIcon from 'vue-material-design-icons/StarOff.vue'
|
||||
import type { SubscriptionInterface } from '../utils/types.ts'
|
||||
import { mapState } from 'pinia'
|
||||
import { t } from '@nextcloud/l10n'
|
||||
import { useSubscriptions } from '../store/subscriptions.ts'
|
||||
@ -39,7 +40,7 @@ export default {
|
||||
computed: {
|
||||
...mapState(useSubscriptions, ['subs']),
|
||||
favorites() {
|
||||
return this.subs.filter((sub) => sub.isFavorite)
|
||||
return this.subs.filter((sub: SubscriptionInterface) => sub.isFavorite)
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
@ -3,13 +3,14 @@
|
||||
# This file is distributed under the same license as the Nextcloud package.
|
||||
# OiledAmoeba <florian+crystalyx@ruhnke.cloud>, 2024.
|
||||
# Michel Roux <xefir@crystalyx.net>, 2024.
|
||||
# markus phi <repodtranslate@solinetcafe.org>, 2024.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Nextcloud 3.14159\n"
|
||||
"Report-Msgid-Bugs-To: translations\\@example.com\n"
|
||||
"POT-Creation-Date: 2024-12-11 20:03+0000\n"
|
||||
"PO-Revision-Date: 2024-12-11 20:06+0000\n"
|
||||
"Last-Translator: Michel Roux <xefir@crystalyx.net>\n"
|
||||
"PO-Revision-Date: 2024-12-12 23:02+0000\n"
|
||||
"Last-Translator: markus phi <repodtranslate@solinetcafe.org>\n"
|
||||
"Language-Team: German <https://translate.crystalyx.net/projects/repod/gitea/"
|
||||
"de/>\n"
|
||||
"Language: de\n"
|
||||
@ -38,7 +39,6 @@ msgid "🔊 Browse, manage and listen to podcasts"
|
||||
msgstr "🔊 Suchen, Verwalten und Anhören von Podcasts"
|
||||
|
||||
#: /app/specialAppInfoFakeDummyForL10nScript.php:5
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"## Features\n"
|
||||
"- 🔍 Browse and subscribe huge collection of podcasts\n"
|
||||
@ -58,9 +58,9 @@ msgstr ""
|
||||
"## Funktionen\n"
|
||||
"- 🔍 Durchsuchen und abonnieren einer großen Sammlung von Podcasts\n"
|
||||
"- 🔊 Episoden direkt in Nextcloud anhören\n"
|
||||
"- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod."
|
||||
"org/)\n"
|
||||
"- 📱 Mobile-freundliche Schnittstelle\n"
|
||||
"- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod.org/)"
|
||||
"\n"
|
||||
"- 📱 Handy-freundliche Schnittstelle\n"
|
||||
"- 📡 Importieren und Exportieren Ihrer Abonnements\n"
|
||||
"- ➡️ Vollständiger Funktionsvergleich [hier](https://git.crystalyx.net/Xefir/"
|
||||
"repod#comparaison-with-similar-apps-for-nextcloud)\n"
|
||||
@ -76,9 +76,8 @@ msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: /app/specialVueFakeDummyForL10nScript.js:2
|
||||
#, fuzzy
|
||||
msgid "Skip to {match}"
|
||||
msgstr "Springen zu {match}"
|
||||
msgstr "Springe zu {match}"
|
||||
|
||||
#: /app/specialVueFakeDummyForL10nScript.js:3
|
||||
msgid "Add a RSS link"
|
||||
@ -117,9 +116,8 @@ msgid "Copy feed"
|
||||
msgstr "Feed kopieren"
|
||||
|
||||
#: /app/specialVueFakeDummyForL10nScript.js:15
|
||||
#, fuzzy
|
||||
msgid "Link copied to the clipboard"
|
||||
msgstr "Der Link des Feeds wurde in die Zwischenablage kopiert"
|
||||
msgstr "Link in die Zwischenablage kopiert"
|
||||
|
||||
#: /app/specialVueFakeDummyForL10nScript.js:16
|
||||
#: /app/specialVueFakeDummyForL10nScript.js:17
|
||||
|
Loading…
Reference in New Issue
Block a user