@saooti/octopus-sdk 31.0.0 → 31.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/package.json +4 -3
- package/src/assets/share.scss +19 -0
- package/src/components/display/categories/CategoryChooser.vue +2 -14
- package/src/components/display/comments/AddCommentModal.vue +2 -5
- package/src/components/display/comments/CommentBasicView.vue +1 -1
- package/src/components/display/emission/EmissionChooser.vue +0 -9
- package/src/components/display/emission/EmissionInlineList.vue +4 -24
- package/src/components/display/organisation/OrganisationChooser.vue +0 -9
- package/src/components/display/podcasts/PodcastInlineList.vue +12 -2
- package/src/components/display/podcasts/PodcastPlayBar.vue +3 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +2 -6
- package/src/components/display/sharing/SubscribeButtons.vue +15 -0
- package/src/components/misc/Player.vue +44 -40
- package/src/components/misc/PlayerButtons.vue +4 -0
- package/src/components/pages/Emission.vue +1 -0
- package/src/components/pages/Podcast.vue +1 -0
- package/src/main.ts +17 -0
- package/src/store/paramStore.ts +14 -10
package/README.md
CHANGED
|
@@ -543,5 +543,14 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
|
|
|
543
543
|
* 30.0.44 ProgressBar pour le soir
|
|
544
544
|
* 30.0.45 ProgressBar pour le soir
|
|
545
545
|
* 30.0.46 Param pour le soir
|
|
546
|
-
|
|
546
|
+
* 30.0.47 Live error
|
|
547
|
+
* 30.0.48 Podcastmaker ScrollOverflow PodcastInlineList
|
|
548
|
+
* 30.0.49 Podcastmaker ProgressBar
|
|
549
|
+
* 30.0.50 Commentaires live
|
|
550
|
+
* 30.0.51 Commentaires live
|
|
551
|
+
* 30.0.52 Ajout rubriqueIdFilter
|
|
552
|
+
* 30.0.53 Commentaires live
|
|
553
|
+
* 30.0.54 Multiselect not reload on close
|
|
554
|
+
|
|
547
555
|
* 31.0.0 Passage en 31
|
|
556
|
+
* 31.0.1 Ajout pocket casts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saooti/octopus-sdk",
|
|
3
|
-
"version": "31.0.
|
|
3
|
+
"version": "31.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Javascript SDK for using octopus",
|
|
6
6
|
"author": "Saooti",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"main": "./dist/octopus.common.js",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@popperjs/core": "^2.11.0",
|
|
18
|
-
"@saooti/octopus-api": "^0.30.
|
|
18
|
+
"@saooti/octopus-api": "^0.30.4",
|
|
19
19
|
"@vue/cli": "^5.0.0-rc.1",
|
|
20
20
|
"@vue/compat": "^3.2.26",
|
|
21
21
|
"axios": "^0.24.0",
|
|
@@ -79,7 +79,8 @@
|
|
|
79
79
|
"no-console": "off",
|
|
80
80
|
"no-debugger": "off",
|
|
81
81
|
"@typescript-eslint/ban-ts-ignore": "off",
|
|
82
|
-
"@typescript-eslint/ban-ts-comment": "off"
|
|
82
|
+
"@typescript-eslint/ban-ts-comment": "off",
|
|
83
|
+
"no-async-promise-executor":"off"
|
|
83
84
|
},
|
|
84
85
|
"parserOptions": {
|
|
85
86
|
"parser": "@typescript-eslint/parser"
|
package/src/assets/share.scss
CHANGED
|
@@ -66,6 +66,25 @@
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
+
.element-list-inline.overflowScroll {
|
|
70
|
+
display: flex;
|
|
71
|
+
flex-wrap: wrap;
|
|
72
|
+
-webkit-overflow-scrolling: touch;
|
|
73
|
+
scroll-behavior: smooth;
|
|
74
|
+
padding-bottom: 1rem;
|
|
75
|
+
width: 100%;
|
|
76
|
+
height: 80vh;
|
|
77
|
+
overflow-y: auto;
|
|
78
|
+
grid-gap: inherit;
|
|
79
|
+
@media (max-width: 960px) {
|
|
80
|
+
overflow-x: hidden;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
flex-wrap: nowrap;
|
|
83
|
+
}
|
|
84
|
+
.item-phone-margin {
|
|
85
|
+
margin: 1rem 0.5rem !important;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
69
88
|
|
|
70
89
|
.emission-list {
|
|
71
90
|
align-self: stretch;
|
|
@@ -28,9 +28,8 @@
|
|
|
28
28
|
:show-no-results="true"
|
|
29
29
|
:hide-selected="true"
|
|
30
30
|
:show-labels="false"
|
|
31
|
-
@open="
|
|
31
|
+
@open="onOpen"
|
|
32
32
|
@search-change="onSearchCategory"
|
|
33
|
-
@close="onClose"
|
|
34
33
|
@select="onCategorySelected"
|
|
35
34
|
>
|
|
36
35
|
<template #singleLabel="{ option }">
|
|
@@ -169,14 +168,11 @@ export default defineComponent({
|
|
|
169
168
|
}
|
|
170
169
|
},
|
|
171
170
|
methods: {
|
|
172
|
-
|
|
171
|
+
onOpen(): void {
|
|
173
172
|
(this.$refs.multiselectRef as VueMultiselect).$refs.search.setAttribute(
|
|
174
173
|
'autocomplete',
|
|
175
174
|
'off'
|
|
176
175
|
);
|
|
177
|
-
if (undefined === this.categoryArray) {
|
|
178
|
-
this.category = undefined;
|
|
179
|
-
}
|
|
180
176
|
if (
|
|
181
177
|
undefined !== this.categorySelected ||
|
|
182
178
|
undefined !== this.categoryArray ||
|
|
@@ -199,14 +195,6 @@ export default defineComponent({
|
|
|
199
195
|
this.categories = this.totalCategories;
|
|
200
196
|
}
|
|
201
197
|
},
|
|
202
|
-
onClose(): void {
|
|
203
|
-
if (!this.category && undefined === this.categoryArray) {
|
|
204
|
-
this.category = getDefaultCategory(this.defaultanswer);
|
|
205
|
-
if(this.category){
|
|
206
|
-
this.onCategorySelected(this.category);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
198
|
onSearchCategory(query: string): void {
|
|
211
199
|
this.isLoading = true;
|
|
212
200
|
const categoryDefault = getDefaultCategory(this.defaultanswer);
|
|
@@ -66,7 +66,6 @@
|
|
|
66
66
|
</template>
|
|
67
67
|
|
|
68
68
|
<script lang="ts">
|
|
69
|
-
import { IReCaptchaComposition, useReCaptcha } from 'vue-recaptcha-v3';
|
|
70
69
|
import Constants from '../../../../public/config';
|
|
71
70
|
import { state } from '../../../store/paramStore';
|
|
72
71
|
import api from '@/api/initialize';
|
|
@@ -130,11 +129,9 @@ export default defineComponent({
|
|
|
130
129
|
this.sendComment();
|
|
131
130
|
return;
|
|
132
131
|
}
|
|
133
|
-
const iRecaptcha: IReCaptchaComposition|undefined = useReCaptcha();
|
|
134
|
-
if(!iRecaptcha){return;}
|
|
135
|
-
await iRecaptcha.recaptchaLoaded();
|
|
136
|
-
const token = await iRecaptcha.executeRecaptcha('login');
|
|
137
132
|
try {
|
|
133
|
+
await this.$recaptchaLoaded()
|
|
134
|
+
const token = await this.$recaptcha('login');
|
|
138
135
|
this.sendError = false;
|
|
139
136
|
const ok = await api.checkToken(token);
|
|
140
137
|
if (!ok) {
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
:show-labels="false"
|
|
30
30
|
@search-change="onSearchEmission"
|
|
31
31
|
@open="onOpen"
|
|
32
|
-
@close="onClose"
|
|
33
32
|
@select="onEmissionSelected"
|
|
34
33
|
>
|
|
35
34
|
<template #clear="{ props }">
|
|
@@ -152,16 +151,8 @@ export default defineComponent({
|
|
|
152
151
|
'autocomplete',
|
|
153
152
|
'off'
|
|
154
153
|
);
|
|
155
|
-
this.clearAll();
|
|
156
154
|
this.onSearchEmission();
|
|
157
155
|
},
|
|
158
|
-
onClose(): void {
|
|
159
|
-
if (this.emission) return;
|
|
160
|
-
this.emission = this.defaultanswer
|
|
161
|
-
? getDefaultEmission(this.defaultanswer)
|
|
162
|
-
: undefined;
|
|
163
|
-
this.$emit('selected', this.emission);
|
|
164
|
-
},
|
|
165
156
|
onEmissionSelected(emission: Emission): void {
|
|
166
157
|
this.$emit('selected', emission);
|
|
167
158
|
},
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
/>
|
|
56
56
|
</transition-group>
|
|
57
57
|
<router-link
|
|
58
|
-
v-if="!overflowScroll"
|
|
59
58
|
:to="href"
|
|
60
59
|
class="btn btn-link align-self-center width-fit-content m-4"
|
|
61
60
|
>
|
|
@@ -203,14 +202,14 @@ export default defineComponent({
|
|
|
203
202
|
},
|
|
204
203
|
handleResize(): void {
|
|
205
204
|
if (!this.$el) return;
|
|
206
|
-
if (window.innerWidth <= PHONE_WIDTH) {
|
|
207
|
-
this.size = 10;
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
205
|
if (this.overflowScroll) {
|
|
211
206
|
this.size = 20;
|
|
212
207
|
return;
|
|
213
208
|
}
|
|
209
|
+
if (window.innerWidth <= PHONE_WIDTH) {
|
|
210
|
+
this.size = 10;
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
214
213
|
const width = (this.$el as HTMLElement).offsetWidth;
|
|
215
214
|
const sixteen = domHelper.convertRemToPixels(this.itemSize + 0.7);
|
|
216
215
|
this.size = Math.floor(width / sixteen);
|
|
@@ -270,24 +269,5 @@ export default defineComponent({
|
|
|
270
269
|
margin-bottom: 1rem;
|
|
271
270
|
}
|
|
272
271
|
}
|
|
273
|
-
.element-list-inline.overflowScroll {
|
|
274
|
-
display: flex;
|
|
275
|
-
flex-wrap: wrap;
|
|
276
|
-
-webkit-overflow-scrolling: touch;
|
|
277
|
-
scroll-behavior: smooth;
|
|
278
|
-
padding-bottom: 1rem;
|
|
279
|
-
width: 100%;
|
|
280
|
-
height: 80vh;
|
|
281
|
-
overflow-y: auto;
|
|
282
|
-
grid-gap: inherit;
|
|
283
|
-
@media (max-width: 960px) {
|
|
284
|
-
overflow-x: hidden;
|
|
285
|
-
flex-direction: column;
|
|
286
|
-
flex-wrap: nowrap;
|
|
287
|
-
}
|
|
288
|
-
.item-phone-margin {
|
|
289
|
-
margin: 1rem 0.5rem !important;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
272
|
}
|
|
293
273
|
</style>
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
:class="{ 'multiselect-transparent': light }"
|
|
32
32
|
@search-change="onSearchOrganisation"
|
|
33
33
|
@open="onOpen"
|
|
34
|
-
@close="onClose"
|
|
35
34
|
@select="onOrganisationSelected"
|
|
36
35
|
>
|
|
37
36
|
<template #clear="{ props }">
|
|
@@ -207,16 +206,8 @@ export default defineComponent({
|
|
|
207
206
|
'autocomplete',
|
|
208
207
|
'off'
|
|
209
208
|
);
|
|
210
|
-
this.clearAll();
|
|
211
209
|
this.onSearchOrganisation();
|
|
212
210
|
},
|
|
213
|
-
onClose(): void {
|
|
214
|
-
if (this.organisation) return;
|
|
215
|
-
this.organisation = this.defaultanswer
|
|
216
|
-
? getDefaultOrganistion(this.defaultanswer)
|
|
217
|
-
: undefined;
|
|
218
|
-
this.$emit('selected', this.organisation);
|
|
219
|
-
},
|
|
220
211
|
onOrganisationSelected(organisation: Organisation|undefined): void {
|
|
221
212
|
this.$emit('selected', organisation);
|
|
222
213
|
},
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
</button>
|
|
23
23
|
</div>
|
|
24
24
|
<div
|
|
25
|
-
v-if="!isArrow"
|
|
25
|
+
v-if="!isArrow && !overflowScroll"
|
|
26
26
|
class="hide-phone"
|
|
27
27
|
>
|
|
28
28
|
<button
|
|
@@ -51,7 +51,10 @@
|
|
|
51
51
|
:name="transitionName"
|
|
52
52
|
class="element-list-inline"
|
|
53
53
|
tag="ul"
|
|
54
|
-
:class="[
|
|
54
|
+
:class="[
|
|
55
|
+
alignLeft ? 'justify-content-start' : '',
|
|
56
|
+
overflowScroll ? 'overflowScroll' : '',
|
|
57
|
+
]"
|
|
55
58
|
>
|
|
56
59
|
<PodcastItem
|
|
57
60
|
v-for="p in podcasts"
|
|
@@ -131,6 +134,9 @@ export default defineComponent({
|
|
|
131
134
|
sizeItem(): number {
|
|
132
135
|
return state.generalParameters.podcastItem ? (state.generalParameters.podcastItem as number): 13;
|
|
133
136
|
},
|
|
137
|
+
overflowScroll(): boolean {
|
|
138
|
+
return (state.emissionPage.overflowScroll as boolean);
|
|
139
|
+
},
|
|
134
140
|
filterOrga(): string {
|
|
135
141
|
return this.$store.state.filter.organisationId;
|
|
136
142
|
},
|
|
@@ -249,6 +255,10 @@ export default defineComponent({
|
|
|
249
255
|
},
|
|
250
256
|
handleResize(): void {
|
|
251
257
|
if (!this.$el) return;
|
|
258
|
+
if (this.overflowScroll) {
|
|
259
|
+
this.size = 20;
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
252
262
|
if (window.innerWidth <= PHONE_WIDTH) {
|
|
253
263
|
this.size = 10;
|
|
254
264
|
return;
|
|
@@ -48,14 +48,14 @@ export default defineComponent({
|
|
|
48
48
|
return (state.emissionsPage.progressBar as boolean);
|
|
49
49
|
},
|
|
50
50
|
percentProgress(): number{
|
|
51
|
-
if(this.podcast !== this.$store.state.player.podcast){
|
|
51
|
+
if(!this.$store.state.player.podcast || this.podcast.podcastId !== this.$store.state.player.podcast.podcastId){
|
|
52
52
|
return 0;
|
|
53
53
|
}
|
|
54
54
|
if(!this.$store.state.player.elapsed){return 0;}
|
|
55
55
|
return this.$store.state.player.elapsed * 100;
|
|
56
56
|
},
|
|
57
57
|
playedTime(): string{
|
|
58
|
-
if(this.podcast === this.$store.state.player.podcast){
|
|
58
|
+
if(this.$store.state.player.podcast && this.podcast.podcastId === this.$store.state.player.podcast.podcastId){
|
|
59
59
|
if (this.$store.state.player.elapsed && this.$store.state.player.elapsed > 0 && this.$store.state.player.total && this.$store.state.player.total > 0) {
|
|
60
60
|
return DurationHelper.formatDuration(
|
|
61
61
|
Math.round(this.$store.state.player.elapsed * this.$store.state.player.total)
|
|
@@ -70,7 +70,7 @@ export default defineComponent({
|
|
|
70
70
|
},
|
|
71
71
|
methods: {
|
|
72
72
|
seekTo(event: MouseEvent): void {
|
|
73
|
-
if(this.podcast!== this.$store.state.player.podcast){return;}
|
|
73
|
+
if(!this.$store.state.player.podcast || this.podcast.podcastId !== this.$store.state.player.podcast.podcastId){return;}
|
|
74
74
|
const rect = (event.currentTarget as Element).getBoundingClientRect();
|
|
75
75
|
const barWidth = (event.currentTarget as Element).clientWidth;
|
|
76
76
|
const x = event.clientX - rect.left;
|
|
@@ -29,9 +29,8 @@
|
|
|
29
29
|
:show-no-results="true"
|
|
30
30
|
:hide-selected="true"
|
|
31
31
|
:show-labels="false"
|
|
32
|
-
@open="
|
|
32
|
+
@open="onOpen"
|
|
33
33
|
@search-change="onSearchRubrique"
|
|
34
|
-
@close="onClose"
|
|
35
34
|
@select="onRubriqueSelected"
|
|
36
35
|
>
|
|
37
36
|
<template #singleLabel="{ option }">
|
|
@@ -187,14 +186,11 @@ export default defineComponent({
|
|
|
187
186
|
);
|
|
188
187
|
}
|
|
189
188
|
},
|
|
190
|
-
|
|
189
|
+
onOpen(): void {
|
|
191
190
|
(this.$refs.multiselectRef as VueMultiselect).$refs.search.setAttribute(
|
|
192
191
|
'autocomplete',
|
|
193
192
|
'off'
|
|
194
193
|
);
|
|
195
|
-
if (undefined === this.rubriqueArray) {
|
|
196
|
-
this.rubrique = undefined;
|
|
197
|
-
}
|
|
198
194
|
this.rubriques = this.initRubriquesArray();
|
|
199
195
|
},
|
|
200
196
|
onClose(): void {
|
|
@@ -66,6 +66,16 @@
|
|
|
66
66
|
>
|
|
67
67
|
<span class="saooti-playerfm" />
|
|
68
68
|
</a>
|
|
69
|
+
<a
|
|
70
|
+
v-if="pocketCasts"
|
|
71
|
+
rel="noopener"
|
|
72
|
+
target="_blank"
|
|
73
|
+
class="btn me-3 mb-2 share-btn"
|
|
74
|
+
:href="pocketCasts"
|
|
75
|
+
title="pocketCasts"
|
|
76
|
+
>
|
|
77
|
+
<span class="saooti-pocket-casts" />
|
|
78
|
+
</a>
|
|
69
79
|
<a
|
|
70
80
|
v-if="podcastAddict"
|
|
71
81
|
rel="noopener"
|
|
@@ -189,6 +199,10 @@ export default defineComponent({
|
|
|
189
199
|
(this.emission && this.emission.annotations
|
|
190
200
|
? this.emission.annotations.googlePodcasts
|
|
191
201
|
: undefined) as string | undefined,
|
|
202
|
+
pocketCasts:
|
|
203
|
+
(this.emission && this.emission.annotations
|
|
204
|
+
? this.emission.annotations.pocketCasts
|
|
205
|
+
: undefined) as string | undefined,
|
|
192
206
|
};
|
|
193
207
|
},
|
|
194
208
|
|
|
@@ -205,6 +219,7 @@ export default defineComponent({
|
|
|
205
219
|
this.stitcher = this.externaliseLinks(this.stitcher);
|
|
206
220
|
this.amazon = this.externaliseLinks(this.amazon);
|
|
207
221
|
this.googlePodcasts = this.externaliseLinks(this.googlePodcasts);
|
|
222
|
+
this.pocketCasts = this.externaliseLinks(this.pocketCasts);
|
|
208
223
|
},
|
|
209
224
|
|
|
210
225
|
methods: {
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
class="d-flex align-items-center flex-grow-1 px-5"
|
|
29
29
|
>
|
|
30
30
|
<audio
|
|
31
|
-
v-if="!live"
|
|
32
31
|
id="audio-player"
|
|
33
32
|
:src="!live? audioUrl: undefined"
|
|
34
33
|
autoplay
|
|
@@ -194,6 +193,9 @@ export default defineComponent({
|
|
|
194
193
|
commentsLoaded(): void {
|
|
195
194
|
this.initComments(true);
|
|
196
195
|
},
|
|
196
|
+
audioUrl(): void{
|
|
197
|
+
this.playerError = false;
|
|
198
|
+
}
|
|
197
199
|
},
|
|
198
200
|
|
|
199
201
|
mounted() {
|
|
@@ -342,47 +344,49 @@ export default defineComponent({
|
|
|
342
344
|
this.listenTime = 0;
|
|
343
345
|
},
|
|
344
346
|
async initHls(hlsStreamUrl: string): Promise<void> {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (!Hls.isSupported()) {
|
|
355
|
-
throw 'Hls is not supported ! ';
|
|
356
|
-
}
|
|
357
|
-
const hls = new Hls();
|
|
358
|
-
hls.on(Hls.Events.MANIFEST_PARSED, async () => {
|
|
359
|
-
if(!this.live){ return; }
|
|
360
|
-
let downloadId = null;
|
|
361
|
-
try {
|
|
362
|
-
downloadId = await octopusApi.requestLiveDownloadId(
|
|
363
|
-
this.live.livePodcastId
|
|
364
|
-
);
|
|
365
|
-
await octopusApi.markPlayingLive(
|
|
366
|
-
this.live.livePodcastId,
|
|
367
|
-
downloadId,
|
|
368
|
-
'octopus',
|
|
369
|
-
this.$store.state.authentication.organisationId
|
|
370
|
-
);
|
|
371
|
-
this.setDownloadId(downloadId);
|
|
372
|
-
} catch (error) {
|
|
373
|
-
console.log('ERROR downloadId');
|
|
347
|
+
return new Promise<void>(async(resolve, reject) => {
|
|
348
|
+
if(null === Hls){
|
|
349
|
+
//TODO -> Version light min quand ce sera possible
|
|
350
|
+
await import('hls.js/dist/hls.js').then((hlsLibrary) => {
|
|
351
|
+
Hls = hlsLibrary.default;
|
|
352
|
+
})
|
|
353
|
+
await import('hls.js').then((hlsLibrary) => {
|
|
354
|
+
Hls = hlsLibrary.default;
|
|
355
|
+
})
|
|
374
356
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
357
|
+
if (!Hls.isSupported()) {
|
|
358
|
+
reject('Hls is not supported ! ');
|
|
359
|
+
}
|
|
360
|
+
const hls = new Hls();
|
|
361
|
+
hls.on(Hls.Events.MANIFEST_PARSED, async () => {
|
|
362
|
+
if(!this.live){ return; }
|
|
363
|
+
let downloadId = null;
|
|
364
|
+
try {
|
|
365
|
+
downloadId = await octopusApi.requestLiveDownloadId(
|
|
366
|
+
this.live.livePodcastId
|
|
367
|
+
);
|
|
368
|
+
await octopusApi.markPlayingLive(
|
|
369
|
+
this.live.livePodcastId,
|
|
370
|
+
downloadId,
|
|
371
|
+
'octopus',
|
|
372
|
+
this.$store.state.authentication.organisationId
|
|
373
|
+
);
|
|
374
|
+
this.setDownloadId(downloadId);
|
|
375
|
+
} catch (error) {
|
|
376
|
+
console.log('ERROR downloadId');
|
|
377
|
+
}
|
|
378
|
+
this.hlsReady = true;
|
|
379
|
+
const audio: HTMLElement|null = document.getElementById('audio-player');
|
|
380
|
+
hls.attachMedia((audio as HTMLAudioElement));
|
|
381
|
+
await (audio as HTMLAudioElement).play();
|
|
382
|
+
this.onPlay();
|
|
383
|
+
resolve();
|
|
384
|
+
});
|
|
385
|
+
hls.on(Hls.Events.ERROR, async() => {
|
|
386
|
+
reject('There is an error while reading media content');
|
|
387
|
+
});
|
|
388
|
+
hls.loadSource(hlsStreamUrl);
|
|
384
389
|
});
|
|
385
|
-
hls.loadSource(hlsStreamUrl);
|
|
386
390
|
},
|
|
387
391
|
async playLive(): Promise<void> {
|
|
388
392
|
if (!this.live) return;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
:class="{
|
|
20
20
|
'saooti-play2-bounty': isPaused,
|
|
21
21
|
'saooti-pause-bounty': isPlaying,
|
|
22
|
+
'spinner-border':!isPaused&&!isPlaying
|
|
22
23
|
}"
|
|
23
24
|
/>
|
|
24
25
|
</div>
|
|
@@ -88,6 +89,9 @@ export default defineComponent({
|
|
|
88
89
|
|
|
89
90
|
methods: {
|
|
90
91
|
addKeyboardControl(event: KeyboardEvent): void{
|
|
92
|
+
if(!event || null ===event){return;}
|
|
93
|
+
const element = event.target as HTMLElement;
|
|
94
|
+
if (!element || 'INPUT' == element.tagName.toUpperCase() || 'TEXTAREA' == element.tagName.toUpperCase()){return;}
|
|
91
95
|
if (' ' === event.key || 'Spacebar' === event.key) {
|
|
92
96
|
event.preventDefault();
|
|
93
97
|
this.switchPausePlay();
|
|
@@ -216,6 +216,7 @@ export default defineComponent({
|
|
|
216
216
|
if (undefined !== this.emission.annotations.podcastAddict) count++;
|
|
217
217
|
if (undefined !== this.emission.annotations.playerFm) count++;
|
|
218
218
|
if (undefined !== this.emission.annotations.stitcher) count++;
|
|
219
|
+
if (undefined !== this.emission.annotations.pocketCasts) count++;
|
|
219
220
|
}
|
|
220
221
|
return count;
|
|
221
222
|
},
|
|
@@ -227,6 +227,7 @@ export default defineComponent({
|
|
|
227
227
|
if (undefined !== this.podcast.emission.annotations.podcastAddict) count++;
|
|
228
228
|
if (undefined !== this.podcast.emission.annotations.playerFm) count++;
|
|
229
229
|
if (undefined !== this.podcast.emission.annotations.stitcher) count++;
|
|
230
|
+
if (undefined !== this.podcast.emission.annotations.pocketCasts) count++;
|
|
230
231
|
}
|
|
231
232
|
return count;
|
|
232
233
|
},
|
package/src/main.ts
CHANGED
|
@@ -6,6 +6,7 @@ import I18nResources from './locale/messages';
|
|
|
6
6
|
import router from '@/router/router';
|
|
7
7
|
import moment from 'moment';
|
|
8
8
|
import store from '@/store/AppStore';
|
|
9
|
+
import paramStore from '@/store/paramStore';
|
|
9
10
|
import { LocaleMessage } from '@intlify/core-base';
|
|
10
11
|
/* import 'popper.js/dist/popper.min.js'; */
|
|
11
12
|
/* import 'jquery/src/jquery.js'; */
|
|
@@ -32,6 +33,22 @@ const i18n = createI18n({
|
|
|
32
33
|
});
|
|
33
34
|
moment.locale(language);
|
|
34
35
|
|
|
36
|
+
|
|
37
|
+
paramStore.initialize({
|
|
38
|
+
generalParameters: {},
|
|
39
|
+
podcastPage: {},
|
|
40
|
+
podcastsPage: {},
|
|
41
|
+
emissionsPage: {},
|
|
42
|
+
emissionPage: {},
|
|
43
|
+
intervenantPage: {},
|
|
44
|
+
intervenantsPage: {},
|
|
45
|
+
searchPage: {},
|
|
46
|
+
player: {},
|
|
47
|
+
footer: {},
|
|
48
|
+
organisation: {},
|
|
49
|
+
octopusApi: {}
|
|
50
|
+
});
|
|
51
|
+
|
|
35
52
|
// Initialisation store
|
|
36
53
|
createApp(App)
|
|
37
54
|
.use(i18n)
|
package/src/store/paramStore.ts
CHANGED
|
@@ -12,7 +12,7 @@ const state:paramStore = {
|
|
|
12
12
|
isPlaylist: false,
|
|
13
13
|
isProduction: true,
|
|
14
14
|
isContribution: true,
|
|
15
|
-
ApiUri: 'https://api.
|
|
15
|
+
ApiUri: 'https://api.staging.saooti.org/',
|
|
16
16
|
podcastmaker: false,
|
|
17
17
|
buttonPlus: true,
|
|
18
18
|
allCategories: [],
|
|
@@ -25,10 +25,10 @@ const state:paramStore = {
|
|
|
25
25
|
SharePlayer: true,
|
|
26
26
|
ShareButtons: true,
|
|
27
27
|
ShareDistribution: true,
|
|
28
|
-
MiniplayerUri: 'https://playerbeta.
|
|
28
|
+
MiniplayerUri: 'https://playerbeta.staging.saooti.org/',
|
|
29
29
|
ouestFranceStyle: false,
|
|
30
30
|
downloadButton: false,
|
|
31
|
-
hlsUri: 'https://hls.
|
|
31
|
+
hlsUri: 'https://hls.staging.saooti.org/',
|
|
32
32
|
mainRubrique: 0,
|
|
33
33
|
resourceUrl: undefined
|
|
34
34
|
},
|
|
@@ -55,7 +55,8 @@ const state:paramStore = {
|
|
|
55
55
|
emissionPage: {
|
|
56
56
|
ouestFranceStyle: false,
|
|
57
57
|
rssButton: false,
|
|
58
|
-
isDisplayPodcasts:true
|
|
58
|
+
isDisplayPodcasts:true,
|
|
59
|
+
overflowScroll:false
|
|
59
60
|
},
|
|
60
61
|
intervenantPage: {
|
|
61
62
|
lightStyle: false,
|
|
@@ -83,11 +84,12 @@ const state:paramStore = {
|
|
|
83
84
|
userName: '',
|
|
84
85
|
},
|
|
85
86
|
octopusApi: {
|
|
86
|
-
url: 'http://api.
|
|
87
|
-
commentsUrl: 'http://comments.
|
|
88
|
-
studioUrl: 'http://studio.
|
|
89
|
-
playerUrl: 'https://playerbeta.
|
|
87
|
+
url: 'http://api.staging.saooti.org/',
|
|
88
|
+
commentsUrl: 'http://comments.staging.saooti.org/',
|
|
89
|
+
studioUrl: 'http://studio.staging.saooti.org/',
|
|
90
|
+
playerUrl: 'https://playerbeta.staging.saooti.org/',
|
|
90
91
|
organisationId: undefined,
|
|
92
|
+
rubriqueIdFilter: undefined,
|
|
91
93
|
},
|
|
92
94
|
};
|
|
93
95
|
export interface GeneralParameters{
|
|
@@ -143,7 +145,8 @@ export interface EmissionsPage{
|
|
|
143
145
|
export interface EmissionPage{
|
|
144
146
|
ouestFranceStyle?: boolean,
|
|
145
147
|
rssButton?: boolean,
|
|
146
|
-
isDisplayPodcasts?:boolean
|
|
148
|
+
isDisplayPodcasts?:boolean,
|
|
149
|
+
overflowScroll?: boolean,
|
|
147
150
|
}
|
|
148
151
|
export interface IntervenantPage{
|
|
149
152
|
lightStyle?: boolean,
|
|
@@ -182,7 +185,8 @@ export interface OctopusApi{
|
|
|
182
185
|
accessTokenUri: string,
|
|
183
186
|
expiration: string,
|
|
184
187
|
clientId: string,
|
|
185
|
-
}
|
|
188
|
+
},
|
|
189
|
+
rubriqueIdFilter?: Array<number>,
|
|
186
190
|
}
|
|
187
191
|
export interface paramStore{
|
|
188
192
|
generalParameters:GeneralParameters,
|