@saooti/octopus-sdk 29.0.7 → 29.0.11

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.
@@ -33,155 +33,11 @@
33
33
  :is-ready="isReady"
34
34
  @validatePodcast="updatePodcast"
35
35
  />
36
- <div class="module-box">
37
- <h2
38
- v-if="!isOuestFrance"
39
- class="text-uppercase fw-bold title-page-podcast"
40
- >
41
- {{ podcast.title }}
42
- </h2>
43
- <router-link
44
- v-else
45
- :to="{
46
- name: 'emission',
47
- params: { emissionId: podcast.emission.emissionId },
48
- query: { productor: $store.state.filter.organisationId },
49
- }"
50
- >
51
- <h1>{{ podcast.emission.name }}</h1>
52
- </router-link>
53
- <div class="mb-5 mt-3 d-flex">
54
- <div class="w-100">
55
- <PodcastImage
56
- :class="[
57
- !isOuestFrance && !isLiveReadyToRecord
58
- ? 'shadow-element'
59
- : '',
60
- isLiveReadyToRecord &&
61
- fetchConference &&
62
- 'null' !== fetchConference &&
63
- fetchConference.status
64
- ? fetchConference.status.toLowerCase() + '-shadow'
65
- : '',
66
- ]"
67
- class="me-3"
68
- :podcast="podcast"
69
- :hide-play="!isLiveReadyToRecord"
70
- :playing-podcast="playingPodcast"
71
- :fetch-conference="fetchConference"
72
- :is-animator-live="isOctopusAndAnimator"
73
- @playPodcast="playPodcast"
74
- />
75
- <h3 v-if="isOuestFrance">
76
- {{ podcast.title }}
77
- </h3>
78
- <div
79
- class="date-text-zone"
80
- :class="isLiveReady ? 'justify-content-between' : ''"
81
- >
82
- <div
83
- v-if="!isOuestFrance && 0 !== date.length"
84
- :class="!isLiveReady ? 'me-5' : ''"
85
- >
86
- {{ date }}
87
- </div>
88
- <div class="ms-2 me-2 duration">
89
- <span
90
- v-if="isOuestFrance"
91
- class="saooti-clock3"
92
- />{{ $t('Duration', { duration: duration }) }}
93
- </div>
94
- <div
95
- v-if="isLiveReady"
96
- class="text-danger"
97
- >
98
- {{ $t('Episode record in live') }}
99
- </div>
100
- </div>
101
- <div
102
- class="descriptionText html-wysiwyg-content"
103
- v-html="urlify(podcast.description)"
104
- />
105
- <div class="mt-3 mb-3">
106
- <ParticipantDescription :participants="podcast.animators" />
107
- <div v-if="!isOuestFrance">
108
- {{ $t('Emission') + ' : ' }}
109
- <router-link
110
- class="link-info"
111
- :to="{
112
- name: 'emission',
113
- params: { emissionId: podcast.emission.emissionId },
114
- query: {
115
- productor: $store.state.filter.organisationId,
116
- },
117
- }"
118
- >
119
- {{ podcast.emission.name }}
120
- </router-link>
121
- </div>
122
- <div v-if="!isPodcastmaker">
123
- {{ $t('Producted by : ') }}
124
- <router-link
125
- class="link-info"
126
- :to="{
127
- name: 'productor',
128
- params: { productorId: podcast.organisation.id },
129
- query: {
130
- productor: $store.state.filter.organisationId,
131
- },
132
- }"
133
- >
134
- {{ podcast.organisation.name }}
135
- </router-link>
136
- </div>
137
- <a
138
- v-if="podcast.article"
139
- class="btn d-flex align-items-center my-2 width-fit-content"
140
- :href="podcast.article"
141
- rel="noopener"
142
- target="_blank"
143
- >
144
- <span class="saooti-newspaper me-1" />
145
- <div>{{ $t('See associated article') }}</div>
146
- </a>
147
- <ParticipantDescription
148
- :participants="podcast.guests"
149
- :is-guest="true"
150
- />
151
- <div v-if="editRight && !isPodcastmaker">
152
- <div
153
- v-if="podcast.annotations && podcast.annotations.RSS"
154
- class="me-5"
155
- >
156
- {{ $t('From RSS') }}
157
- </div>
158
- <ErrorMessage
159
- v-if="!podcast.availability.visibility"
160
- :message="$t('Podcast is not visible for listeners')"
161
- />
162
- <ErrorMessage
163
- v-if="'ERROR' === podcast.processingStatus"
164
- :message="$t('Podcast in ERROR, please contact Saooti')"
165
- />
166
- <ErrorMessage
167
- v-if="podcastNotValid"
168
- :message="$t('Podcast not validated')"
169
- />
170
- </div>
171
- <ShareButtons
172
- v-if="isDownloadButton"
173
- :podcast="podcast"
174
- :big-round="true"
175
- :audio-url="podcast.audioUrl"
176
- />
177
- </div>
178
- </div>
179
- </div>
180
- <TagList
181
- v-if="isTagList"
182
- :tag-list="podcast.tags"
183
- />
184
- </div>
36
+ <PodcastModuleBox
37
+ :playing-podcast="playingPodcast"
38
+ :podcast="podcast"
39
+ :fetch-conference="fetchConference"
40
+ />
185
41
  <SubscribeButtons
