@saooti/octopus-sdk 36.0.11 → 36.0.13

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/index.ts CHANGED
@@ -13,6 +13,7 @@ export const getHome = () => import("./src/components/pages/Home.vue");
13
13
  export const getCategory = () => import("./src/components/pages/Category.vue");
14
14
  export const getRubrique = () => import("./src/components/pages/Rubrique.vue");
15
15
  export const getError403Page = () => import("./src/components/pages/Error403Page.vue");
16
+ export const getRadio = () => import("./src/components/pages/Radio.vue");
16
17
 
17
18
  //Misc
18
19
  export const getAccordion = () => import("./src/components/misc/Accordion.vue");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "36.0.11",
3
+ "version": "36.0.13",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -244,7 +244,7 @@ export default defineComponent({
244
244
  if (
245
245
  undefined !== this.podcast &&(
246
246
  (this.playerPodcast?.podcastId ===this.podcast.podcastId) ||
247
- (this.playerLive?.livePodcastId ===this.podcast.podcastId))
247
+ (this.playerLive?.podcastId ===this.podcast.podcastId))
248
248
  ) {
249
249
  timeline = Math.round(
250
250
  this.playerElapsed * this.playerTotal
@@ -10,7 +10,11 @@
10
10
  v-for="(obj, index) in listObject"
11
11
  :key="obj"
12
12
  >
13
- <slot name="octopusSlide" :option="obj" :index="index"/>
13
+ <slot
14
+ name="octopusSlide"
15
+ :option="obj"
16
+ :index="index"
17
+ />
14
18
  </swiper-slide>
15
19
  </swiper>
16
20
  </template>
@@ -2,7 +2,7 @@
2
2
  <PodcastItem
3
3
  v-if="live && 0!==live.podcastId"
4
4
  :podcast="live"
5
- :fetchConference="fetchConference"
5
+ :fetch-conference="fetchConference"
6
6
  />
7
7
  </template>
8
8
 
@@ -4,7 +4,9 @@
4
4
  class="d-flex flex-column align-items-start mt-3"
5
5
  >
6
6
  <div class="d-flex justify-content-between amlign-items-center">
7
- <h2 class="mb-0 big-h2 mb-3">{{ $t('Live') }}</h2>
7
+ <h2 class="mb-0 big-h2 mb-3">
8
+ {{ $t('Live') }}
9
+ </h2>
8
10
  <router-link
9
11
  v-if="liveRight && !isPodcastmaker"
10
12
  to="/main/priv/edit/live"
@@ -19,7 +21,7 @@
19
21
  v-model:textInit="selectedStatus"
20
22
  id-select="status-live-chooser-select"
21
23
  :label="$t('Selection by status')"
22
- :displayLabel="false"
24
+ :display-label="false"
23
25
  :options="statusArraySelect"
24
26
  class="mb-3"
25
27
  />
@@ -30,7 +32,7 @@
30
32
  <template v-if="lives.length">
31
33
  <SwiperList
32
34
  v-if="!loading"
33
- :listObject="lives"
35
+ :list-object="lives"
34
36
  >
35
37
  <template #octopusSlide="{option, index}">
36
38
  <LiveItem
@@ -1,6 +1,11 @@
1
1
  <template>
2
2
  <div class="d-flex align-items-center">
3
- <div v-if="currentlyPlayingString.length || podcastRadio" class="me-2 fw-bold">{{$t('Currently') +' : '}}</div>
3
+ <div
4
+ v-if="currentlyPlayingString.length || podcastRadio"
5
+ class="me-2 fw-bold"
6
+ >
7
+ {{ $t('Currently') +' : ' }}
8
+ </div>
4
9
  <router-link
5
10
  v-if="podcastRadio"
6
11
  class="d-flex align-items-center"
@@ -8,18 +13,21 @@
8
13
  name: 'podcast',
9
14
  params: { podcastId: podcastRadio.podcastId },
10
15
  query: { productor: filterOrgaId },
11
- }">
12
- <img
13
- v-lazy="proxyImageUrl(podcastRadio.imageUrl, '80')"
14
- width="80"
15
- height="80"
16
- class="small-img-box"
17
- :title="$t('Episode name image', {name:podcastRadio.title})"
18
- :alt="$t('Episode name image', {name:podcastRadio.title})"
19
- >
20
- <div>{{podcastRadio.title}}</div>
21
- </router-link>
22
- <div v-else-if="currentlyPlayingString.length">{{currentlyPlayingString}}</div>
16
+ }"
17
+ >
18
+ <img
19
+ v-lazy="proxyImageUrl(podcastRadio.imageUrl, '80')"
20
+ width="80"
21
+ height="80"
22
+ class="small-img-box"
23
+ :title="$t('Episode name image', {name:podcastRadio.title})"
24
+ :alt="$t('Episode name image', {name:podcastRadio.title})"
25
+ >
26
+ <div>{{ podcastRadio.title }}</div>
27
+ </router-link>
28
+ <div v-else-if="currentlyPlayingString.length">
29
+ {{ currentlyPlayingString }}
30
+ </div>
23
31
  </div>
24
32
  </template>
25
33
 
@@ -80,7 +88,7 @@ export default defineComponent({
80
88
  this.fetchCurrentlyPlaying();
81
89
  this.radioInterval = setInterval(() => {
82
90
  this.fetchCurrentlyPlaying();
83
- }, 1000);
91
+ }, 5000);
84
92
  },
