@saooti/octopus-sdk 39.3.7 → 39.3.8
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/eslint.config.mjs +29 -0
- package/package.json +5 -41
- package/plateform.conf +1 -1
- package/src/api/classicApi.ts +1 -1
- package/src/components/display/comments/CommentInput.vue +1 -1
- package/src/components/display/filter/SearchOrder.vue +1 -1
- package/src/components/display/list/SwiperList.vue +3 -3
- package/src/components/display/live/LiveList.vue +1 -1
- package/src/components/display/live/RadioPlanning.vue +40 -10
- package/src/components/display/podcasts/TagList.vue +1 -1
- package/src/components/display/rubriques/RubriqueChooser.vue +1 -1
- package/src/components/display/sharing/ShareButtons.vue +1 -1
- package/src/components/display/sharing/SharePlayer.vue +1 -1
- package/src/components/display/sharing/SharePlayerColors.vue +0 -1
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -1
- package/src/components/display/sharing/SubscribeButtons.vue +1 -1
- package/src/components/form/ClassicEmojiPicker.vue +1 -1
- package/src/components/misc/FooterSection.vue +1 -1
- package/src/components/misc/modal/ContractPreviewModal.vue +1 -1
- package/src/components/misc/modal/NewsletterModal.vue +0 -1
- package/src/components/mixins/player/playerLive.ts +1 -1
- package/src/components/mixins/player/playerLogicProgress.ts +1 -1
- package/src/components/mixins/player/playerStitching.ts +7 -7
- package/src/components/mixins/player/playerTranscript.ts +1 -1
- package/src/components/mixins/player/playerVast.ts +2 -2
- package/src/components/mixins/podcast/podcastView.ts +1 -1
- package/src/components/mixins/routeParam/advancedParamInit.ts +1 -1
- package/src/components/mixins/seoTitleUrl.ts +1 -1
- package/src/locale/de.ts +2 -0
- package/src/locale/en.ts +2 -0
- package/src/locale/es.ts +2 -0
- package/src/locale/fr.ts +2 -0
- package/src/locale/it.ts +2 -0
- package/src/locale/sl.ts +2 -0
- package/src/main.ts +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import eslint from '@eslint/js';
|
|
2
|
+
import eslintConfigPrettier from 'eslint-config-prettier';
|
|
3
|
+
import eslintPluginVue from 'eslint-plugin-vue';
|
|
4
|
+
import globals from 'globals';
|
|
5
|
+
import typescriptEslint from 'typescript-eslint';
|
|
6
|
+
|
|
7
|
+
export default typescriptEslint.config(
|
|
8
|
+
{ ignores: ['*.d.ts', '**/coverage', '**/dist'] },
|
|
9
|
+
{
|
|
10
|
+
extends: [
|
|
11
|
+
eslint.configs.recommended,
|
|
12
|
+
...typescriptEslint.configs.recommended,
|
|
13
|
+
...eslintPluginVue.configs['flat/recommended'],
|
|
14
|
+
],
|
|
15
|
+
files: ['**/*.{ts,vue}'],
|
|
16
|
+
languageOptions: {
|
|
17
|
+
ecmaVersion: 'latest',
|
|
18
|
+
sourceType: 'module',
|
|
19
|
+
globals: globals.browser,
|
|
20
|
+
parserOptions: {
|
|
21
|
+
parser: typescriptEslint.parser,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
rules: {
|
|
25
|
+
// your rules
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
eslintConfigPrettier
|
|
29
|
+
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saooti/octopus-sdk",
|
|
3
|
-
"version": "39.3.
|
|
3
|
+
"version": "39.3.8",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Javascript SDK for using octopus",
|
|
6
6
|
"author": "Saooti",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"dev": "vite",
|
|
11
11
|
"proxy_authentifié": "node proxy.ts",
|
|
12
12
|
"proxy_non_authentifié": "node proxy.ts false",
|
|
13
|
-
"lint": "eslint --
|
|
13
|
+
"lint": "eslint --fix src",
|
|
14
14
|
"build_bundle": "vue-cli-service build --target lib --name octopus ./index.js",
|
|
15
15
|
"sonar": "node sonarqube-scanner.js"
|
|
16
16
|
},
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"dayjs": "^1.11.13",
|
|
33
33
|
"emoji-mart-vue-fast": "^15.0.3",
|
|
34
34
|
"eslint-config-prettier": "^9.1.0",
|
|
35
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
36
35
|
"express": "^4.21.2",
|
|
36
|
+
"globals": "^15.13.0",
|
|
37
37
|
"hls.js": "^1.5.17",
|
|
38
38
|
"humanize-duration": "^3.32.1",
|
|
39
39
|
"pinia": "^2.3.0",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"sockjs-client": "^1.6.1",
|
|
43
43
|
"sonarqube-scanner": "^3.3.0",
|
|
44
44
|
"swiper": "^11.1.14",
|
|
45
|
+
"typescript-eslint": "^8.18.1",
|
|
45
46
|
"video.js": "^8.21.0",
|
|
46
47
|
"videojs-quality-selector-hls": "^1.1.1",
|
|
47
48
|
"vite": "^5.4.11",
|
|
@@ -56,48 +57,11 @@
|
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
58
59
|
"@types/sockjs-client": "^1.5.4",
|
|
59
|
-
"@typescript-eslint/eslint-plugin": "^8.18.0",
|
|
60
|
-
"@typescript-eslint/parser": "^8.18.0",
|
|
61
60
|
"@vitejs/plugin-vue": "^5.1.4",
|
|
62
|
-
"eslint": "^9.
|
|
61
|
+
"eslint": "^9.17.0",
|
|
63
62
|
"eslint-plugin-vue": "^9.32.0",
|
|
64
63
|
"typescript": "^5.6.3"
|
|
65
64
|
},
|
|
66
|
-
"eslintConfig": {
|
|
67
|
-
"root": true,
|
|
68
|
-
"env": {
|
|
69
|
-
"node": true
|
|
70
|
-
},
|
|
71
|
-
"extends": [
|
|
72
|
-
"eslint:recommended",
|
|
73
|
-
"@vue/typescript",
|
|
74
|
-
"plugin:@typescript-eslint/eslint-recommended",
|
|
75
|
-
"plugin:@typescript-eslint/recommended",
|
|
76
|
-
"plugin:vue/base",
|
|
77
|
-
"plugin:vue/vue3-recommended",
|
|
78
|
-
"plugin:vue/vue3-essential",
|
|
79
|
-
"plugin:vue/vue3-strongly-recommended",
|
|
80
|
-
"prettier",
|
|
81
|
-
"plugin:prettier/recommended"
|
|
82
|
-
],
|
|
83
|
-
"plugins": [
|
|
84
|
-
"prettier"
|
|
85
|
-
],
|
|
86
|
-
"rules": {
|
|
87
|
-
"no-console": "off",
|
|
88
|
-
"no-debugger": "off",
|
|
89
|
-
"@typescript-eslint/ban-ts-ignore": "off",
|
|
90
|
-
"@typescript-eslint/ban-ts-comment": "off",
|
|
91
|
-
"no-async-promise-executor": "off",
|
|
92
|
-
"prettier/prettier": [
|
|
93
|
-
"error",
|
|
94
|
-
{}
|
|
95
|
-
]
|
|
96
|
-
},
|
|
97
|
-
"parserOptions": {
|
|
98
|
-
"parser": "@typescript-eslint/parser"
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
65
|
"postcss": {
|
|
102
66
|
"plugins": {
|
|
103
67
|
"autoprefixer": {}
|
package/plateform.conf
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
octopus.saooti.com
|
package/src/api/classicApi.ts
CHANGED
|
@@ -144,7 +144,7 @@ export default {
|
|
|
144
144
|
},
|
|
145
145
|
|
|
146
146
|
adjustParameters(params:RequestParameters){
|
|
147
|
-
|
|
147
|
+
const parametersUpdated = params.parameters ?? {};
|
|
148
148
|
if (params.path.includes('podcast/search')){
|
|
149
149
|
if(!params.parameters?.includeHidden || params.isNotAuth){
|
|
150
150
|
parametersUpdated.validity = true;
|
|
@@ -105,14 +105,14 @@ export default defineComponent({
|
|
|
105
105
|
slidesUpdated() {
|
|
106
106
|
//TODO CODE USELESS IF LIBRARY IS FIXED BUT FOR NOW IT IS IMPORTANT
|
|
107
107
|
if (!this.$el) return;
|
|
108
|
-
|
|
109
|
-
for (
|
|
108
|
+
const slides = this.$el.getElementsByClassName("swiper-slide");
|
|
109
|
+
for (const slide of slides) {
|
|
110
110
|
slide.style.width = this.itemRecalculizedSize + "px";
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
113
|
slideChange() {
|
|
114
114
|
if (!this.$el) return;
|
|
115
|
-
|
|
115
|
+
const wrapper = this.$el.getElementsByClassName("swiper-wrapper")[0];
|
|
116
116
|
if (wrapper.style.transform.includes("translate3d(40px")) {
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
@@ -106,7 +106,7 @@ export default defineComponent({
|
|
|
106
106
|
},
|
|
107
107
|
statusArraySelect(): Array<{ title: string; value: string }> {
|
|
108
108
|
const statusArray = [{ title: this.$t("All lives"), value: "ALL" }];
|
|
109
|
-
for (
|
|
109
|
+
for (const status of this.statusFetched) {
|
|
110
110
|
let title = "";
|
|
111
111
|
switch (status) {
|
|
112
112
|
case "RECORDING":
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
{{ $t("Program") }}
|
|
5
5
|
</h2>
|
|
6
6
|
<div class="py-3">
|
|
7
|
-
<div class="d-flex align-items-center w-100">
|
|
7
|
+
<div class="d-flex align-items-center w-100 mb-3">
|
|
8
8
|
<button
|
|
9
|
-
v-for="day in
|
|
9
|
+
v-for="day in displayArrayDays"
|
|
10
10
|
:key="day.date"
|
|
11
11
|
class="d-flex flex-column align-items-center flex-grow-1 button-date"
|
|
12
12
|
:class="day.date == daySelected ? 'bg-primary text-white' : ''"
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
<span>{{ day.title }}</span>
|
|
17
17
|
</button>
|
|
18
18
|
</div>
|
|
19
|
+
<button class="btn btn-primary mb-3 mx-0" v-if="isPhone" @click="showAllDays = !showAllDays">
|
|
20
|
+
<template v-if="!showAllDays">{{ $t('Show more days') }}</template>
|
|
21
|
+
<template v-else>{{ $t('Show fewer days') }}</template>
|
|
22
|
+
</button>
|
|
19
23
|
<div
|
|
20
24
|
class="d-flex align-items-center justify-content-center border-bottom"
|
|
21
25
|
>
|
|
@@ -64,7 +68,7 @@
|
|
|
64
68
|
{{ dateDisplay(planningItem.startDate) }}
|
|
65
69
|
</div>
|
|
66
70
|
<router-link
|
|
67
|
-
class="d-flex align-items-center text-dark"
|
|
71
|
+
class="d-flex align-items-center flex-nowrap text-dark"
|
|
68
72
|
:to="{
|
|
69
73
|
name: 'podcast',
|
|
70
74
|
params: { podcastId: planningItem.podcastId },
|
|
@@ -77,7 +81,7 @@
|
|
|
77
81
|
"
|
|
78
82
|
width="150"
|
|
79
83
|
height="150"
|
|
80
|
-
class="m-2"
|
|
84
|
+
class="m-2 program-item-img"
|
|
81
85
|
role="presentation"
|
|
82
86
|
:title="
|
|
83
87
|
$t('Episode name image', {
|
|
@@ -93,7 +97,7 @@
|
|
|
93
97
|
>
|
|
94
98
|
{{ $t("Live") }}
|
|
95
99
|
</div>
|
|
96
|
-
<div class="flex-grow-1
|
|
100
|
+
<div class="flex-grow-1 fw-bold">
|
|
97
101
|
{{ planningItem.podcastData.title }}
|
|
98
102
|
</div>
|
|
99
103
|
</div>
|
|
@@ -114,6 +118,7 @@ import utc from "dayjs/plugin/utc";
|
|
|
114
118
|
dayjs.extend(utc);
|
|
115
119
|
import classicApi from "../../../api/classicApi";
|
|
116
120
|
import imageProxy from "../../mixins/imageProxy";
|
|
121
|
+
import resizePhone from "../../mixins/resizePhone";
|
|
117
122
|
import ClassicLoading from "../../form/ClassicLoading.vue";
|
|
118
123
|
import { defineComponent } from "vue";
|
|
119
124
|
import { Canal } from "@/stores/class/radio/canal";
|
|
@@ -126,7 +131,7 @@ export default defineComponent({
|
|
|
126
131
|
ClassicLoading,
|
|
127
132
|
},
|
|
128
133
|
|
|
129
|
-
mixins: [imageProxy],
|
|
134
|
+
mixins: [imageProxy,resizePhone],
|
|
130
135
|
|
|
131
136
|
props: {
|
|
132
137
|
radio: { default: undefined, type: Object as () => Canal },
|
|
@@ -150,6 +155,9 @@ export default defineComponent({
|
|
|
150
155
|
}>,
|
|
151
156
|
loading: true as boolean,
|
|
152
157
|
error: false as boolean,
|
|
158
|
+
isPhone: false as boolean,
|
|
159
|
+
windowWidth: 0 as number,
|
|
160
|
+
showAllDays: false as boolean
|
|
153
161
|
};
|
|
154
162
|
},
|
|
155
163
|
|
|
@@ -187,6 +195,12 @@ export default defineComponent({
|
|
|
187
195
|
},
|
|
188
196
|
];
|
|
189
197
|
},
|
|
198
|
+
displayArrayDays(){
|
|
199
|
+
if(this.isPhone && !this.showAllDays){
|
|
200
|
+
return this.arrayDays.slice(6, 9);
|
|
201
|
+
}
|
|
202
|
+
return this.arrayDays;
|
|
203
|
+
},
|
|
190
204
|
},
|
|
191
205
|
|
|
192
206
|
mounted() {
|
|
@@ -217,7 +231,7 @@ export default defineComponent({
|
|
|
217
231
|
this.planning[this.daySelected],
|
|
218
232
|
).reduce((r, c) => r.concat(c), []);
|
|
219
233
|
let selectedOccurrence = arrayOccurrences[0];
|
|
220
|
-
for (
|
|
234
|
+
for (const occ of arrayOccurrences) {
|
|
221
235
|
selectedOccurrence = occ;
|
|
222
236
|
if (dayjs(occ.endDate).isAfter(now)) {
|
|
223
237
|
break;
|
|
@@ -289,9 +303,9 @@ export default defineComponent({
|
|
|
289
303
|
this.loading = true;
|
|
290
304
|
this.error = false;
|
|
291
305
|
try {
|
|
292
|
-
|
|
306
|
+
const occurrences = await this.fetchOccurrencesAndLives();
|
|
293
307
|
let periodDayIndex = 0;
|
|
294
|
-
for (
|
|
308
|
+
for (const occ of occurrences) {
|
|
295
309
|
if (!occ.podcastId) {
|
|
296
310
|
continue;
|
|
297
311
|
}
|
|
@@ -335,14 +349,30 @@ export default defineComponent({
|
|
|
335
349
|
.program-item-date {
|
|
336
350
|
width: 100px;
|
|
337
351
|
font-size: 1.1rem;
|
|
352
|
+
@media (max-width: 960px) {
|
|
353
|
+
font-size: 0.8rem;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
.program-item-img{
|
|
357
|
+
@media (max-width: 960px) {
|
|
358
|
+
width: 80px;
|
|
359
|
+
height: 80px;
|
|
360
|
+
margin: 0.5rem 0.5rem 0 0 !important;
|
|
361
|
+
}
|
|
338
362
|
}
|
|
339
363
|
.button-date {
|
|
340
364
|
border: 1px solid #ddd;
|
|
341
|
-
padding: 0.5rem
|
|
365
|
+
padding: 0.5rem;
|
|
342
366
|
color: black !important;
|
|
367
|
+
&.text-white{
|
|
368
|
+
color: white !important;
|
|
369
|
+
}
|
|
343
370
|
&:hover {
|
|
344
371
|
background: #ddd;
|
|
345
372
|
}
|
|
373
|
+
@media (max-width: 960px) {
|
|
374
|
+
width: 80px;
|
|
375
|
+
}
|
|
346
376
|
}
|
|
347
377
|
}
|
|
348
378
|
</style>
|
|
@@ -62,7 +62,7 @@ export default defineComponent({
|
|
|
62
62
|
computed: {
|
|
63
63
|
ouestFranceMainTag(): string | undefined {
|
|
64
64
|
if (this.podcastAnnotations?.["mainOfTag"]) {
|
|
65
|
-
for (
|
|
65
|
+
for (const key in this.podcastAnnotations) {
|
|
66
66
|
if (
|
|
67
67
|
this.podcastAnnotations[key] ===
|
|
68
68
|
this.podcastAnnotations["mainOfTag"] &&
|
|
@@ -75,7 +75,7 @@ export default defineComponent({
|
|
|
75
75
|
return { name: this.defaultanswer, rubriqueId: 0 };
|
|
76
76
|
},
|
|
77
77
|
rubriques(): Array<Rubrique> {
|
|
78
|
-
|
|
78
|
+
const rubriques = this.allRubriques;
|
|
79
79
|
if (!this.getDefaultRubrique) {
|
|
80
80
|
return rubriques;
|
|
81
81
|
}
|
|
@@ -258,7 +258,7 @@ export default defineComponent({
|
|
|
258
258
|
return state.generalParameters.podcastmaker as boolean;
|
|
259
259
|
},
|
|
260
260
|
rssUrl(): string {
|
|
261
|
-
|
|
261
|
+
const api = this.apiUrl + "rss/";
|
|
262
262
|
if (
|
|
263
263
|
(!this.isPodcastmaker && this.playlist) ||
|
|
264
264
|
this.podcast ||
|
|
@@ -177,7 +177,7 @@ export default defineComponent({
|
|
|
177
177
|
type: string,
|
|
178
178
|
selectIfPossible = true,
|
|
179
179
|
): Promise<boolean> {
|
|
180
|
-
|
|
180
|
+
const customPlayersForType = await this.fetchPlayerPaginate(type);
|
|
181
181
|
this.customPlayers = this.customPlayers.concat(customPlayersForType);
|
|
182
182
|
if (
|
|
183
183
|
"video" !== this.iFrameModel &&
|
|
@@ -204,7 +204,7 @@ export default defineComponent({
|
|
|
204
204
|
return sub.filter((item) => item.url);
|
|
205
205
|
},
|
|
206
206
|
rssUrl(): string | undefined {
|
|
207
|
-
|
|
207
|
+
const api = this.apiUrl + "rss/";
|
|
208
208
|
if (this.emission) {
|
|
209
209
|
return api + "emission/" + this.emission?.emissionId + ".rss";
|
|
210
210
|
}
|
|
@@ -32,7 +32,7 @@ import ClassicPopover from "../misc/ClassicPopover.vue";
|
|
|
32
32
|
import data from "emoji-mart-vue-fast/data/all.json";
|
|
33
33
|
import "emoji-mart-vue-fast/css/emoji-mart.css";
|
|
34
34
|
import { Picker, EmojiIndex } from "emoji-mart-vue-fast/src";
|
|
35
|
-
|
|
35
|
+
const emojiIndex = new EmojiIndex(data);
|
|
36
36
|
import { defineComponent } from "vue";
|
|
37
37
|
export default defineComponent({
|
|
38
38
|
name: "ClassicEmojiPicker",
|
|
@@ -110,7 +110,7 @@ export default defineComponent({
|
|
|
110
110
|
return undefined !== this.authOrgaId;
|
|
111
111
|
},
|
|
112
112
|
routerLinkSecondArray() {
|
|
113
|
-
|
|
113
|
+
const links = [];
|
|
114
114
|
if (!this.isGarRole) {
|
|
115
115
|
links.push(
|
|
116
116
|
{ title: this.$t("Contact"), routeName: "/main/pub/contact" },
|
|
@@ -28,7 +28,7 @@ import { mapState } from "pinia";
|
|
|
28
28
|
import { useApiStore } from "../../../stores/ApiStore";
|
|
29
29
|
import { useAuthStore } from "../../../stores/AuthStore";
|
|
30
30
|
import { Contract } from "../../../stores/class/contract/contract";
|
|
31
|
-
// @ts-
|
|
31
|
+
// @ts-expect-error Problème de bibliothèque
|
|
32
32
|
import { usePDF, VuePDF, PDFDocumentLoadingTask } from "@tato30/vue-pdf";
|
|
33
33
|
import { defineComponent, defineAsyncComponent, ShallowRef } from "vue";
|
|
34
34
|
const ClassicModal = defineAsyncComponent(() => import("./ClassicModal.vue"));
|
|
@@ -60,7 +60,6 @@
|
|
|
60
60
|
import ContentCopyIcon from "vue-material-design-icons/ContentCopy.vue";
|
|
61
61
|
import ClassicModal from "../modal/ClassicModal.vue";
|
|
62
62
|
import SnackBar from "../../misc/SnackBar.vue";
|
|
63
|
-
// @ts-ignore
|
|
64
63
|
import { VSwatches } from "vue3-swatches";
|
|
65
64
|
import "vue3-swatches/dist/style.css";
|
|
66
65
|
import displayMethods from "../../mixins/displayMethods";
|
|
@@ -95,7 +95,7 @@ export const playerStitching = defineComponent({
|
|
|
95
95
|
if(!this.playerCurrentChange || !this.playerPodcast ||(this.playerCurrentChange && this.adPositionsPodcasts[this.playerCurrentChange])){
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({
|
|
99
99
|
api:0,
|
|
100
100
|
path: `ad/test/podcast/${this.playerCurrentChange}`,
|
|
101
101
|
isNotAuth:true
|
|
@@ -110,11 +110,11 @@ export const playerStitching = defineComponent({
|
|
|
110
110
|
this.updateAdPositionsPodcasts(this.playerCurrentChange, selectedAdPositions);
|
|
111
111
|
},
|
|
112
112
|
generateAllAdPositions(doublets: Array<AdserverTiming>, podcastDuration: number): Array<AdPosition>{
|
|
113
|
-
|
|
113
|
+
const adPositions: Array<AdPosition> = [];
|
|
114
114
|
if(doublets.some((element: AdserverTiming)=>{return "TAG_NO_AD"===element.tag})){
|
|
115
115
|
return [];
|
|
116
116
|
}
|
|
117
|
-
for (
|
|
117
|
+
for (const doublet of doublets) {
|
|
118
118
|
if(!doublet.tag){continue;}
|
|
119
119
|
let seconds = 0;
|
|
120
120
|
if("post"===doublet.timing.insertion){
|
|
@@ -143,16 +143,16 @@ export const playerStitching = defineComponent({
|
|
|
143
143
|
});
|
|
144
144
|
},
|
|
145
145
|
async selectCorrectAdPositions(allAdPositions: Array<AdPosition>, podcastDuration: number, minIntervalDuration:number, minTailDuration:number): Promise<Array<AdPosition>>{
|
|
146
|
-
|
|
146
|
+
const adPositions: Array<AdPosition> = [];
|
|
147
147
|
let previousPosition = -1;
|
|
148
|
-
for(
|
|
148
|
+
for(const adPosition of allAdPositions){
|
|
149
149
|
switch (adPosition.policy) {
|
|
150
150
|
case "pre":
|
|
151
151
|
adPositions.push(await this.defineVastUrl(adPosition));
|
|
152
152
|
previousPosition = 0;
|
|
153
153
|
break;
|
|
154
154
|
case "mid":
|
|
155
|
-
|
|
155
|
+
const position = adPosition.seconds;
|
|
156
156
|
if (position > podcastDuration - minTailDuration) {
|
|
157
157
|
//Too close to end
|
|
158
158
|
continue;
|
|
@@ -182,7 +182,7 @@ export const playerStitching = defineComponent({
|
|
|
182
182
|
return adPosition;
|
|
183
183
|
},
|
|
184
184
|
async getVastUrl(tag: string, adCount: number): Promise<string>{
|
|
185
|
-
|
|
185
|
+
const baseUrl = "https://api.soundcast.io/v1/vast/"+tag;
|
|
186
186
|
let keywords: Array<string> = [];
|
|
187
187
|
if(this.playerPodcast?.tags?.length){
|
|
188
188
|
const attributes = await this.getOrgaAttributes(this.playerPodcast.organisation.id);
|
|
@@ -20,7 +20,7 @@ export const playerTranscript = defineComponent({
|
|
|
20
20
|
{
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({
|
|
24
24
|
api:0,
|
|
25
25
|
path:`ad/test/podcast/${this.playerPodcast.podcastId}`,
|
|
26
26
|
isNotAuth:true
|
|
@@ -112,12 +112,12 @@ export const playerVast = defineComponent({
|
|
|
112
112
|
adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,this.onAdError);
|
|
113
113
|
adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, this.onContentPauseRequested);
|
|
114
114
|
adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, this.onContentResumeRequested);
|
|
115
|
-
|
|
115
|
+
const events = [
|
|
116
116
|
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, google.ima.AdEvent.Type.AD_PROGRESS,
|
|
117
117
|
google.ima.AdEvent.Type.COMPLETE, google.ima.AdEvent.Type.LOADED,
|
|
118
118
|
google.ima.AdEvent.Type.PAUSED, google.ima.AdEvent.Type.STARTED,
|
|
119
119
|
];
|
|
120
|
-
for (
|
|
120
|
+
for (const index in events) {
|
|
121
121
|
adsManager.addEventListener(events[index], this.onAdEvent);
|
|
122
122
|
}
|
|
123
123
|
//adsManager.addEventListener(google.ima.AdEvent.Type.SKIPPED, this.onAdEvent);
|
|
@@ -7,6 +7,7 @@ import { mapState } from "pinia";
|
|
|
7
7
|
import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
|
|
8
8
|
import dayjs from "dayjs";
|
|
9
9
|
export const advancedParamInit = defineComponent({
|
|
10
|
+
mixins: [orgaComputed, paginateParamInit, rubriquesFilterParam],
|
|
10
11
|
props: {
|
|
11
12
|
productor: { default: undefined, type: String },
|
|
12
13
|
routeQuery: { default: "", type: String },
|
|
@@ -19,7 +20,6 @@ export const advancedParamInit = defineComponent({
|
|
|
19
20
|
routeOrga: { default: undefined, type: String },
|
|
20
21
|
routeRubriques: { default: "", type: String },
|
|
21
22
|
},
|
|
22
|
-
mixins: [orgaComputed, paginateParamInit, rubriquesFilterParam],
|
|
23
23
|
data() {
|
|
24
24
|
return {
|
|
25
25
|
isInit: false as boolean,
|
|
@@ -14,7 +14,7 @@ export const seoTitleUrl = defineComponent({
|
|
|
14
14
|
}
|
|
15
15
|
const withoutSpecialChar = text.replaceAll(
|
|
16
16
|
/[!"`'#%&,:;<>=\-_@{}~\$\.\(\)\*\+\/\\\?\[\]\^\|]+/gm, ' ');
|
|
17
|
-
|
|
17
|
+
const trimText = withoutSpecialChar.trim();
|
|
18
18
|
return "-"+trimText.replaceAll(/\s+/gm, '-');
|
|
19
19
|
},
|
|
20
20
|
},
|
package/src/locale/de.ts
CHANGED
|
@@ -400,4 +400,6 @@ export default {
|
|
|
400
400
|
"Listening progress bar":"Fortschrittsbalken beim Zuhören",
|
|
401
401
|
"Contract preview": "Vertragsübersicht",
|
|
402
402
|
"Clear search":"Suche löschen",
|
|
403
|
+
"Show more days":"Weitere Tage anzeigen",
|
|
404
|
+
"Show fewer days":"Weniger Tage anzeigen",
|
|
403
405
|
}
|
package/src/locale/en.ts
CHANGED
package/src/locale/es.ts
CHANGED
package/src/locale/fr.ts
CHANGED
|
@@ -408,4 +408,6 @@ export default {
|
|
|
408
408
|
"Listening progress bar":"Barre de progression de l'écoute",
|
|
409
409
|
"Contract preview": "Aperçu du document",
|
|
410
410
|
"Clear search":"Effacer la recherche",
|
|
411
|
+
"Show more days":"Afficher plus de jours",
|
|
412
|
+
"Show fewer days":"Afficher moins de jours",
|
|
411
413
|
};
|
package/src/locale/it.ts
CHANGED
|
@@ -395,4 +395,6 @@ export default{
|
|
|
395
395
|
"Listening progress bar":"Barra di avanzamento dell'ascolto",
|
|
396
396
|
"Contract preview": "Panoramica del contratto",
|
|
397
397
|
"Clear search":"Cancella ricerca",
|
|
398
|
+
"Show more days":"Mostra più giorni",
|
|
399
|
+
"Show fewer days":"Mostra meno giorni",
|
|
398
400
|
};
|
package/src/locale/sl.ts
CHANGED
package/src/main.ts
CHANGED
|
@@ -99,7 +99,7 @@ router.isReady().then(() => {
|
|
|
99
99
|
beforeCreate() {
|
|
100
100
|
if (this.$options.watch) {
|
|
101
101
|
Object.entries(this.$options.watch).forEach(([watcherKey, func]) => {
|
|
102
|
-
// @ts-
|
|
102
|
+
// @ts-expect-error
|
|
103
103
|
this.$options.watch[watcherKey] = new Proxy(func, {
|
|
104
104
|
apply(target, thisArg) {
|
|
105
105
|
let targetAny : any= target;
|