186
42
  v-if="isShareButtons && countLink >= 1"
187
43
  :emission="podcast.emission"
@@ -250,14 +106,11 @@
250
106
 
251
107
  <script lang="ts">
252
108
  import PodcastInlineList from '../display/podcasts/PodcastInlineList.vue';
253
- import PodcastImage from '../display/podcasts/PodcastImage.vue';
254
- import ParticipantDescription from '../display/podcasts/ParticipantDescription.vue';
109
+ import PodcastModuleBox from '../display/podcasts/PodcastModuleBox.vue';
255
110
  const octopusApi = require('@saooti/octopus-api');
256
111
  import studioApi from '@/api/studio';
257
112
  import { state } from '../../store/paramStore';
258
113
  const moment = require('moment');
259
- const humanizeDuration = require('humanize-duration');
260
- import { displayMethods } from '../mixins/functions';
261
114
  import { Podcast } from '@/store/class/podcast';
262
115
  import { Conference } from '@/store/class/conference';
263
116
 
@@ -265,31 +118,24 @@ import { defineComponent, defineAsyncComponent } from 'vue';
265
118
  const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
266
119
  const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
267
120
  const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
268
- const TagList = defineAsyncComponent(() => import('../display/podcasts/TagList.vue'));
269
121
  const SubscribeButtons = defineAsyncComponent(() => import('../display/sharing/SubscribeButtons.vue'));
270
122
  const RecordingItemButton = defineAsyncComponent(() => import('@/components/display/studio/RecordingItemButton.vue'));
271
123
  const Countdown = defineAsyncComponent(() => import('../display/live/CountDown.vue'));
272
124
  const CommentSection = defineAsyncComponent(() => import('../display/comments/CommentSection.vue'));