85
93
  methods: {
86
94
  async fetchCurrentlyPlaying(): Promise<void>{
@@ -12,7 +12,7 @@
12
12
  class="image-play-button"
13
13
  @click="playRadio"
14
14
  >
15
- <div class="icon-container">
15
+ <div class="icon-container">
16
16
  <div
17
17
  v-if="!playingRadio"
18
18
  :title="$t('Play')"
@@ -29,7 +29,7 @@
29
29
  <div class="ms-2">
30
30
  {{ playText }}
31
31
  </div>
32
- </div>
32
+ </div>
33
33
  </button>
34
34
  </div>
35
35
  </template>
@@ -1,6 +1,9 @@
1
1
  <template>
2
- <div v-if="radio" class="d-flex border w-100 p-3">
3
- <RadioImage :radio="radio"/>
2
+ <div
3
+ v-if="radio"
4
+ class="d-flex border w-100 p-3"
5
+ >
6
+ <RadioImage :radio="radio" />
4
7
  <router-link
5
8
  :to="{
6
9
  name: 'radio',
@@ -9,9 +12,16 @@
9
12
  }"
10
13
  class="text-dark emission-item-text"
11
14
  >
12
- <div class="emission-name mb-2">{{ radio.name }}</div>
13
- <div v-if="radio.description" class="ten-line-clamp">{{ radio.description }}</div>
14
- <RadioCurrently :radio="radio"/>
15
+ <div class="emission-name mb-2">
16
+ {{ radio.name }}
17
+ </div>
18
+ <div
19
+ v-if="radio.description"
20
+ class="ten-line-clamp"
21
+ >
22
+ {{ radio.description }}
23
+ </div>
24
+ <RadioCurrently :radio="radio" />
15
25
  </router-link>
16
26
  </div>
17
27
  </template>
@@ -3,7 +3,9 @@
3
3
  v-if="(filterOrgaId || organisationId) && radio.length"
4
4
  class="d-flex flex-column align-items-start mt-3"
5
5
  >
6
- <h2 class="mb-0 big-h2 mb-3">{{ $t('Radio') }}</h2>
6
+ <h2 class="mb-0 big-h2 mb-3">
7
+ {{ $t('Radio') }}
8
+ </h2>
7
9
  <template v-if="radio.length">
8
10
  <RadioItem
9
11
  v-for="radioItem in radio"
@@ -25,7 +27,7 @@ import { Canal } from '@/stores/class/radio/canal';
25
27
  import { defineComponent } from 'vue'
26
28
  import { AxiosError } from 'axios';
27
29
  export default defineComponent({
28
- name: 'ecbd98d9-79bd-4312-ad5e-fc7c1c4a191c',
30
+ name: 'Ecbd98d979bd4312Ad5eFc7c1c4a191c',
29
31
  components: {
30
32
  RadioItem,
31
33
  },
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <div class="module-box">
3
+ <h2 class="big-h2 mb-3 height-40">{{ $t('Program') }}</h2>
4
+ <div class="border">
5
+ <div class="d-flex align-items-center w-100">
6
+ <button
7
+ v-for="day in arrayDays"
8
+ :key="day.date"
9
+ class="d-flex flex-column align-items-center flex-grow-1"
10
+ :class="day.date==daySelected?'bg-primary text-white':''"
11
+ @click="changeDate(day.date)"
12
+ >
13
+ <span class="text-capitalize">{{day.dayOfWeek}}</span>
14
+ <span>{{day.title}}</span>
15
+ </button>
16
+ </div>
17
+ <div class="d-flex flex-column p-3">
18
+ <ClassicLoading
19
+ :loading-text="loading?$t('Loading content ...'):undefined"
20
+ :error-text="error?$t(`Error`):undefined"
21
+ />
22
+ <template v-if="!loading && !error">
23
+ <div v-if="!planning[daySelected].length" class="text-center">{{$t('No programming')}}</div>
24
+ <div
25
+ v-else
26
+ v-for="planningItem in planning[daySelected]"
27
+ :key="planningItem.occurrence.occurrenceId"
28
+ class="d-flex align-items-center mb-3"
29
+ >
30
+ <div class="program-item-date fw-bold flex-shrink-0">{{dateDisplay(planningItem.occurrence.startDate)}}</div>
31
+ <component
32
+ :is="planningItem.podcast.availability.visibility ? 'router-link' : 'div'"
33
+ class="d-flex align-items-center text-dark"
34
+ :to="{
35
+ name: 'podcast',
36
+ params: { podcastId: planningItem.podcast.podcastId },
37
+ query: { productor: filterOrgaId },
38
+ }"
39
+ >
40
+ <img
41
+ v-lazy="proxyImageUrl(planningItem.podcast.imageUrl, '150')"
42
+ width="150"
43
+ height="150"
44
+ class="m-2"
45
+ :title="$t('Episode name image', {name:planningItem.podcast.title})"
46
+ :alt="$t('Episode name image', {name:planningItem.podcast.title})"
47
+ >
48
+ <div class="d-flex flex-column">
49
+ <div class="flex-grow-1 text-truncate mb-2">{{planningItem.occurrence.podcastData.title}}</div>
50
+ <ParticipantDescription
51
+ :participants="planningItem.podcast.animators"
52
+ />
53
+ </div>
54
+ </component>
55
+
56
+ </div>
57
+ </template>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </template>
62
+
63
+ <script lang="ts">
64
+ import { useFilterStore } from '@/stores/FilterStore';
65
+ import { mapState } from 'pinia';
66
+ import dayjs from 'dayjs';
67
+ import utc from 'dayjs/plugin/utc';
68
+ dayjs.extend(utc);
69
+ import octopusApi from '@saooti/octopus-api';
70
+ import imageProxy from '../../mixins/imageProxy';
71
+ import ParticipantDescription from '../podcasts/ParticipantDescription.vue';
72
+ import ClassicLoading from '../../form/ClassicLoading.vue';
73
+ import { defineComponent } from 'vue';
74
+ import { Canal } from '@/stores/class/radio/canal';
75
+ import { PlanningOccurrence } from '@/stores/class/radio/recurrence';
76
+ import { Podcast } from '@/stores/class/general/podcast';
77
+ export default defineComponent({
78
+ name: 'RadioPlanning',
79
+
80
+ components: {
81
+ ClassicLoading,
82
+ ParticipantDescription
83
+ },
84
+
85
+ props: {
86
+ radio: { default: undefined, type: Object as ()=>Canal},
87
+ },
88
+
89
+ mixins: [imageProxy],
90
+
91
+ data() {
92
+ return {
93
+ planning: {} as {[key: number]:Array<{podcast: Podcast, occurrence: PlanningOccurrence}>},
94
+ daySelected: dayjs().valueOf(),
95
+ arrayDays: [] as Array<{title: string, date: number, dayOfWeek: string }>,
96
+ loading: true as boolean,
97
+ error: false as boolean,
98
+ };
99
+ },
100
+
101
+ computed:{
102
+ ...mapState(useFilterStore, ['filterOrgaId']),
103
+ startOfDay(): number{
104
+ return dayjs(this.daySelected).utcOffset(0).startOf('date').valueOf();
105
+ },
106
+ endOfDay(): number{
107
+ return dayjs(this.daySelected).utcOffset(0).endOf('date').valueOf();
108
+ },
109
+ },
110
+
111
+ mounted(){
112
+ this.createArrayDays();
113
+ this.fetchOccurrences();
114
+ },
115
+
116
+ methods: {
117
+ createArrayDays(){
118
+ for (let index = -7; index < 3; index++) {
119
+ const dayToAdd = dayjs().add(index, 'day');
120
+ if(0===index){
121
+ this.daySelected = dayToAdd.valueOf();
122
+ }
123
+ this.arrayDays.push({title: dayToAdd.format('D/MM'), dayOfWeek:dayToAdd.format('dddd'), date : dayToAdd.valueOf()});
124
+ }
125
+ },
126
+ async fetchOccurrences(): Promise<void>{
127
+ if(this.planning[this.daySelected]){return;}
128
+ this.loading = true;
129
+ this.error = false;
130
+ try {
131
+ const occurrences = await octopusApi.fetchDataWithParams<Array<PlanningOccurrence>>( 14, 'planning/occurrence/list',{
132
+ canalId: this.radio?.id,
133
+ from: this.startOfDay,
134
+ to: this.endOfDay
135
+ });
136
+ this.planning[this.daySelected] = [];
137
+ for (let oc of occurrences) {
138
+ if(oc.podcastId){
139
+ const data : Podcast = await octopusApi.fetchData<Podcast>(0, 'podcast/'+oc.podcastId);
140
+ this.planning[this.daySelected].push({podcast: data, occurrence:oc});
141
+ }
142
+ }
143
+ } catch {
144
+ this.error = true;
145
+ }
146
+ this.loading = false;
147
+ },
148
+ changeDate(date: number){
149
+ this.daySelected = date;
150
+ this.fetchOccurrences();
151
+ },
152
+ dateDisplay(date: Date): string{
153
+ return dayjs(date).format('HH:mm:ss');
154
+ }
155
+ },
156
+ })
157
+ </script>
158
+ <style lang="scss">
159
+ .octopus-app{
160
+ .program-item-date{
161
+ width: 100px;
162
+ }
163
+ }
164
+ </style>
@@ -113,7 +113,7 @@ export default defineComponent({
113
113
  size: this.dsize,
114
114
  query: this.query,
115
115
  organisationId: this.organisation,
116
- ambiance:"NONE",
116
+ ambianceType:"NONE",
117
117
  sort: this.sort,
118
118
  };
119
119
  try {
@@ -266,14 +266,7 @@ export default defineComponent({
266
266
  if (!this.recordingLive) {
267
267
  this.playerPlay(this.podcast);
268
268
  }else{
269
- this.playerPlay({
270
- title: this.podcast.title,
271
- audioUrl: this.podcast.audioUrl,
272
- duration: this.podcast.duration,
273
- conferenceId: this.fetchConference?.conferenceId,
274
- livePodcastId: this.podcast.podcastId,
275
- organisation: this.podcast.organisation,
276
- });
269
+ this.playerPlay({...this.podcast, ...{conferenceId:this.fetchConference?.conferenceId}});
277
270
  }
278
271
  if(this.clickPlayGoPage){
279
272
  this.$router.push('/main/pub/podcast/'+this.podcast.podcastId);
@@ -322,7 +315,7 @@ export default defineComponent({
322
315
  background-color: rgba(255, 255, 255, 0.5);
323
316
  }
324
317
 
325
- .play-button-error-icon {
318
+ .image-play-button .play-button-error-icon {
326
319
  background: #0000009d !important;
327
320
  cursor: default !important;
328
321
  align-self: center;
@@ -12,7 +12,7 @@
12
12
  :hide-play="!podcastItemDescription || (podcastItemDescription && (!hoverDesc || !description))"
13
13
  :display-description="0!==description.length && podcastItemDescription"
14
14
  :arrow-direction="arrowDirection"
15
- :fetchConference="fetchConference"
15
+ :fetch-conference="fetchConference"
16
16
  @hideDescription="hideDescription"
17
17
  @showDescription="showDescription"
18
18
  />
@@ -20,7 +20,7 @@
20
20
  />
21
21
  <SwiperList
22
22
  v-if="!loading"
23
- :listObject="allPodcasts"
23
+ :list-object="allPodcasts"
24
24
  >
25
25
  <template #octopusSlide="{option}">
26
26
  <PodcastItem
@@ -41,7 +41,6 @@ import Popover from '../../misc/Popover.vue';
41
41
  import ShareButtonsIntern from './ShareButtonsIntern.vue';
42
42
  import { defineComponent } from 'vue';
43
43
  import { Playlist } from '@/stores/class/general/playlist';
44
- import { Canal } from '@/stores/class/radio/canal';
45
44
  export default defineComponent({
46
45
  components: {
47
46
  ShareButtonsIntern,
@@ -32,9 +32,9 @@
32
32
  :organisation-id="organisationId"
33
33
  />
34
34
  <SharePlayerColors
35
- class="mt-3"
36
35
  v-model:color="color"
37
36
  v-model:theme="theme"
37
+ class="mt-3"
38
38
  />
39
39
  <ClassicCheckbox
40
40
  v-if="isPodcastNotVisible || playlist"
@@ -3,16 +3,16 @@
3
3
  <h2 class="big-h2 mb-3 height-40">
4
4
  {{ $t('Embed') }}
5
5
  </h2>
6
- <div class="d-flex">
7
- <iframe
8
- id="miniplayerIframeRadio"
9
- title="miniplayer"
10
- :src="iFrameSrc"
11
- width="100%"
12
- height="140px"
13
- class="max-iframe mx-3 flex-grow-1"
14
- />
15
- <div class="d-flex flex-column flex-grow-1 align-items-center">
6
+ <div class="d-flex">
7
+ <iframe
8
+ id="miniplayerIframeRadio"
9
+ title="miniplayer"
10
+ :src="iFrameSrc"
11
+ width="100%"
12
+ height="140px"
13
+ class="max-iframe mx-3 flex-grow-1"
14
+ />
15
+ <div class="d-flex flex-column flex-grow-1 align-items-center">
16
16
  <SharePlayerColors
17
17
  v-model:color="color"
18
18
  v-model:theme="theme"
@@ -70,7 +70,7 @@ export const playerComment = defineComponent({
70
70
  podcastId = this.playerPodcast.podcastId;
71
71
  organisation = this.playerPodcast.organisation.id;
72
72
  } else if (this.playerLive) {
73
- podcastId = this.playerLive.livePodcastId;
73
+ podcastId = this.playerLive.podcastId;
74
74
  organisation = this.playerLive.organisation.id;
75
75
  }
76
76
  if (
@@ -61,17 +61,17 @@ export const playerLive = defineComponent({
61
61
  }
62
62
  },
63
63
  async initLiveDownloadId(){
64
- if(!this.playerLive){ return;}
65
- let downloadId = null;
64
+ if(!this.playerLive || this.downloadId){ return;}
66
65
  try {
67
- downloadId = await octopusApi.putDataPublic<string | null>(0, 'podcast/prepare/live/'+this.playerLive.livePodcastId, undefined);
68
- await octopusApi.fetchDataPublicWithParams<string | null>(0,'podcast/download/live/' + this.playerLive.livePodcastId+".m3u8",{
66
+ let downloadId = await octopusApi.putDataPublic<string | null>(0, 'podcast/prepare/live/'+this.playerLive.podcastId, undefined);
67
+ await octopusApi.fetchDataPublicWithParams<string | null>(0,'podcast/download/live/' +this.playerLive.podcastId +".m3u8",{
69
68
  'downloadId': null!==downloadId ? downloadId : undefined,
70
69
  'origin':'octopus',
71
70
  'distributorId':this.authOrgaId
72
71
  });
73
72
  this.setDownloadId(downloadId);
74
73
  } catch (error) {
74
+ this.downloadId = null;
75
75
  console.log('ERROR downloadId');
76
76
  }
77
77
  this.hlsReady = true;
@@ -20,8 +20,6 @@ export const fetchRadioData = defineComponent({
20
20
  for(let i = 0; i < arrayMetadata.length; i++){
21
21
  if(dayjs().valueOf()-29000 > dayjs(arrayMetadata[i].startDate).valueOf()){
22
22
  if(previousTitle !== arrayMetadata[i].title){
23
- //todo
24
- arrayMetadata[i].podcastId = 98619;
25
23
  if(arrayMetadata[i].podcastId){
26
24
  const data : Podcast = await octopusApi.fetchData<Podcast>(0, 'podcast/'+arrayMetadata[i].podcastId);
27
25
  callbackMetadata(arrayMetadata[i], data);
@@ -10,9 +10,9 @@
10
10
  />
11
11
  </template>
12
12
  <template v-if="filterOrgaId || organisationId">
13
- <!-- <LiveList
13
+ <LiveList
14
14
  :organisation-id="organisationId"
15
- /> -->
15
+ />
16
16
  <RadioList
17
17
  :organisation-id="organisationId"
18
18
  />
@@ -105,7 +105,7 @@ export default defineComponent({
105
105
  return this.playlistRadio ? this.$t('Mix of episodes'):this.$t('Playlist');
106
106
  },
107
107
  playlistRadio(): boolean{
108
- return "AMBIANCE"===this.playlist?.ambiance || "PROGRAMMED"===this.playlist?.ambiance
108
+ return "AMBIANCE"===this.playlist?.ambianceType || "AMBIANCE_PROGRAMMED"===this.playlist?.ambianceType
109
109
  },
110
110
  name(): string {
111
111
  return this.playlist?.title ??'';
@@ -10,25 +10,33 @@
10
10
  :style="backgroundDisplay"
11
11
  />
12
12
  </div>
13
- <div v-if="radio" class="d-flex flex-column page-element">
13
+ <div
14
+ v-if="radio"
15
+ class="d-flex flex-column page-element"
16
+ >
14
17
  <div class="module-box">
15
18
  <div class="mb-5 descriptionText">
16
- <RadioImage :radio="radio"/>
19
+ <RadioImage :radio="radio" />
17
20
  <h2>{{ radio.name }}</h2>
18
- <div v-if="radio.description">{{radio.description}}</div>
21
+ <div v-if="radio.description">
22
+ {{ radio.description }}
23
+ </div>
19
24
  </div>
20
- <RadioCurrently :radio="radio"/>
25
+ <RadioCurrently :radio="radio" />
21
26
  <EditBoxRadio
22
27
  v-if="editRight"
23
28
  :radio="radio"
24
29
  />
25
30
  </div>
26
- <SharePlayerRadio
31
+ <RadioPlanning
32
+ :radio="radio"
33
+ />
34
+ <SharePlayerRadio
27
35
  v-if="authenticated"
28
36
  :canal="radio"
29
37
  :organisation-id="myOrganisationId"
30
38
  />
31
- <ShareButtons/>
39
+ <ShareButtons />
32
40
  </div>
33
41
  </template>
34
42
  <ClassicLoading
@@ -54,6 +62,7 @@ const ShareButtons = defineAsyncComponent(() => import('../display/sharing/Share
54
62
  const EditBoxRadio = defineAsyncComponent(() => import('@/components/display/edit/EditBoxRadio.vue'));
55
63
  const RadioCurrently = defineAsyncComponent(() => import('../display/live/RadioCurrently.vue'));
56
64
  const RadioImage = defineAsyncComponent(() => import('../display/live/RadioImage.vue'));
65
+ const RadioPlanning = defineAsyncComponent(() => import('../display/live/RadioPlanning.vue'));
57
66
  export default defineComponent({
58
67
  components: {
59
68
  SharePlayerRadio,
@@ -61,7 +70,8 @@ export default defineComponent({
61
70
  EditBoxRadio,
62
71
  ClassicLoading,
63
72
  RadioCurrently,
64
- RadioImage
73
+ RadioImage,
74
+ RadioPlanning
65
75
  },
66
76
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
67
77
  props: {
package/src/locale/fr.ts CHANGED
@@ -329,4 +329,7 @@ export default{
329
329
  'In the process of being published': 'En cours de publication',
330
330
  "Radio":"Radio",
331
331
  "Currently":"Actuellement",
332
+
333
+ "Program":"Programme",
334
+ "No programming":"Aucune programmation",
332
335
  };
@@ -4,7 +4,7 @@ import { FetchParam } from './fetchParam';
4
4
 
5
5
 
6
6
  export interface Playlist {
7
- ambiance?: string; //#11919 "NONE", "AMBIANCE", "PROGRAMMED"
7
+ ambianceType?: string; //#11919 "NONE", "AMBIANCE", "PROGRAMMED"
8
8
  imageUrl?: string;
9
9
  description: string;
10
10
  organisation?: Organisation;
@@ -19,7 +19,7 @@ export interface Playlist {
19
19
 
20
20
  export function emptyPlaylistData(): Playlist{
21
21
  return {
22
- ambiance:"NONE",
22
+ ambianceType:"NONE",
23
23
  description: '',
24
24
  playlistId: 0,
25
25
  podcasts: undefined,
@@ -39,7 +39,6 @@ export interface Podcast {
39
39
  title: string;
40
40
  weekDownloadCount?: number;
41
41
  order?: number;
42
- livePodcastId?: number
43
42
  }
44
43
  export function emptyPodcastData(): Podcast {
45
44
  return {