From 69d1ce44a4232a32a4adc7f368baeac1a6b78600 Mon Sep 17 00:00:00 2001 From: Michel Roux Date: Tue, 10 Dec 2024 14:05:52 +0100 Subject: [PATCH 1/4] feat: :sparkles: add multiselect --- src/components/Feed/Episode.vue | 20 ++++++++++++++++++-- src/components/Feed/Episodes.vue | 13 ++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/components/Feed/Episode.vue b/src/components/Feed/Episode.vue index d6ef43e..65d71b1 100644 --- a/src/components/Feed/Episode.vue +++ b/src/components/Feed/Episode.vue @@ -33,7 +33,7 @@ @@ -34,6 +37,7 @@ export default { data: () => ({ episodes: [] as EpisodeInterface[], loading: true, + selected: [] as EpisodeInterface[], }), computed: { ...mapState(usePlayer, ['episode']), @@ -88,6 +92,13 @@ export default { methods: { hasEnded, isListening, + select(episode: EpisodeInterface) { + if (this.selected.includes(episode)) { + this.selected = this.selected.filter((e) => e !== episode) + } else { + this.selected.push(episode) + } + }, }, } From 4163f10c81afbe67496792082fb93eedcc544b6b Mon Sep 17 00:00:00 2001 From: Michel Roux Date: Wed, 11 Dec 2024 11:41:44 +0100 Subject: [PATCH 2/4] feat: :sparkles: multiselect finished --- src/components/Feed/Episode.vue | 6 +- src/components/Feed/Episodes.vue | 144 +++++++++++++++++++++++++-- src/utils/types.ts | 1 + translationfiles/templates/repod.pot | 125 +++++++++++++---------- 4 files changed, 210 insertions(+), 66 deletions(-) diff --git a/src/components/Feed/Episode.vue b/src/components/Feed/Episode.vue index 65d71b1..502dbab 100644 --- a/src/components/Feed/Episode.vue +++ b/src/components/Feed/Episode.vue @@ -80,7 +80,7 @@ :url="episode.image" @click.stop="$emit('select', episode)"> @@ -161,10 +161,6 @@ export default { type: Boolean, default: false, }, - selected: { - type: Boolean, - default: false, - }, url: { type: String, required: true, diff --git a/src/components/Feed/Episodes.vue b/src/components/Feed/Episodes.vue index 2ce29c1..ea27a37 100644 --- a/src/components/Feed/Episodes.vue +++ b/src/components/Feed/Episodes.vue @@ -2,29 +2,112 @@
    + + + + + @select="episode.selected = !episode.selected" />
+ + diff --git a/src/utils/types.ts b/src/utils/types.ts index 41cf0d3..b16dd49 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -28,6 +28,7 @@ export interface EpisodeInterface { } duration?: string action?: EpisodeActionInterface + selected?: boolean } export interface FiltersInterface { diff --git a/translationfiles/templates/repod.pot b/translationfiles/templates/repod.pot index f6775ea..e616293 100644 --- a/translationfiles/templates/repod.pot +++ b/translationfiles/templates/repod.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Nextcloud 3.14159\n" "Report-Msgid-Bugs-To: translations\\@example.com\n" -"POT-Creation-Date: 2024-11-12 20:57+0000\n" +"POT-Creation-Date: 2024-12-11 10:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -106,7 +106,7 @@ msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:16 #: /app/specialVueFakeDummyForL10nScript.js:17 -#: /app/specialVueFakeDummyForL10nScript.js:32 +#: /app/specialVueFakeDummyForL10nScript.js:41 msgid "Play" msgstr "" @@ -127,143 +127,166 @@ msgid "Open website" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:27 +#: /app/specialVueFakeDummyForL10nScript.js:36 msgid "Could not change the status of the episode" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:28 #: /app/specialVueFakeDummyForL10nScript.js:29 -msgid "Could not fetch episodes" -msgstr "" - #: /app/specialVueFakeDummyForL10nScript.js:30 -msgid "Rewind 10 seconds" +msgid "Read all" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:31 -msgid "Pause" -msgstr "" - +#: /app/specialVueFakeDummyForL10nScript.js:32 #: /app/specialVueFakeDummyForL10nScript.js:33 -msgid "Fast forward 30 seconds" +msgid "Unread all" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:34 +msgid "Select all" +msgstr "" + #: /app/specialVueFakeDummyForL10nScript.js:35 -#: /app/specialVueFakeDummyForL10nScript.js:36 -msgid "Mute" +#: /app/specialVueFakeDummyForL10nScript.js:38 +msgid "Could not fetch episodes" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:37 -msgid "Unmute" -msgstr "" - -#: /app/specialVueFakeDummyForL10nScript.js:38 -msgid "Export subscriptions" -msgstr "" +msgid "%n episode selected" +msgid_plural "%n episodes selected" +msgstr[0] "" +msgstr[1] "" #: /app/specialVueFakeDummyForL10nScript.js:39 -msgid "Filtering episodes" +msgid "Rewind 10 seconds" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:40 -msgid "Show all" -msgstr "" - -#: /app/specialVueFakeDummyForL10nScript.js:41 -msgid "Listened" +msgid "Pause" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:42 -msgid "Listening" +msgid "Fast forward 30 seconds" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:43 -msgid "Unlistened" -msgstr "" - #: /app/specialVueFakeDummyForL10nScript.js:44 -msgid "Import subscriptions" -msgstr "" - #: /app/specialVueFakeDummyForL10nScript.js:45 -msgid "Import OPML file" +msgid "Mute" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:46 -msgid "Rate RePod ❤️" +msgid "Unmute" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:47 -msgid "Sleep timer" +msgid "Export subscriptions" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:48 -msgid "Minutes" +msgid "Filtering episodes" msgstr "" #: /app/specialVueFakeDummyForL10nScript.js:49 +msgid "Show all" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:50 +msgid "Listened" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:51 +msgid "Listening" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:52 +msgid "Unlistened" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:53 +msgid "Import subscriptions" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:54 +msgid "Import OPML file" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:55 +msgid "Rate RePod ❤️" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:56 +msgid "Sleep timer" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:57 +msgid "Minutes" +msgstr "" + +#: /app/specialVueFakeDummyForL10nScript.js:58 msgid "%n min" msgid_plural "%n mins" msgstr[0] "" msgstr[1] "" -#: /app/specialVueFakeDummyForL10nScript.js:50 +#: /app/specialVueFakeDummyForL10nScript.js:59 msgid "%n sec" msgid_plural "%n secs" msgstr[0] "" msgstr[1] "" -#: /app/specialVueFakeDummyForL10nScript.js:51 +#: /app/specialVueFakeDummyForL10nScript.js:60 msgid "Playback speed" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:52 -#: /app/specialVueFakeDummyForL10nScript.js:53 -#: /app/specialVueFakeDummyForL10nScript.js:54 +#: /app/specialVueFakeDummyForL10nScript.js:61 +#: /app/specialVueFakeDummyForL10nScript.js:62 +#: /app/specialVueFakeDummyForL10nScript.js:63 msgid "Favorite" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:55 +#: /app/specialVueFakeDummyForL10nScript.js:64 msgid "Are you sure you want to delete this subscription?" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:56 +#: /app/specialVueFakeDummyForL10nScript.js:65 msgid "Error while removing the feed" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:57 +#: /app/specialVueFakeDummyForL10nScript.js:66 msgid "You can only have 10 favorites" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:58 +#: /app/specialVueFakeDummyForL10nScript.js:67 msgid "Add a podcast" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:59 +#: /app/specialVueFakeDummyForL10nScript.js:68 msgid "Could not fetch subscriptions" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:60 +#: /app/specialVueFakeDummyForL10nScript.js:69 msgid "Find a podcast" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:61 +#: /app/specialVueFakeDummyForL10nScript.js:70 msgid "Error loading feed" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:62 +#: /app/specialVueFakeDummyForL10nScript.js:71 msgid "Missing required app" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:63 +#: /app/specialVueFakeDummyForL10nScript.js:72 msgid "Install GPodder Sync" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:64 +#: /app/specialVueFakeDummyForL10nScript.js:73 msgid "Pin some subscriptions to see their latest updates" msgstr "" -#: /app/specialVueFakeDummyForL10nScript.js:65 +#: /app/specialVueFakeDummyForL10nScript.js:74 msgid "No favorites" msgstr "" From fe48683c529f9ad601c3b2a1e487e2c28ef74257 Mon Sep 17 00:00:00 2001 From: Michel Roux Date: Wed, 11 Dec 2024 13:51:53 +0100 Subject: [PATCH 3/4] refactor: :recycle: move puting action to episode on separate ts file --- src/components/Feed/Episode.vue | 23 +++++------------------ src/components/Feed/Episodes.vue | 29 +++++++---------------------- src/utils/status.ts | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/components/Feed/Episode.vue b/src/components/Feed/Episode.vue index 502dbab..7d5d13b 100644 --- a/src/components/Feed/Episode.vue +++ b/src/components/Feed/Episode.vue @@ -41,7 +41,7 @@ :model-value="hasEnded(episode)" :name="t('repod', 'Read')" :title="t('repod', 'Read')" - @click="markAs(episode, !hasEnded(episode))"> + @click="read(episode, !hasEnded(episode))">