273
- const ErrorMessage = defineAsyncComponent(() => import('../misc/ErrorMessage.vue'));
274
125
  export default defineComponent({
275
126
  name: "Podcast",
276
127
  components: {
277
128
  PodcastInlineList,
278
- PodcastImage,
279
- ParticipantDescription,
280
129
  ShareButtons,
281
130
  SharePlayer,
282
131
  EditBox,
283
- TagList,
284
132
  SubscribeButtons,
285
133
  RecordingItemButton,
286
134
  Countdown,
287
135
  CommentSection,
288
- ErrorMessage,
136
+ PodcastModuleBox
289
137
  },
290
138
 
291
- mixins:[displayMethods],
292
-
293
139
  props: {
294
140
  updateStatus: { default: undefined, type: String},
295
141
  playingPodcast: { default: undefined, type: Object as ()=> Podcast},
@@ -297,7 +143,7 @@ export default defineComponent({
297
143
  isEducation: { default: false, type: Boolean},
298
144
  },
299
145
 
300
- emits: ['initConferenceId', 'podcastTitle', 'playPodcast'],
146
+ emits: ['initConferenceId', 'podcastTitle'],
301
147
 
302
148
  data() {
303
149
  return {
@@ -335,12 +181,6 @@ export default defineComponent({
335
181
  isOuestFrance(): boolean {
336
182
  return state.podcastPage.ouestFranceStyle;
337
183
  },
338
- isTagList(): boolean {
339
- return state.podcastPage.tagList;
340
- },
341
- isDownloadButton(): boolean {
342
- return state.podcastPage.downloadButton;
343
- },
344
184
  emissionMainCategory(): number {
345
185
  if(!this.podcast){return 0;}
346
186
  if (
@@ -371,30 +211,6 @@ export default defineComponent({
371
211
  return 0;
372
212
  });
373
213
  },
374
- date(): string {
375
- if (this.podcast && 1970 !== moment(this.podcast.pubDate).year()){
376
- if('fr' === this.$i18n.locale){
377
- return moment(this.podcast.pubDate).format('D MMMM YYYY [à] HH[h]mm');
378
- }
379
- return moment(this.podcast.pubDate).format('D MMMM YYYY [at] HH[h]mm');
380
- }
381
- return '';
382
- },
383
- duration(): string {
384
- if (!this.podcast || this.podcast.duration <= 1) return '';
385
- if (this.podcast.duration > 600000) {
386
- return humanizeDuration(this.podcast.duration, {
387
- language: this.$i18n.locale,
388
- largest: 1,
389
- round: true,
390
- });
391
- }
392
- return humanizeDuration(this.podcast.duration, {
393
- language: this.$i18n.locale,
394
- largest: 2,
395
- round: true,
396
- });
397
- },
398
214
  editRight(): boolean {
399
215
  if ( this.podcast &&
400
216
  (this.authenticated &&
@@ -405,11 +221,6 @@ export default defineComponent({
405
221
  return false;
406
222
  },
407
223
  isReady(): boolean {
408
- /* if(this.podcast && this.podcast.processingStatus !== "PLANNED" && this.podcast.processingStatus !== "PROCESSING"){
409
- return true;
410
- }else{
411
- return false;
412
- } */
413
224
  return true;
414
225
  },
415
226
  countLink(): number {
@@ -431,14 +242,6 @@ export default defineComponent({
431
242
  isLiveReadyToRecord(): boolean {
432
243
  return (undefined!==this.podcast && undefined!==this.podcast.conferenceId && 0 !== this.podcast.conferenceId && 'READY_TO_RECORD' === this.podcast.processingStatus);
433
244
  },
434
- isLiveReady(): boolean {
435
- return (
436
- undefined!==this.podcast &&
437
- undefined!==this.podcast.conferenceId &&
438
- 0 !== this.podcast.conferenceId &&
439
- 'READY' === this.podcast.processingStatus
440
- );
441
- },
442
245
  isCounter(): boolean {
443
246
  return (
444
247
  this.isLiveReadyToRecord &&
@@ -469,15 +272,6 @@ export default defineComponent({
469
272
  if(!this.podcast){return "";}
470
273
  return moment(this.podcast.pubDate).diff(moment(), 'seconds');
471
274
  },
472
- podcastNotValid(): boolean {
473
- if (
474
- this.podcast &&
475
- this.podcast.availability &&
476
- false === this.podcast.valid
477
- )
478
- return true;
479
- return false;
480
- },
481
275
  },
482
276
  watch: {
483
277
  updateStatus(): void {
@@ -567,14 +361,6 @@ export default defineComponent({
567
361
  this.loaded = true;
568
362
  }
569
363
  },
570
- getName(person: any): string {
571
- const first = person.firstName || '';
572
- const last = person.lastName || '';
573
- return (first + ' ' + last).trim();
574
- },
575
- playPodcast(podcast: Podcast): void {
576
- this.$emit('playPodcast', podcast);
577
- },
578
364
  removeDeleted(): void {
579
365
  if (window.history.length > 1) {
580
366
  this.$router.go(-1);
@@ -587,25 +373,4 @@ export default defineComponent({
587
373
  },
588
374
  },
589
375
  })
590
- </script>
591
-
592
- <style lang="scss">
593
- .title-page-podcast {
594
- font-size: 0.9rem;
595
- }
596
- .width-fit-content{
597
- width: fit-content;
598
- }
599
-
600
- .date-text-zone {
601
- display: flex;
602
- flex-wrap: wrap;
603
- margin-bottom: 1rem;
604
- @media (max-width: 600px) {
605
- display: initial;
606
- .duration {
607
- margin-left: 0 !important;
608
- }
609
- }
610
- }
611
- </style>
376
+ </script>