diff --git a/src/App.vue b/src/App.vue
index cad45f6..324da03 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,7 +3,7 @@
-
+
diff --git a/src/components/Player/Bar.vue b/src/components/Player/Bar.vue
index 7b2b7e3..7d5f027 100644
--- a/src/components/Player/Bar.vue
+++ b/src/components/Player/Bar.vue
@@ -5,8 +5,9 @@
preload
:src="episode.episodeUrl"
@durationchange="duration = audio.duration"
+ @ended="stop"
@loadeddata="loadeddata"
- @pause="paused = true"
+ @pause="pause"
@play="paused = false"
@seeked="currentTime = audio.currentTime"
@timeupdate="currentTime = audio.currentTime"
@@ -18,7 +19,7 @@
-
+
@@ -34,6 +35,10 @@ import { NcLoadingIcon } from '@nextcloud/vue'
import ProgressBar from './ProgressBar.vue'
import Timer from './Timer.vue'
import Volume from './Volume.vue'
+import axios from '@nextcloud/axios'
+import { formatEpisodeTimestamp } from '../../utils/time.js'
+import { generateUrl } from '@nextcloud/router'
+import { showError } from '@nextcloud/dialogs'
export default {
name: 'Bar',
@@ -51,6 +56,7 @@ export default {
duration: 0,
loading: true,
paused: false,
+ url: atob(this.$route.params.url),
volume: 1,
}
},
@@ -70,6 +76,31 @@ export default {
this.audio.currentTime = this.episode.episodeAction.position
}
},
+ pause() {
+ this.paused = true
+ this.track()
+ },
+ stop() {
+ this.pause()
+ this.$store.commit('player/play', null)
+ },
+ async track() {
+ try {
+ await axios.post(generateUrl('/apps/gpoddersync/episode_action/create'), [{
+ podcast: this.url,
+ episode: this.episode.episodeUrl,
+ guid: this.episode.episodeGuid,
+ action: 'play',
+ timestamp: formatEpisodeTimestamp(new Date()),
+ started: Math.round(this.episode.episodeAction ? this.episode.episodeAction.started : 0),
+ position: Math.round(this.audio.currentTime),
+ total: Math.round(this.audio.duration),
+ }])
+ } catch (e) {
+ console.error(e)
+ showError(t('Error while saving position on API'))
+ }
+ },
},
}
diff --git a/src/components/Player/Controls.vue b/src/components/Player/Controls.vue
index c2573ba..dd9fce4 100644
--- a/src/components/Player/Controls.vue
+++ b/src/components/Player/Controls.vue
@@ -3,14 +3,14 @@
+ @click="() => audio.pause()" />
audio.play()" />
+ @click="$emit('stop')" />
@@ -18,10 +18,6 @@
import PauseButton from 'vue-material-design-icons/Pause.vue'
import PlayButton from 'vue-material-design-icons/Play.vue'
import StopButton from 'vue-material-design-icons/Stop.vue'
-import axios from '@nextcloud/axios'
-import { formatEpisodeTimestamp } from '../../utils/time.js'
-import { generateUrl } from '@nextcloud/router'
-import { showError } from '@nextcloud/dialogs'
export default {
name: 'Controls',
@@ -36,45 +32,10 @@ export default {
required: true,
},
},
- data() {
- return {
- podcastUrl: atob(this.$route.params.url),
- }
- },
computed: {
audio() {
return document.getElementById('audio-player')
},
- episode() {
- return this.$store.state.player.episode
- },
- },
- methods: {
- pause() {
- this.audio.pause()
- this.track()
- },
- stop() {
- this.pause()
- this.$store.commit('player/play', null)
- },
- async track() {
- try {
- await axios.post(generateUrl('/apps/gpoddersync/episode_action/create'), [{
- podcast: this.podcastUrl,
- episode: this.episode.episodeUrl,
- guid: this.episode.episodeGuid,
- action: 'play',
- timestamp: formatEpisodeTimestamp(new Date()),
- started: Math.round(this.episode.episodeAction ? this.episode.episodeAction.started : 0),
- position: Math.round(this.audio.currentTime),
- total: Math.round(this.audio.duration),
- }])
- } catch (e) {
- console.error(e)
- showError(t('Error while saving position on API'))
- }
- },
},
}