@saooti/octopus-sdk 41.0.12-SNAPSHOT → 41.0.12
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/package.json +3 -1
- package/plateform.conf +1 -1
- package/src/App.vue +3 -7
- package/src/api/classicApi.ts +1 -1
- package/src/components/composable/player/usePlayerLive.ts +2 -2
- package/src/components/composable/radio/usefetchRadioData.ts +29 -12
- package/src/components/display/categories/CategoryChooser.vue +4 -0
- package/src/components/display/comments/CommentList.vue +1 -1
- package/src/components/display/filter/DateFilter.vue +15 -2
- package/src/components/display/live/RadioCurrently.vue +2 -5
- package/src/components/display/podcasts/PodcastPlayButton.vue +4 -1
- package/src/components/display/sharing/PlayerParameters.vue +0 -8
- package/src/components/display/sharing/SharePlayer.vue +0 -5
- package/src/components/display/sharing/SubscribeButtons.vue +4 -2
- package/src/components/form/ClassicInputText.vue +3 -0
- package/src/components/form/ClassicMultiselect.vue +36 -8
- package/src/components/misc/ClassicAccordion.vue +4 -4
- package/src/components/misc/ClassicSpinner.vue +1 -1
- package/src/components/misc/HomeDropdown.vue +3 -110
- package/src/components/misc/MobileMenu.vue +59 -64
- package/src/components/misc/TopBar.vue +4 -11
- package/src/components/misc/TopBarMainContent.vue +0 -2
- package/src/components/misc/UserButtonContent.vue +159 -0
- package/src/components/misc/player/elements/PlayerImage.vue +0 -1
- package/src/components/misc/player/elements/PlayerTitle.vue +3 -3
- package/src/components/misc/player/radio/RadioHistory.vue +3 -2
- package/src/components/misc/player/video/PlayerVideo.vue +2 -2
- package/src/components/pages/PageLogout.vue +1 -6
- package/src/components/pages/PodcastPage.vue +0 -1
- package/src/components/pages/VideoPage.vue +5 -2
- package/src/locale/de.ts +3 -3
- package/src/locale/en.ts +3 -3
- package/src/locale/es.ts +3 -3
- package/src/locale/fr.ts +3 -3
- package/src/locale/it.ts +3 -3
- package/src/locale/sl.ts +3 -3
- package/src/stores/FilterStore.ts +1 -1
- package/src/stores/PlayerStore.ts +6 -1
- package/src/stores/class/conference/conference.ts +2 -0
- package/src/stores/class/general/player.ts +2 -2
- package/src/style/_variables.scss +6 -0
- package/src/style/general.scss +18 -1
- package/src/helper/radio/radioHelper.ts +0 -15
|
@@ -18,39 +18,11 @@
|
|
|
18
18
|
:left-pos="true"
|
|
19
19
|
:is-top-layer="true"
|
|
20
20
|
>
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
? 'octopus-dropdown-item show-phone-flex'
|
|
27
|
-
: 'octopus-dropdown-item'
|
|
28
|
-
"
|
|
29
|
-
:to="{
|
|
30
|
-
name: link.routeName,
|
|
31
|
-
query: getQueriesRouter(link.routeName),
|
|
32
|
-
}"
|
|
33
|
-
>
|
|
34
|
-
{{ link.title }}
|
|
35
|
-
</router-link>
|
|
36
|
-
</template>
|
|
37
|
-
<a
|
|
38
|
-
v-if="!isAuthenticatedWithOrga"
|
|
39
|
-
class="octopus-dropdown-item realLink"
|
|
40
|
-
:href="pathLogin"
|
|
41
|
-
>
|
|
42
|
-
{{ t("Login") }}
|
|
43
|
-
</a>
|
|
44
|
-
<a v-else class="octopus-dropdown-item c-hand" href="/logout">
|
|
45
|
-
{{ t("Logout") }}
|
|
46
|
-
</a>
|
|
47
|
-
<router-link
|
|
48
|
-
v-if="!authStore.isGarRole"
|
|
49
|
-
class="octopus-dropdown-item"
|
|
50
|
-
to="/main/pub/contact"
|
|
51
|
-
>
|
|
52
|
-
{{ t("Contact") }}
|
|
53
|
-
</router-link>
|
|
21
|
+
<UserButtonContent
|
|
22
|
+
:isEducation="isEducation"
|
|
23
|
+
:navLabel="t('User menu')"
|
|
24
|
+
:specificRoutes="routerLinkArray"
|
|
25
|
+
:displayUserContent="displayUserContent"/>
|
|
54
26
|
</ClassicPopover>
|
|
55
27
|
</div>
|
|
56
28
|
</template>
|
|
@@ -61,21 +33,22 @@ import { useRubriquesFilterComputed } from "../composable/route/useRubriquesFilt
|
|
|
61
33
|
import { state } from "../../stores/ParamSdkStore";
|
|
62
34
|
import { defineAsyncComponent, ref, computed } from "vue";
|
|
63
35
|
import { useFilterStore } from "../../stores/FilterStore";
|
|
64
|
-
import { useAuthStore } from "../../stores/AuthStore";
|
|
65
|
-
import { useApiStore } from "../../stores/ApiStore";
|
|
66
36
|
import { useI18n } from "vue-i18n";
|
|
67
|
-
import {
|
|
37
|
+
import { useResizePhone } from "../composable/useResizePhone";
|
|
38
|
+
import { useAuthStore } from "../../stores/AuthStore";
|
|
68
39
|
const ClassicPopover = defineAsyncComponent(
|
|
69
40
|
() => import("../misc/ClassicPopover.vue"),
|
|
70
41
|
);
|
|
71
|
-
|
|
42
|
+
const UserButtonContent = defineAsyncComponent(
|
|
43
|
+
() => import("./UserButtonContent.vue"),
|
|
44
|
+
);
|
|
72
45
|
|
|
73
46
|
//Props
|
|
74
47
|
const props = defineProps({
|
|
75
48
|
isEducation: { default: false, type: Boolean },
|
|
76
49
|
show: { default: false, type: Boolean },
|
|
77
50
|
notPodcastAndEmission: { default: false, type: Boolean },
|
|
78
|
-
|
|
51
|
+
inContentDisplayPage: { default: false, type: Boolean },
|
|
79
52
|
})
|
|
80
53
|
|
|
81
54
|
//Data
|
|
@@ -84,61 +57,87 @@ const firstLoaded = ref(false);
|
|
|
84
57
|
//Composables
|
|
85
58
|
const { t } = useI18n();
|
|
86
59
|
const { rubriqueQueryParam } = useRubriquesFilterComputed();
|
|
87
|
-
const authStore = useAuthStore();
|
|
88
|
-
const apiStore = useApiStore();
|
|
89
60
|
const filterStore = useFilterStore();
|
|
90
|
-
const
|
|
61
|
+
const authStore = useAuthStore();
|
|
62
|
+
const { windowWidth } = useResizePhone();
|
|
91
63
|
|
|
92
64
|
|
|
93
65
|
//Computed
|
|
94
66
|
const isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);
|
|
95
|
-
const
|
|
67
|
+
const displayUserContent = computed(() =>{
|
|
68
|
+
if(isAuthenticatedWithOrga.value){
|
|
69
|
+
return 500>=windowWidth.value;
|
|
70
|
+
}
|
|
71
|
+
return props.show;
|
|
72
|
+
});
|
|
96
73
|
const routerLinkArray = computed(() =>{
|
|
97
74
|
return [
|
|
98
|
-
{
|
|
99
|
-
title: t("
|
|
100
|
-
|
|
101
|
-
|
|
75
|
+
{
|
|
76
|
+
title: t("Home"),
|
|
77
|
+
path:{
|
|
78
|
+
name: "home",
|
|
79
|
+
query: getQueriesRouter(false),
|
|
80
|
+
},
|
|
81
|
+
class:"octopus-dropdown-item show-phone-flex",
|
|
82
|
+
condition: true
|
|
102
83
|
},
|
|
103
|
-
{ title: t("Home"), routeName: "home", condition: true },
|
|
104
84
|
{
|
|
105
85
|
title: t("Radio & Live"),
|
|
106
|
-
|
|
86
|
+
path:{
|
|
87
|
+
name: "lives",
|
|
88
|
+
query: getQueriesRouter(true),
|
|
89
|
+
},
|
|
90
|
+
class: "octopus-dropdown-item",
|
|
107
91
|
condition:
|
|
108
92
|
state.generalParameters.isLiveTab &&
|
|
109
93
|
((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),
|
|
110
94
|
},
|
|
111
95
|
{
|
|
112
96
|
title: t("Podcasts"),
|
|
113
|
-
|
|
97
|
+
path:{
|
|
98
|
+
name: "podcasts",
|
|
99
|
+
query: getQueriesRouter(false),
|
|
100
|
+
},
|
|
101
|
+
class: "octopus-dropdown-item",
|
|
114
102
|
condition: !props.notPodcastAndEmission,
|
|
115
103
|
},
|
|
116
104
|
{
|
|
117
105
|
title: t("Emissions"),
|
|
118
|
-
|
|
106
|
+
path:{
|
|
107
|
+
name: "emissions",
|
|
108
|
+
query: getQueriesRouter(false),
|
|
109
|
+
},
|
|
110
|
+
class: "octopus-dropdown-item",
|
|
119
111
|
condition: !props.notPodcastAndEmission,
|
|
120
112
|
},
|
|
121
113
|
{
|
|
122
114
|
title: t("Productors"),
|
|
123
|
-
|
|
115
|
+
path:{
|
|
116
|
+
name: "productors",
|
|
117
|
+
query: getQueriesRouter(true),
|
|
118
|
+
},
|
|
119
|
+
class: "octopus-dropdown-item",
|
|
124
120
|
condition:
|
|
125
121
|
!state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || props.isEducation),
|
|
126
122
|
},
|
|
127
123
|
{
|
|
128
124
|
title: t("Playlists"),
|
|
129
|
-
|
|
125
|
+
path:{
|
|
126
|
+
name: "playlists",
|
|
127
|
+
query: getQueriesRouter(true),
|
|
128
|
+
},
|
|
129
|
+
class: "octopus-dropdown-item",
|
|
130
130
|
condition: true,
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
title: t("Speakers"),
|
|
134
|
-
|
|
134
|
+
path:{
|
|
135
|
+
name: "participants",
|
|
136
|
+
query: getQueriesRouter(true),
|
|
137
|
+
},
|
|
138
|
+
class: "octopus-dropdown-item",
|
|
135
139
|
condition: true,
|
|
136
140
|
},
|
|
137
|
-
{
|
|
138
|
-
title: t("Create an account"),
|
|
139
|
-
routeName: "createAccount",
|
|
140
|
-
condition: !isAuthenticatedWithOrga.value,
|
|
141
|
-
},
|
|
142
141
|
];
|
|
143
142
|
});
|
|
144
143
|
|
|
@@ -153,12 +152,8 @@ function handleMenuClick() {
|
|
|
153
152
|
document.getElementById("mobile-menu-dropdown")?.click();
|
|
154
153
|
}, 200);
|
|
155
154
|
}
|
|
156
|
-
function getQueriesRouter(
|
|
157
|
-
if (
|
|
158
|
-
"podcasts" !== routeName &&
|
|
159
|
-
"emissions" !== routeName &&
|
|
160
|
-
"home" !== routeName
|
|
161
|
-
) {
|
|
155
|
+
function getQueriesRouter(onlyProductor:boolean) {
|
|
156
|
+
if (onlyProductor) {
|
|
162
157
|
return { productor: filterStore.filterOrgaId };
|
|
163
158
|
}
|
|
164
159
|
return {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
role="banner"
|
|
4
4
|
class="header-saooti-play"
|
|
5
5
|
:style="headerBackgroundImage"
|
|
6
|
-
:class="[generalStore.contentToDisplay ? 'header-img-bg':'
|
|
6
|
+
:class="[generalStore.contentToDisplay ? 'header-img-bg':'bg-gradient', scrolled? 'scrolled':'', needToBlur ? 'header-force-blur':'']"
|
|
7
7
|
>
|
|
8
8
|
<TopBarMainContent
|
|
9
9
|
:is-phone="isPhone"
|
|
@@ -93,7 +93,8 @@ watch(()=>generalStore.contentToDisplay, async () => {
|
|
|
93
93
|
needToBlur.value = false;
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
const
|
|
96
|
+
const widthAsked = window.innerWidth > 960 ? "1600":"1000";
|
|
97
|
+
const proxyUrl = useProxyImageUrl(generalStore.contentToDisplay.imageUrl,widthAsked, undefined, true);
|
|
97
98
|
try {
|
|
98
99
|
const result = await axios.get(proxyUrl);
|
|
99
100
|
headerBackgroundImage.value = `background-image: url('${result.data}');`;
|
|
@@ -159,15 +160,7 @@ function handleScroll(): void {
|
|
|
159
160
|
background-repeat: no-repeat;
|
|
160
161
|
background-size: cover;
|
|
161
162
|
}
|
|
162
|
-
&.
|
|
163
|
-
background: var(--octopus-primary);
|
|
164
|
-
background: linear-gradient(
|
|
165
|
-
90deg,
|
|
166
|
-
var(--octopus-primary) 0%,
|
|
167
|
-
var(--octopus-tertiary) 100%
|
|
168
|
-
);
|
|
169
|
-
}
|
|
170
|
-
&.header-color-bg, &.scrolled{
|
|
163
|
+
&.bg-gradient, &.scrolled{
|
|
171
164
|
box-shadow: 0 2px 15px 5px var(--octopus-shadow) !important;
|
|
172
165
|
}
|
|
173
166
|
}
|
|
@@ -136,12 +136,10 @@
|
|
|
136
136
|
:is-education="generalStore.platformEducation"
|
|
137
137
|
:show="mobileMenuDisplay"
|
|
138
138
|
:not-podcast-and-emission="inContentDisplayPage && !scrolled"
|
|
139
|
-
:scrolled="scrolled"
|
|
140
139
|
/>
|
|
141
140
|
<HomeDropdown
|
|
142
141
|
:is-education="generalStore.platformEducation"
|
|
143
142
|
:mobile-menu-display="mobileMenuDisplay"
|
|
144
|
-
:scrolled="scrolled"
|
|
145
143
|
/>
|
|
146
144
|
<router-link
|
|
147
145
|
v-show="!isPhone && !inContentDisplayPage"
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<nav :aria-label="navLabel">
|
|
3
|
+
<ul class="p-0 m-0">
|
|
4
|
+
<template v-if="specificRoutes.length">
|
|
5
|
+
<li v-for="routerBack in specificRoutes" :key="routerBack.path" class="li-style-none">
|
|
6
|
+
<router-link
|
|
7
|
+
v-if="!state.generalParameters.podcastmaker && routerBack.condition"
|
|
8
|
+
:class="routerBack.class"
|
|
9
|
+
:to="routerBack.path"
|
|
10
|
+
>
|
|
11
|
+
{{ routerBack.title }}
|
|
12
|
+
</router-link>
|
|
13
|
+
</li>
|
|
14
|
+
<hr v-if="displayUserContent"/>
|
|
15
|
+
</template>
|
|
16
|
+
<template v-if="displayUserContent">
|
|
17
|
+
<template v-if="!isAuthenticated">
|
|
18
|
+
<li class="li-style-none">
|
|
19
|
+
<a class="octopus-dropdown-item realLink" :href="pathLogin">
|
|
20
|
+
{{ t("Login") }}
|
|
21
|
+
</a>
|
|
22
|
+
</li>
|
|
23
|
+
<li class="li-style-none">
|
|
24
|
+
<router-link
|
|
25
|
+
v-if="!state.generalParameters.podcastmaker"
|
|
26
|
+
class="octopus-dropdown-item"
|
|
27
|
+
to="/main/pub/create"
|
|
28
|
+
>
|
|
29
|
+
{{ t("Create an account") }}
|
|
30
|
+
</router-link>
|
|
31
|
+
</li>
|
|
32
|
+
</template>
|
|
33
|
+
<template v-else>
|
|
34
|
+
<li v-for="routeBackoffice in routerBackoffice" :key="routeBackoffice.path" class="li-style-none">
|
|
35
|
+
<router-link
|
|
36
|
+
v-if="!state.generalParameters.podcastmaker && routeBackoffice.condition"
|
|
37
|
+
:class="routeBackoffice.class"
|
|
38
|
+
:to="routeBackoffice.path"
|
|
39
|
+
>
|
|
40
|
+
{{ routeBackoffice.title }}
|
|
41
|
+
</router-link>
|
|
42
|
+
</li>
|
|
43
|
+
<hr />
|
|
44
|
+
<template v-if="helpLinks.length">
|
|
45
|
+
<li v-for="helpLink in helpLinks" :key="helpLink.title" class="li-style-none">
|
|
46
|
+
<a
|
|
47
|
+
:href="helpLink.href"
|
|
48
|
+
class="octopus-dropdown-item realLink"
|
|
49
|
+
rel="noreferrer noopener"
|
|
50
|
+
target="_blank"
|
|
51
|
+
:title="t('New window', {text: helpLink.title})"
|
|
52
|
+
>
|
|
53
|
+
{{ helpLink.title }}
|
|
54
|
+
<OpenInNewIcon class="ms-1" :size="15"/>
|
|
55
|
+
</a>
|
|
56
|
+
</li>
|
|
57
|
+
<hr />
|
|
58
|
+
</template>
|
|
59
|
+
<li class="li-style-none">
|
|
60
|
+
<a class="octopus-dropdown-item c-hand" href="/logout">
|
|
61
|
+
{{ t("Logout") }}
|
|
62
|
+
</a>
|
|
63
|
+
</li>
|
|
64
|
+
</template>
|
|
65
|
+
<li class="li-style-none">
|
|
66
|
+
<router-link
|
|
67
|
+
v-if="!authStore.isGarRole"
|
|
68
|
+
class="octopus-dropdown-item"
|
|
69
|
+
to="/main/pub/contact"
|
|
70
|
+
>
|
|
71
|
+
{{ t("Contact") }}
|
|
72
|
+
</router-link>
|
|
73
|
+
</li>
|
|
74
|
+
</template>
|
|
75
|
+
</ul>
|
|
76
|
+
</nav>
|
|
77
|
+
</template>
|
|
78
|
+
|
|
79
|
+
<script setup lang="ts">
|
|
80
|
+
import OpenInNewIcon from "vue-material-design-icons/OpenInNew.vue";
|
|
81
|
+
import { state } from "../../stores/ParamSdkStore";
|
|
82
|
+
import { useAuthStore } from "../../stores/AuthStore";
|
|
83
|
+
import { computed } from "vue";
|
|
84
|
+
import { useApiStore } from "../../stores/ApiStore";
|
|
85
|
+
import { useI18n } from "vue-i18n";
|
|
86
|
+
import { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, useRoute } from "vue-router";
|
|
87
|
+
|
|
88
|
+
//Interface
|
|
89
|
+
interface RouteInfo{
|
|
90
|
+
title: string;
|
|
91
|
+
class: string;
|
|
92
|
+
path: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;
|
|
93
|
+
condition: boolean
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//Props
|
|
97
|
+
const props = defineProps({
|
|
98
|
+
isEducation: { default: false, type: Boolean },
|
|
99
|
+
navLabel: { default: "", type: String },
|
|
100
|
+
specificRoutes: { default: ()=>[], type: Array as ()=> Array<RouteInfo> },
|
|
101
|
+
displayUserContent: { default: true, type: Boolean },
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
//Composables
|
|
105
|
+
const { t } = useI18n();
|
|
106
|
+
const authStore = useAuthStore();
|
|
107
|
+
const apiStore = useApiStore();
|
|
108
|
+
const route = useRoute();
|
|
109
|
+
|
|
110
|
+
//Computed
|
|
111
|
+
const isAuthenticated = computed(() => undefined !== authStore.authProfile?.userId);
|
|
112
|
+
const pathLogin = computed(() => "/sso/login?redirect_url="+encodeURI(apiStore.frontendUrl + route.fullPath));
|
|
113
|
+
const isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);
|
|
114
|
+
const organisationsAvailable = computed(() => authStore.authProfile?.organisations ?? []);
|
|
115
|
+
|
|
116
|
+
const helpLinks = computed(() => {
|
|
117
|
+
if (authStore.isGarRole || props.isEducation) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
return [
|
|
121
|
+
{ title:t("Help"), href: "https://help.octopus.saooti.com/Aide/"},
|
|
122
|
+
{ title: t("TutoMag"), href: "https://help.octopus.saooti.com/" },
|
|
123
|
+
];
|
|
124
|
+
});
|
|
125
|
+
const routerBackoffice = computed(() => {
|
|
126
|
+
if(!isAuthenticated.value){
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
return [
|
|
130
|
+
{
|
|
131
|
+
title: t("My space"),
|
|
132
|
+
class: "octopus-dropdown-item show-small-screen",
|
|
133
|
+
path: "/main/priv/backoffice",
|
|
134
|
+
condition: isAuthenticatedWithOrga.value,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
title: t("Upload"),
|
|
138
|
+
class: "octopus-dropdown-item show-small-screen",
|
|
139
|
+
path: "/main/priv/upload",
|
|
140
|
+
condition: isAuthenticatedWithOrga.value && authStore.isRoleContribution,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
title: t("Edit my profile"),
|
|
144
|
+
class: "octopus-dropdown-item",
|
|
145
|
+
path: "/main/priv/edit/profile",
|
|
146
|
+
condition: true,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
title: t("Edit my organisation"),
|
|
150
|
+
class: "octopus-dropdown-item",
|
|
151
|
+
path: "/main/priv/edit/organisation",
|
|
152
|
+
condition:
|
|
153
|
+
isAuthenticatedWithOrga.value &&
|
|
154
|
+
(authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
</script>
|
|
@@ -89,7 +89,7 @@ onUnmounted(()=>{
|
|
|
89
89
|
async function fetchCurrentlyPlaying(): Promise<void> {
|
|
90
90
|
fetchRadioMetadata(
|
|
91
91
|
playerStore.playerRadio?.canalId ?? 0,
|
|
92
|
-
playerStore.playerRadio?.metadata
|
|
92
|
+
playerStore.playerRadio?.metadata?.title ?? "",
|
|
93
93
|
updateMetadata,
|
|
94
94
|
updateAdvertising,
|
|
95
95
|
);
|
|
@@ -98,11 +98,11 @@ function updateAdvertising(nextAdvertising: NextAdvertising): void {
|
|
|
98
98
|
playerStore.playerRadioUpdateNextAdvertising(nextAdvertising);
|
|
99
99
|
}
|
|
100
100
|
function updateMetadata(
|
|
101
|
-
metadata: MediaRadio,
|
|
101
|
+
metadata: MediaRadio|undefined,
|
|
102
102
|
podcast: Podcast | undefined,
|
|
103
103
|
history: Array<MediaRadio>,
|
|
104
104
|
): void {
|
|
105
|
-
playerStore.playerMetadata(metadata, history);
|
|
105
|
+
playerStore.playerMetadata(metadata, history); //TODO
|
|
106
106
|
playerStore.playerRadioPodcast(podcast);
|
|
107
107
|
}
|
|
108
108
|
</script>
|
|
@@ -40,10 +40,10 @@ import ChevronLeftIcon from "vue-material-design-icons/ChevronLeft.vue";
|
|
|
40
40
|
import ChevronRightIcon from "vue-material-design-icons/ChevronRight.vue";
|
|
41
41
|
import { usePlayerStore } from "../../../../stores/PlayerStore";
|
|
42
42
|
import dayjs from "dayjs";
|
|
43
|
-
import radioHelper from "../../../../helper/radio/radioHelper";
|
|
44
43
|
import { computed, nextTick, onMounted, onUnmounted, ref, useTemplateRef, watch } from "vue";
|
|
45
44
|
import { MediaRadio } from "@/stores/class/general/player";
|
|
46
45
|
import { useI18n } from "vue-i18n";
|
|
46
|
+
import { useFetchRadio } from "../../../composable/radio/usefetchRadioData";
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
//Data
|
|
@@ -54,6 +54,7 @@ const historyListContainerRef = useTemplateRef('historyListContainer');
|
|
|
54
54
|
//Composables
|
|
55
55
|
const { t } = useI18n();
|
|
56
56
|
const playerStore = usePlayerStore();
|
|
57
|
+
const {displayTitle} = useFetchRadio();
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
//Computed
|
|
@@ -119,7 +120,7 @@ function displayPreviousItem(item: MediaRadio): string {
|
|
|
119
120
|
if (item.podcastId) {
|
|
120
121
|
return item.title;
|
|
121
122
|
}
|
|
122
|
-
return
|
|
123
|
+
return displayTitle(item);
|
|
123
124
|
}
|
|
124
125
|
</script>
|
|
125
126
|
<style lang="scss">
|
|
@@ -39,10 +39,10 @@ const playerStore = usePlayerStore();
|
|
|
39
39
|
//Computed
|
|
40
40
|
const isSecured = computed(() => "SECURED" === playerStore.playerLive?.organisation?.privacy);
|
|
41
41
|
const hlsVideoUrl = computed(() => {
|
|
42
|
-
if (!playerStore.
|
|
42
|
+
if (!playerStore.playerHlsIdentifier) {
|
|
43
43
|
return "";
|
|
44
44
|
}
|
|
45
|
-
return `${apiStore.hlsUrl}live/
|
|
45
|
+
return `${apiStore.hlsUrl}live/video_${playerStore.playerHlsIdentifier}/index.m3u8`;
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
onMounted(()=>{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section
|
|
3
|
-
class="page-box page-box-absolute page-logout"
|
|
3
|
+
class="page-box page-box-absolute page-logout bg-gradient"
|
|
4
4
|
>
|
|
5
5
|
<div class="logout-section">
|
|
6
6
|
<h1 class="mb-3">{{ t("Logout") }}</h1>
|
|
@@ -19,11 +19,6 @@ const { t } = useI18n();
|
|
|
19
19
|
</script>
|
|
20
20
|
<style lang="scss">
|
|
21
21
|
.octopus-app .page-logout {
|
|
22
|
-
background: linear-gradient(
|
|
23
|
-
90deg,
|
|
24
|
-
var(--octopus-primary) 0%,
|
|
25
|
-
var(--octopus-tertiary) 100%
|
|
26
|
-
);
|
|
27
22
|
display: flex;
|
|
28
23
|
align-items: center;
|
|
29
24
|
justify-content: center;
|
|
@@ -193,7 +193,7 @@ const hlsVideoUrl = computed(() => {
|
|
|
193
193
|
if (!recordingLive.value || !podcastConference.value) {
|
|
194
194
|
return "";
|
|
195
195
|
}
|
|
196
|
-
return `${apiStore.hlsUrl}live/
|
|
196
|
+
return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;
|
|
197
197
|
});
|
|
198
198
|
const isSecured = computed(() => {
|
|
199
199
|
return "SECURED" === podcast.value?.organisation?.privacy;
|
|
@@ -255,7 +255,10 @@ async function getPodcastDetails(): Promise<void> {
|
|
|
255
255
|
playerStore.playerPlay(
|
|
256
256
|
{
|
|
257
257
|
...podcast.value,
|
|
258
|
-
...{
|
|
258
|
+
...{
|
|
259
|
+
conferenceId: podcast.value.conferenceId,
|
|
260
|
+
hlsIdentifier: podcastConference.value?.hlsIdentifier,
|
|
261
|
+
},
|
|
259
262
|
},
|
|
260
263
|
true,
|
|
261
264
|
);
|
package/src/locale/de.ts
CHANGED
|
@@ -146,8 +146,8 @@ export default {
|
|
|
146
146
|
"Sort score": "Nach Relevanz",
|
|
147
147
|
"Sort name": "Nach Titel",
|
|
148
148
|
"Sort last": "Nach Datum",
|
|
149
|
-
"Choose color": "
|
|
150
|
-
"Choose theme": "
|
|
149
|
+
"Choose color": "Akzentfarbe",
|
|
150
|
+
"Choose theme": "Thema (Spielerhintergrund)",
|
|
151
151
|
"Podcast no visible": "Podcast nicht sichtbar",
|
|
152
152
|
"Display episodes": "Folgen anzeigen",
|
|
153
153
|
"Podcast published in future": "Podcast geplant",
|
|
@@ -167,7 +167,6 @@ export default {
|
|
|
167
167
|
"open left Menu": "Menü öffnen/schließen",
|
|
168
168
|
Participant: "Sprecher",
|
|
169
169
|
"Number of player podcasts": "Anzahl der Podcasts im Player",
|
|
170
|
-
"Proceed reading": "Weiterhören",
|
|
171
170
|
"Without topic": "Ohne Thema",
|
|
172
171
|
"Without rubric": "Ohne Rubrik",
|
|
173
172
|
"Consider podcasts no visible":
|
|
@@ -414,4 +413,5 @@ export default {
|
|
|
414
413
|
"Code copied!":"Code kopiert!",
|
|
415
414
|
"Copied!":"Kopiert!",
|
|
416
415
|
"Color of the QR Code": "Farbe des QR-Codes",
|
|
416
|
+
"Silent stream":"Stiller Fluss",
|
|
417
417
|
}
|
package/src/locale/en.ts
CHANGED
|
@@ -145,8 +145,8 @@ export default {
|
|
|
145
145
|
"Sort score": "Sorted by relevancy score",
|
|
146
146
|
"Sort name": "Sorted title",
|
|
147
147
|
"Sort last": "Sorted last",
|
|
148
|
-
"Choose color": "
|
|
149
|
-
"Choose theme": "
|
|
148
|
+
"Choose color": "Accent color",
|
|
149
|
+
"Choose theme": "Theme (player background)",
|
|
150
150
|
"Podcast no visible": "Podcast not visible",
|
|
151
151
|
"Display episodes": "Display episodes",
|
|
152
152
|
"Podcast published in future": "Podcast published in the future",
|
|
@@ -166,7 +166,6 @@ export default {
|
|
|
166
166
|
"open left Menu": "Open/Close Menu",
|
|
167
167
|
Participant: "Speaker",
|
|
168
168
|
"Number of player podcasts": "Number of podcasts in the player ",
|
|
169
|
-
"Proceed reading": "Continue Listening",
|
|
170
169
|
"Without topic": "Without a topic",
|
|
171
170
|
"Without rubric": "Without a rubric",
|
|
172
171
|
"Consider podcasts no visible":
|
|
@@ -417,4 +416,5 @@ export default {
|
|
|
417
416
|
"Code copied!":"Code copied!",
|
|
418
417
|
"Copied!":"Copied!",
|
|
419
418
|
"Color of the QR Code": "Color of the QR Code",
|
|
419
|
+
"Silent stream":"Silent stream",
|
|
420
420
|
};
|
package/src/locale/es.ts
CHANGED
|
@@ -145,8 +145,8 @@ export default {
|
|
|
145
145
|
"Sort score": "Clasificación por pertinencia",
|
|
146
146
|
"Sort name": "Clasificación por título",
|
|
147
147
|
"Sort last": "Clasificación por fecha más reciente",
|
|
148
|
-
"Choose color": "
|
|
149
|
-
"Choose theme": "
|
|
148
|
+
"Choose color": "Color de acento",
|
|
149
|
+
"Choose theme": "Tema (fondo del jugador)",
|
|
150
150
|
"Podcast no visible": "Este pódcast no puede visualizarse",
|
|
151
151
|
"Display episodes": "Mostrar episodios",
|
|
152
152
|
"Podcast published in future": "Pódcast pendiente de publicación",
|
|
@@ -167,7 +167,6 @@ export default {
|
|
|
167
167
|
"open left Menu": "Abrir/Cerrar menú",
|
|
168
168
|
Participant: "Participante",
|
|
169
169
|
"Number of player podcasts": "Número de pódcast en el reproductor",
|
|
170
|
-
"Proceed reading": "Seguir escuchando",
|
|
171
170
|
"Without topic": "Sin tema",
|
|
172
171
|
"Without rubric": "Sin sección",
|
|
173
172
|
"Consider podcasts no visible":
|
|
@@ -415,4 +414,5 @@ export default {
|
|
|
415
414
|
"Code copied!":"¡Código copiado!",
|
|
416
415
|
"Copied!":"¡Copiado!",
|
|
417
416
|
"Color of the QR Code": "Color del código QR",
|
|
417
|
+
"Silent stream":"Flujo silencioso",
|
|
418
418
|
}
|
package/src/locale/fr.ts
CHANGED
|
@@ -146,8 +146,8 @@ export default {
|
|
|
146
146
|
"Sort score": "Pertinence",
|
|
147
147
|
"Sort name": "Alphabétique",
|
|
148
148
|
"Sort last": "Antéchronologique",
|
|
149
|
-
"Choose color": "Couleur",
|
|
150
|
-
"Choose theme": "Thème",
|
|
149
|
+
"Choose color": "Couleur d'accent",
|
|
150
|
+
"Choose theme": "Thème (fond du player)",
|
|
151
151
|
"Podcast no visible": "Épisode non visible actuellement",
|
|
152
152
|
"Display episodes": "Affichage des épisodes",
|
|
153
153
|
"Podcast publish in future": "Épisode publié dans le futur",
|
|
@@ -168,7 +168,6 @@ export default {
|
|
|
168
168
|
"open left Menu": "Ouvrir/Fermer le menu",
|
|
169
169
|
Participant: "Intervenant",
|
|
170
170
|
"Number of player podcasts": "Nombre d'épisodes dans le miniplayer",
|
|
171
|
-
"Proceed reading": "Poursuivre la lecture",
|
|
172
171
|
"Without topic": "Sans rubriquage",
|
|
173
172
|
"Without rubric": "Non rubriqué",
|
|
174
173
|
"Consider podcasts no visible":
|
|
@@ -424,4 +423,5 @@ export default {
|
|
|
424
423
|
"Code copied!":"Code copié !",
|
|
425
424
|
"Copied!":"Copié !",
|
|
426
425
|
"Color of the QR Code": "Couleur du Qr Code",
|
|
426
|
+
"Silent stream":"Flux silencieux",
|
|
427
427
|
};
|
package/src/locale/it.ts
CHANGED
|
@@ -141,8 +141,8 @@ export default{
|
|
|
141
141
|
'Sort score': 'Suddiviso per grado di rilevanza',
|
|
142
142
|
'Sort name': 'Suddividi titolo',
|
|
143
143
|
'Sort last': 'Suddividi ultimo',
|
|
144
|
-
'Choose color': '
|
|
145
|
-
'Choose theme': '
|
|
144
|
+
'Choose color': 'Colore accento',
|
|
145
|
+
'Choose theme': 'Tema (sfondo del giocatore)',
|
|
146
146
|
'Podcast no visible': 'Podcast non visibile',
|
|
147
147
|
'Display episodes': 'Mostra episodi',
|
|
148
148
|
'Podcast published in future': 'Podcast pubblicato in futuro',
|
|
@@ -163,7 +163,6 @@ export default{
|
|
|
163
163
|
'open left Menu': 'Apri/Chiudi Menu',
|
|
164
164
|
Participant: 'Speaker',
|
|
165
165
|
'Number of player podcasts': "Numero di podcast nel lettore",
|
|
166
|
-
'Proceed reading': 'Continua ad ascoltare',
|
|
167
166
|
'Without topic': 'Senza un tema',
|
|
168
167
|
'Without rubric': 'Senza una rubrica',
|
|
169
168
|
'Consider podcasts no visible':
|
|
@@ -411,4 +410,5 @@ export default{
|
|
|
411
410
|
"Code copied!":"Codice copiato!",
|
|
412
411
|
"Copied!":"Copiato!",
|
|
413
412
|
"Color of the QR Code": "Colore del codice QR",
|
|
413
|
+
"Silent stream":"Flusso silenzioso",
|
|
414
414
|
};
|