@saooti/octopus-sdk 40.0.3 → 40.1.0

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.
Files changed (174) hide show
  1. package/index.ts +31 -31
  2. package/package.json +1 -1
  3. package/plateform.conf +1 -1
  4. package/src/App.vue +9 -3
  5. package/src/api/classicApi.ts +1 -1
  6. package/src/components/composable/player/usePlayerDisplayTime.ts +33 -0
  7. package/src/components/composable/player/usePlayerLive.ts +150 -0
  8. package/src/components/composable/player/usePlayerLogic.ts +265 -0
  9. package/src/components/composable/player/usePlayerLogicProgress.ts +135 -0
  10. package/src/components/composable/player/usePlayerStitching.ts +213 -0
  11. package/src/components/composable/player/usePlayerTranscript.ts +120 -0
  12. package/src/components/composable/player/usePlayerVast.ts +207 -0
  13. package/src/components/composable/podcasts/useCountdown.ts +53 -0
  14. package/src/components/composable/podcasts/usePodcastView.ts +85 -0
  15. package/src/components/composable/radio/usefetchRadioData.ts +75 -0
  16. package/src/components/composable/route/useAdvancedParamInit.ts +165 -0
  17. package/src/components/composable/route/useRouteUpdateParams.ts +48 -0
  18. package/src/components/composable/route/useRubriquesFilterComputed.ts +24 -0
  19. package/src/components/composable/route/useRubriquesFilterParam.ts +32 -0
  20. package/src/components/composable/route/useSeoTitleUrl.ts +30 -0
  21. package/src/components/composable/route/useSimplePageParam.ts +50 -0
  22. package/src/components/composable/useErrorHandler.ts +25 -0
  23. package/src/components/composable/useImageProxy.ts +28 -0
  24. package/src/components/composable/useInit.ts +38 -0
  25. package/src/components/composable/useMetaTitle.ts +19 -0
  26. package/src/components/composable/useMetaTitleWatch.ts +14 -0
  27. package/src/components/composable/useOrgaComputed.ts +23 -0
  28. package/src/components/composable/useOrganisationFilter.ts +65 -0
  29. package/src/components/composable/useResizePhone.ts +27 -0
  30. package/src/components/composable/useSelenium.ts +10 -0
  31. package/src/components/composable/useTagOf.ts +21 -0
  32. package/src/components/display/accessibility/AccessibilityModal.vue +136 -0
  33. package/src/components/display/aggregator/RssSection.vue +1 -4
  34. package/src/components/display/categories/CategoryChooser.vue +1 -1
  35. package/src/components/display/categories/CategoryFilter.vue +7 -3
  36. package/src/components/display/categories/CategoryList.vue +5 -2
  37. package/src/components/display/comments/CommentInput.vue +0 -3
  38. package/src/components/display/comments/CommentList.vue +6 -2
  39. package/src/components/display/comments/CommentPlayer.vue +5 -2
  40. package/src/components/display/comments/CommentSection.vue +0 -2
  41. package/src/components/display/comments/item/CommentBasicView.vue +4 -4
  42. package/src/components/display/comments/item/CommentItem.vue +0 -4
  43. package/src/components/display/comments/item/CommentMoreActions.vue +6 -2
  44. package/src/components/display/emission/EmissionInlineList.vue +6 -6
  45. package/src/components/display/emission/EmissionItem.vue +13 -6
  46. package/src/components/display/emission/EmissionList.vue +5 -2
  47. package/src/components/display/emission/EmissionPlayerItem.vue +8 -5
  48. package/src/components/display/emission/EmissionPresentationItem.vue +16 -7
  49. package/src/components/display/emission/EmissionPresentationList.vue +10 -7
  50. package/src/components/display/filter/AdvancedSearch.vue +9 -6
  51. package/src/components/display/filter/CategorySearchFilter.vue +0 -2
  52. package/src/components/display/filter/ProductorSearch.vue +8 -3
  53. package/src/components/display/filter/RubriqueFilter.vue +6 -2
  54. package/src/components/display/list/ListPaginate.vue +9 -6
  55. package/src/components/display/list/SwiperList.vue +6 -5
  56. package/src/components/display/live/CountDown.vue +7 -15
  57. package/src/components/display/live/CountdownOctopus.vue +10 -30
  58. package/src/components/display/live/LiveItem.vue +0 -2
  59. package/src/components/display/live/LiveList.vue +9 -4
  60. package/src/components/display/live/RadioCurrently.vue +9 -5
  61. package/src/components/display/live/RadioImage.vue +6 -4
  62. package/src/components/display/live/RadioItem.vue +1 -2
  63. package/src/components/display/live/RadioList.vue +5 -3
  64. package/src/components/display/live/RadioPlanning.vue +10 -7
  65. package/src/components/display/organisation/OrganisationChooser.vue +8 -4
  66. package/src/components/display/participant/ParticipantInlineList.vue +5 -5
  67. package/src/components/display/participant/ParticipantItem.vue +13 -5
  68. package/src/components/display/participant/ParticipantList.vue +6 -3
  69. package/src/components/display/playlist/PlaylistItem.vue +12 -5
  70. package/src/components/display/playlist/PlaylistList.vue +6 -3
  71. package/src/components/display/playlist/PodcastList.vue +8 -4
  72. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +6 -3
  73. package/src/components/display/podcasts/DownloadPodcastButton.vue +2 -4
  74. package/src/components/display/podcasts/PodcastImage.vue +6 -3
  75. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +7 -4
  76. package/src/components/display/podcasts/PodcastItem.vue +1 -1
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +6 -3
  78. package/src/components/display/podcasts/PodcastList.vue +6 -3
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +22 -9
  80. package/src/components/display/podcasts/PodcastPlayBar.vue +1 -3
  81. package/src/components/display/podcasts/PodcastPlayButton.vue +1 -3
  82. package/src/components/display/podcasts/PodcastRawTranscript.vue +79 -10
  83. package/src/components/display/podcasts/PodcastRubriqueList.vue +4 -3
  84. package/src/components/display/podcasts/TagList.vue +5 -2
  85. package/src/components/display/podcasts/VideoModuleBox.vue +6 -3
  86. package/src/components/display/rubriques/RubriqueChooser.vue +0 -2
  87. package/src/components/display/rubriques/RubriqueList.vue +7 -5
  88. package/src/components/display/sharing/ShareButtons.vue +4 -2
  89. package/src/components/display/sharing/ShareDistribution.vue +4 -2
  90. package/src/components/form/ClassicEmojiPicker.vue +5 -3
  91. package/src/components/misc/ClassicLazy.vue +2 -2
  92. package/src/components/misc/FooterGarSection.vue +2 -3
  93. package/src/components/misc/FooterSection.vue +9 -5
  94. package/src/components/misc/MobileMenu.vue +5 -3
  95. package/src/components/misc/TopBar.vue +8 -6
  96. package/src/components/misc/TopBarMainContent.vue +8 -4
  97. package/src/components/misc/modal/ClassicModalInBody.vue +2 -3
  98. package/src/components/misc/modal/ClipboardModal.vue +4 -3
  99. package/src/components/misc/modal/NewsletterModal.vue +4 -3
  100. package/src/components/misc/modal/ShareModalPlayer.vue +4 -2
  101. package/src/components/misc/player/PlayerCompact.vue +30 -41
  102. package/src/components/misc/player/PlayerComponent.vue +69 -84
  103. package/src/components/misc/player/PlayerLarge.vue +43 -58
  104. package/src/components/misc/player/elements/PlayerImage.vue +6 -3
  105. package/src/components/misc/player/elements/PlayerTitle.vue +6 -2
  106. package/src/components/misc/player/radio/RadioHistory.vue +2 -4
  107. package/src/components/misc/player/video/PlayerVideoHls.vue +6 -7
  108. package/src/components/pages/EmissionPage.vue +19 -7
  109. package/src/components/pages/EmissionsPage.vue +31 -23
  110. package/src/components/pages/HomePage.vue +5 -2
  111. package/src/components/pages/PageLogout.vue +0 -2
  112. package/src/components/pages/PageNotFound.vue +11 -15
  113. package/src/components/pages/ParticipantPage.vue +18 -7
  114. package/src/components/pages/ParticipantsPage.vue +16 -21
  115. package/src/components/pages/PlaylistPage.vue +18 -7
  116. package/src/components/pages/PlaylistsPage.vue +20 -29
  117. package/src/components/pages/PodcastPage.vue +12 -6
  118. package/src/components/pages/PodcastsPage.vue +46 -48
  119. package/src/components/pages/RadioPage.vue +9 -6
  120. package/src/components/pages/RubriquePage.vue +41 -52
  121. package/src/components/pages/VideoPage.vue +152 -166
  122. package/src/helper/cookiesHelper.ts +20 -0
  123. package/src/helper/displayHelper.ts +15 -0
  124. package/src/helper/downloadHelper.ts +30 -0
  125. package/src/helper/{fetch.ts → fetchHelper.ts} +0 -1
  126. package/src/helper/loadScript.ts +22 -0
  127. package/src/helper/radio/radioHelper.ts +15 -0
  128. package/src/helper/{string.ts → stringHelper.ts} +5 -0
  129. package/src/locale/de.ts +4 -0
  130. package/src/locale/en.ts +4 -0
  131. package/src/locale/es.ts +4 -0
  132. package/src/locale/fr.ts +4 -0
  133. package/src/locale/it.ts +4 -0
  134. package/src/locale/sl.ts +4 -0
  135. package/src/stores/AuthStore.ts +1 -2
  136. package/src/stores/CommentStore.ts +8 -8
  137. package/src/stores/PlayerStore.ts +1 -1
  138. package/src/style/general.scss +15 -1
  139. package/src/components/mixins/cookies.ts +0 -22
  140. package/src/components/mixins/displayMethods.ts +0 -17
  141. package/src/components/mixins/download.ts +0 -33
  142. package/src/components/mixins/fetchParameters.ts +0 -16
  143. package/src/components/mixins/handle403.ts +0 -22
  144. package/src/components/mixins/imageProxy.ts +0 -28
  145. package/src/components/mixins/init.ts +0 -34
  146. package/src/components/mixins/loadScript.ts +0 -25
  147. package/src/components/mixins/metaTitle.ts +0 -15
  148. package/src/components/mixins/metaTitleWatch.ts +0 -26
  149. package/src/components/mixins/orgaComputed.ts +0 -23
  150. package/src/components/mixins/organisationFilter.ts +0 -56
  151. package/src/components/mixins/player/playerDisplayTime.ts +0 -35
  152. package/src/components/mixins/player/playerLive.ts +0 -144
  153. package/src/components/mixins/player/playerLogic.ts +0 -275
  154. package/src/components/mixins/player/playerLogicProgress.ts +0 -135
  155. package/src/components/mixins/player/playerStitching.ts +0 -202
  156. package/src/components/mixins/player/playerTranscript.ts +0 -113
  157. package/src/components/mixins/player/playerVast.ts +0 -198
  158. package/src/components/mixins/podcast/countdown.ts +0 -45
  159. package/src/components/mixins/podcast/podcastView.ts +0 -63
  160. package/src/components/mixins/radio/fetchRadioData.ts +0 -77
  161. package/src/components/mixins/resizePhone.ts +0 -26
  162. package/src/components/mixins/routeParam/advancedParamInit.ts +0 -202
  163. package/src/components/mixins/routeParam/paginateParamInit.ts +0 -43
  164. package/src/components/mixins/routeParam/routeParams.ts +0 -33
  165. package/src/components/mixins/routeParam/rubriquesFilterComputed.ts +0 -22
  166. package/src/components/mixins/routeParam/rubriquesFilterParam.ts +0 -29
  167. package/src/components/mixins/selenium.ts +0 -7
  168. package/src/components/mixins/seoTitleUrl.ts +0 -26
  169. package/src/components/mixins/tagOfMixins.ts +0 -19
  170. package/src/helper/uuidGenerator.ts +0 -7
  171. /package/src/{helper → components/composable}/useEventListener.ts +0 -0
  172. /package/src/{components/mixins/debounce.ts → helper/debounceHelper.ts} +0 -0
  173. /package/src/helper/{dom.ts → domHelper.ts} +0 -0
  174. /package/src/helper/{duration.ts → durationHelper.ts} +0 -0
@@ -37,33 +37,41 @@
37
37
  </section>
38
38
  </template>
39
39
 
40
- <script lang="ts">
41
- import { advancedParamInit } from "../mixins/routeParam/advancedParamInit";
40
+ <script setup lang="ts">
42
41
  import EmissionList from "../display/emission/EmissionList.vue";
43
42
  import AdvancedSearch from "../display/filter/AdvancedSearch.vue";
44
- import { defineComponent, defineAsyncComponent } from "vue";
43
+ import {useAdvancedParamInit} from "../composable/route/useAdvancedParamInit";
44
+ import { defineAsyncComponent } from "vue";
45
45
  const ProductorSearch = defineAsyncComponent(
46
46
  () => import("../display/filter/ProductorSearch.vue"),
47
47
  );
48
- export default defineComponent({
49
- components: {
50
- ProductorSearch,
51
- EmissionList,
52
- AdvancedSearch,
53
- },
54
- mixins: [advancedParamInit],
55
- props: {
56
- pr: { default: 0, type: Number },
57
- ps: { default: 30, type: Number },
58
- routeQuery: { default: "", type: String },
59
- routeMonetisable: { default: "UNDEFINED", type: String },
60
- routeIab: { default: undefined, type: Number },
61
- routeSort: { default: "LAST_PODCAST_DESC", type: String },
62
- routeIncludeHidden: { default: "", type: String },
63
- routeFrom: { default: undefined, type: String },
64
- routeTo: { default: undefined, type: String },
65
- routeOrga: { default: undefined, type: String },
66
- routeRubriques: { default: "", type: String },
67
- },
48
+
49
+ const props = defineProps({
50
+ pr: { default: 0, type: Number },
51
+ ps: { default: 30, type: Number },
52
+ routeQuery: { default: "", type: String },
53
+ routeMonetisable: { default: "UNDEFINED", type: String },
54
+ routeIab: { default: undefined, type: Number },
55
+ routeSort: { default: "LAST_PODCAST_DESC", type: String },
56
+ routeIncludeHidden: { default: "", type: String },
57
+ routeFrom: { default: undefined, type: String },
58
+ routeTo: { default: undefined, type: String },
59
+ routeOrga: { default: undefined, type: String },
60
+ routeRubriques: { default: "", type: String },
68
61
  });
62
+
63
+ const {
64
+ organisationId,
65
+ searchPattern,
66
+ monetisable,
67
+ iabId,
68
+ sort,
69
+ includeHidden,
70
+ fromDate,
71
+ toDate,
72
+ rubriqueFilter,
73
+ searchMinSize,
74
+ paginateFirst,
75
+ rubriquesFilterArrayIds
76
+ } = useAdvancedParamInit(props, true);
69
77
  </script>
@@ -65,7 +65,7 @@
65
65
  </template>
66
66
 
67
67
  <script lang="ts">
68
- import { rubriquesFilterComputed } from "../mixins/routeParam/rubriquesFilterComputed";
68
+ import { useRubriquesFilterComputed } from "../composable/route/useRubriquesFilterComputed";
69
69
  import PodcastInlineList from "../display/podcasts/PodcastInlineList.vue";
70
70
  import ClassicLazy from "../misc/ClassicLazy.vue";
71
71
  import { state } from "../../stores/ParamSdkStore";
@@ -82,12 +82,15 @@ export default defineComponent({
82
82
  PodcastInlineList,
83
83
  ClassicLazy,
84
84
  },
85
- mixins: [rubriquesFilterComputed],
86
85
  props: {
87
86
  displayWithoutRubriques: { default: true, type: Boolean },
88
87
  rubriqueMorePath: { default: undefined, type: String },
89
88
  },
90
89
  emits: ["categoriesLength"],
90
+ setup(){
91
+ const { rubriqueQueryParam } = useRubriquesFilterComputed();
92
+ return { rubriqueQueryParam }
93
+ },
91
94
  data() {
92
95
  return {
93
96
  rubriqueId: [] as Array<number>,
@@ -10,13 +10,11 @@
10
10
  </template>
11
11
 
12
12
  <script lang="ts">
13
- import { rubriquesFilterComputed } from "../mixins/routeParam/rubriquesFilterComputed";
14
13
  import { useFilterStore } from "../../stores/FilterStore";
15
14
  import { mapState } from "pinia";
16
15
  import { defineComponent } from "vue";
17
16
  export default defineComponent({
18
17
  name: "PageNotFound",
19
- mixins: [rubriquesFilterComputed],
20
18
  computed: {
21
19
  ...mapState(useFilterStore, ["filterIab"]),
22
20
  },
@@ -11,7 +11,7 @@
11
11
  :to="{
12
12
  name: 'home',
13
13
  query: {
14
- iabId: filterIab?.id,
14
+ iabId: filterStore.filterIab?.id,
15
15
  rubriquesId: rubriqueQueryParam,
16
16
  },
17
17
  }"
@@ -22,21 +22,17 @@
22
22
  </section>
23
23
  </template>
24
24
 
25
- <script lang="ts">
26
- import { rubriquesFilterComputed } from "../mixins/routeParam/rubriquesFilterComputed";
25
+ <script setup lang="ts">
26
+ import { useRubriquesFilterComputed } from "../composable/route/useRubriquesFilterComputed";
27
27
  import { useFilterStore } from "../../stores/FilterStore";
28
- import { mapState } from "pinia";
29
- import { defineComponent } from "vue";
30
- export default defineComponent({
31
- name: "PageNotFound",
32
- mixins: [rubriquesFilterComputed],
33
- computed: {
34
- ...mapState(useFilterStore, ["filterIab"]),
35
- backgroundStyle(): string {
36
- return "background-image: url('/img/404.svg');";
37
- },
38
- },
39
- });
28
+ import { computed } from "vue";
29
+
30
+ const { rubriqueQueryParam } = useRubriquesFilterComputed();
31
+
32
+ const filterStore = useFilterStore();
33
+
34
+ const backgroundStyle = computed(() => "background-image: url('/img/404.svg');");
35
+
40
36
  </script>
41
37
  <style lang="scss">
42
38
  .octopus-app .page-not-found {
@@ -6,7 +6,7 @@
6
6
  </h1>
7
7
  <section class="d-flex flex-column align-items-center mb-3">
8
8
  <img
9
- v-lazy="proxyImageUrl(participant.imageUrl, '200')"
9
+ v-lazy="useProxyImageUrl(participant.imageUrl, '200')"
10
10
  width="200"
11
11
  height="200"
12
12
  role="presentation"
@@ -57,11 +57,12 @@
57
57
  import classicApi from "../../api/classicApi";
58
58
  import { state } from "../../stores/ParamSdkStore";
59
59
  import { useApiStore } from "../../stores/ApiStore";
60
- import displayMethods from "../mixins/displayMethods";
61
- import { seoTitleUrl } from "../mixins/seoTitleUrl";
62
- import imageProxy from "../mixins/imageProxy";
63
- import { orgaComputed } from "../mixins/orgaComputed";
64
- import { handle403 } from "../mixins/handle403";
60
+ import { useFilterStore } from "../../stores/FilterStore";
61
+ import displayHelper from "../../helper/displayHelper";
62
+ import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
63
+ import {useImageProxy} from "../composable/useImageProxy";
64
+ import {useOrgaComputed} from "../composable/useOrgaComputed";
65
+ import {useErrorHandler} from "../composable/useErrorHandler";
65
66
  import { Participant } from "@/stores/class/general/participant";
66
67
  import ClassicLoading from "../form/ClassicLoading.vue";
67
68
  import { defineComponent, defineAsyncComponent } from "vue";
@@ -83,10 +84,16 @@ export default defineComponent({
83
84
  EditBox,
84
85
  ClassicLoading,
85
86
  },
86
- mixins: [displayMethods, handle403, orgaComputed, imageProxy, seoTitleUrl],
87
87
  props: {
88
88
  participantId: { default: undefined, type: Number },
89
89
  },
90
+ setup(){
91
+ const { useProxyImageUrl } = useImageProxy();
92
+ const { isEditRights } = useOrgaComputed();
93
+ const { updatePathParams } = useSeoTitleUrl();
94
+ const {handle403} = useErrorHandler();
95
+ return { useProxyImageUrl, isEditRights, updatePathParams, handle403 }
96
+ },
90
97
  data() {
91
98
  return {
92
99
  loaded: false as boolean,
@@ -96,6 +103,7 @@ export default defineComponent({
96
103
  };
97
104
  },
98
105
  computed: {
106
+ ...mapState(useFilterStore, ["filterOrgaId"]),
99
107
  ...mapState(useApiStore, ["apiUrl"]),
100
108
  pageParameters() {
101
109
  return {
@@ -133,6 +141,9 @@ export default defineComponent({
133
141
  },
134
142
  },
135
143
  methods: {
144
+ urlify(text:string|undefined){
145
+ return displayHelper.urlify(text);
146
+ },
136
147
  initError(): void {
137
148
  this.error = true;
138
149
  this.loaded = true;
@@ -15,28 +15,23 @@
15
15
  </section>
16
16
  </template>
17
17
 
18
- <script lang="ts">
19
- import { paginateParamInit } from "../mixins/routeParam/paginateParamInit";
18
+ <script setup lang="ts">
19
+ import { useSimplePageParam } from "../composable/route/useSimplePageParam";
20
20
  import ParticipantList from "../display/participant/ParticipantList.vue";
21
21
  import ProductorSearch from "../display/filter/ProductorSearch.vue";
22
- import { defineComponent } from "vue";
23
- export default defineComponent({
24
- components: {
25
- ProductorSearch,
26
- ParticipantList,
27
- },
28
- mixins: [paginateParamInit],
29
- props: {
30
- pr: { default: 0, type: Number },
31
- ps: { default: 30, type: Number },
32
- routeOrga: { default: undefined, type: String },
33
- routeQuery: { default: "", type: String },
34
- },
35
- data() {
36
- return {
37
- searchPattern: "" as string,
38
- organisationId: undefined as string | undefined,
39
- };
40
- },
22
+
23
+ const props = defineProps({
24
+ pr: { default: 0, type: Number },
25
+ ps: { default: 30, type: Number },
26
+ routeOrga: { default: undefined, type: String },
27
+ routeQuery: { default: "", type: String },
41
28
  });
29
+
30
+ const {
31
+ searchPattern,
32
+ organisationId,
33
+ searchMinSize,
34
+ paginateFirst,
35
+ } = useSimplePageParam(props);
36
+
42
37
  </script>
@@ -13,7 +13,7 @@
13
13
  <section class="module-box">
14
14
  <div class="mb-5 mt-3 description-text">
15
15
  <img
16
- v-lazy="proxyImageUrl(playlist.imageUrl, '250')"
16
+ v-lazy="useProxyImageUrl(playlist.imageUrl, '250')"
17
17
  width="250"
18
18
  height="250"
19
19
  role="presentation"
@@ -54,15 +54,16 @@
54
54
  import { useGeneralStore } from "../../stores/GeneralStore";
55
55
  import { useAuthStore } from "../../stores/AuthStore";
56
56
  import { mapActions, mapState } from "pinia";
57
- import { orgaComputed } from "../mixins/orgaComputed";
58
- import { seoTitleUrl } from "../mixins/seoTitleUrl";
57
+ import {useOrgaComputed} from "../composable/useOrgaComputed";
58
+ import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
59
59
  import ClassicLoading from "../form/ClassicLoading.vue";
60
60
  import PodcastList from "../display/playlist/PodcastList.vue";
61
61
  import classicApi from "../../api/classicApi";
62
+ import { useFilterStore } from "../../stores/FilterStore";
62
63
  import { state } from "../../stores/ParamSdkStore";
63
- import displayMethods from "../mixins/displayMethods";
64
- import imageProxy from "../mixins/imageProxy";
65
- import { handle403 } from "../mixins/handle403";
64
+ import displayHelper from "../../helper/displayHelper";
65
+ import {useImageProxy} from "../composable/useImageProxy";
66
+ import {useErrorHandler} from "../composable/useErrorHandler";
66
67
  import { Playlist } from "@/stores/class/general/playlist";
67
68
  import { defineComponent, defineAsyncComponent } from "vue";
68
69
  import { AxiosError } from "axios";
@@ -87,11 +88,17 @@ export default defineComponent({
87
88
  ClassicLoading,
88
89
  PodcastmakerHeader,
89
90
  },
90
- mixins: [displayMethods, handle403, orgaComputed, imageProxy, seoTitleUrl],
91
91
 
92
92
  props: {
93
93
  playlistId: { default: undefined, type: Number },
94
94
  },
95
+ setup(){
96
+ const { useProxyImageUrl } = useImageProxy();
97
+ const { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();
98
+ const { updatePathParams } = useSeoTitleUrl();
99
+ const {handle403} = useErrorHandler();
100
+ return { useProxyImageUrl, isPodcastmaker, isEditRights, authOrgaId, updatePathParams, handle403 }
101
+ },
95
102
  data() {
96
103
  return {
97
104
  loaded: false as boolean,
@@ -100,6 +107,7 @@ export default defineComponent({
100
107
  };
101
108
  },
102
109
  computed: {
110
+ ...mapState(useFilterStore, ["filterOrgaId"]),
103
111
  ...mapState(useAuthStore, ["isRolePlaylists"]),
104
112
  pageParameters() {
105
113
  return {
@@ -144,6 +152,9 @@ export default defineComponent({
144
152
 
145
153
  methods: {
146
154
  ...mapActions(useGeneralStore, ["contentToDisplayUpdate"]),
155
+ urlify(text:string|undefined){
156
+ return displayHelper.urlify(text);
157
+ },
147
158
  initError(): void {
148
159
  this.error = true;
149
160
  this.loaded = true;
@@ -24,41 +24,32 @@
24
24
  </section>
25
25
  </template>
26
26
 
27
- <script lang="ts">
28
- import { paginateParamInit } from "../mixins/routeParam/paginateParamInit";
27
+ <script setup lang="ts">
28
+ import { useSimplePageParam } from "../composable/route/useSimplePageParam";
29
29
  import PlaylistList from "../display/playlist/PlaylistList.vue";
30
30
  import { useAuthStore } from "../../stores/AuthStore";
31
31
  import { state } from "../../stores/ParamSdkStore";
32
- import { defineComponent, defineAsyncComponent } from "vue";
33
- import { mapState } from "pinia";
32
+ import { computed, defineAsyncComponent } from "vue";
34
33
  const ProductorSearch = defineAsyncComponent(
35
34
  () => import("../display/filter/ProductorSearch.vue"),
36
35
  );
37
- export default defineComponent({
38
- components: {
39
- ProductorSearch,
40
- PlaylistList,
41
- },
42
- mixins: [paginateParamInit],
43
- props: {
44
- pr: { default: 0, type: Number },
45
- ps: { default: 30, type: Number },
46
- routeOrga: { default: undefined, type: String },
47
- routeQuery: { default: "", type: String },
48
- },
36
+ const props = defineProps({
37
+ pr: { default: 0, type: Number },
38
+ ps: { default: 30, type: Number },
39
+ routeOrga: { default: undefined, type: String },
40
+ routeQuery: { default: "", type: String },
41
+ });
49
42
 
50
- data() {
51
- return {
52
- searchPattern: "" as string,
53
- organisationId: undefined as string | undefined,
54
- };
55
- },
43
+ const {
44
+ searchPattern,
45
+ organisationId,
46
+ searchMinSize,
47
+ paginateFirst,
48
+ } = useSimplePageParam(props);
49
+
50
+ const authStore = useAuthStore();
51
+
52
+ const isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);
53
+ const isRolePlaylists = computed(() =>authStore.isRolePlaylists);
56
54
 
57
- computed: {
58
- ...mapState(useAuthStore, ["isRolePlaylists"]),
59
- isPodcastmaker(): boolean {
60
- return state.generalParameters.podcastmaker as boolean;
61
- },
62
- },
63
- });
64
55
  </script>
@@ -74,21 +74,21 @@
74
74
  </template>
75
75
 
76
76
  <script lang="ts">
77
- import imageProxy from "../mixins/imageProxy";
78
- import { orgaComputed } from "../mixins/orgaComputed";
77
+ import {useOrgaComputed} from "../composable/useOrgaComputed";
79
78
  import PodcastInlineList from "../display/podcasts/PodcastInlineList.vue";
80
79
  import PodcastModuleBox from "../display/podcasts/PodcastModuleBox.vue";
81
80
  import ClassicLazy from "../misc/ClassicLazy.vue";
82
81
  import ClassicLoading from "../form/ClassicLoading.vue";
83
82
  import classicApi from "../../api/classicApi";
84
83
  import { state } from "../../stores/ParamSdkStore";
84
+ import { useFilterStore } from "../../stores/FilterStore";
85
85
  import { Podcast } from "@/stores/class/general/podcast";
86
86
  import {
87
87
  Conference,
88
88
  ConferencePublicInfo,
89
89
  } from "@/stores/class/conference/conference";
90
- import { handle403 } from "../mixins/handle403";
91
- import { seoTitleUrl } from "../mixins/seoTitleUrl";
90
+ import {useErrorHandler} from "../composable/useErrorHandler";
91
+ import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
92
92
  import { defineComponent, defineAsyncComponent } from "vue";
93
93
  import { Category } from "@/stores/class/general/category";
94
94
  import { useAuthStore } from "../../stores/AuthStore";
@@ -121,14 +121,19 @@ export default defineComponent({
121
121
  PodcastmakerHeader,
122
122
  },
123
123
 
124
- mixins: [handle403, orgaComputed, imageProxy, seoTitleUrl],
125
-
126
124
  props: {
127
125
  updateStatus: { default: undefined, type: String },
128
126
  playingPodcast: { default: undefined, type: Object as () => Podcast },
129
127
  podcastId: { default: 0, type: Number },
130
128
  },
131
129
 
130
+ setup(){
131
+ const { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();
132
+ const { updatePathParams } = useSeoTitleUrl();
133
+ const {handle403} = useErrorHandler();
134
+ return { isPodcastmaker, isEditRights, authOrgaId, updatePathParams, handle403 }
135
+ },
136
+
132
137
  data() {
133
138
  return {
134
139
  loaded: false as boolean,
@@ -142,6 +147,7 @@ export default defineComponent({
142
147
  },
143
148
 
144
149
  computed: {
150
+ ...mapState(useFilterStore, ["filterOrgaId"]),
145
151
  ...mapState(useAuthStore, ["isRoleLive"]),
146
152
  ...mapState(useGeneralStore, ["storedCategories"]),
147
153
  hideSuggestions(): boolean {
@@ -38,56 +38,54 @@
38
38
  />
39
39
  </section>
40
40
  </template>
41
-
42
- <script lang="ts">
43
- import { advancedParamInit } from "../mixins/routeParam/advancedParamInit";
41
+ <script setup lang="ts">
44
42
  import PodcastList from "../display/podcasts/PodcastList.vue";
45
43
  import ProductorSearch from "../display/filter/ProductorSearch.vue";
46
44
  import AdvancedSearch from "../display/filter/AdvancedSearch.vue";
47
- import { defineComponent } from "vue";
48
- export default defineComponent({
49
- name: "PodcastsPage",
50
- components: {
51
- PodcastList,
52
- ProductorSearch,
53
- AdvancedSearch,
54
- },
55
- mixins: [advancedParamInit],
56
- props: {
57
- pr: { default: 0, type: Number },
58
- ps: { default: 30, type: Number },
59
- routeQuery: { default: "", type: String },
60
- routeMonetisable: { default: "UNDEFINED", type: String },
61
- routeIab: { default: undefined, type: Number },
62
- routeSort: { default: "DATE", type: String },
63
- routeIncludeHidden: { default: "", type: String },
64
- routeFrom: { default: undefined, type: String },
65
- routeTo: { default: undefined, type: String },
66
- routeValidity: { default: "", type: String },
67
- routeOnlyVideo: { default: "", type: String },
68
- routeOrga: { default: undefined, type: String },
69
- routeRubriques: { default: "", type: String },
70
- },
71
- data() {
72
- return {
73
- onlyVideo: false as boolean,
74
- };
75
- },
76
- computed: {
77
- orgaArray(): Array<string> {
78
- return this.organisationId ? [this.organisationId] : [];
79
- },
80
- withVideo(): boolean | undefined {
81
- return false === this.onlyVideo ? undefined : true;
82
- },
83
- },
84
- watch: {
85
- routeOnlyVideo: {
86
- immediate: true,
87
- handler() {
88
- this.onlyVideo = "true" === this.routeOnlyVideo;
89
- },
90
- },
91
- },
45
+ import {useAdvancedParamInit} from "../composable/route/useAdvancedParamInit";
46
+ import { computed, ref, watch } from "vue";
47
+
48
+ const props = defineProps({
49
+ pr: { default: 0, type: Number },
50
+ ps: { default: 30, type: Number },
51
+ routeQuery: { default: "", type: String },
52
+ routeMonetisable: { default: "UNDEFINED", type: String },
53
+ routeIab: { default: undefined, type: Number },
54
+ routeSort: { default: "DATE", type: String },
55
+ routeIncludeHidden: { default: "", type: String },
56
+ routeFrom: { default: undefined, type: String },
57
+ routeTo: { default: undefined, type: String },
58
+ routeValidity: { default: "", type: String },
59
+ routeOnlyVideo: { default: "", type: String },
60
+ routeOrga: { default: undefined, type: String },
61
+ routeRubriques: { default: "", type: String },
92
62
  });
63
+
64
+ const {
65
+ organisationId,
66
+ searchPattern,
67
+ monetisable,
68
+ iabId,
69
+ sort,
70
+ includeHidden,
71
+ fromDate,
72
+ toDate,
73
+ rubriqueFilter,
74
+ searchMinSize,
75
+ paginateFirst,
76
+ validity,
77
+ rubriquesFilterArrayIds
78
+ } = useAdvancedParamInit(props, false);
79
+
80
+ const onlyVideo = ref(false);
81
+
82
+
83
+ const orgaArray = computed(() => organisationId.value ? [organisationId.value] : []);
84
+ const withVideo = computed(() => false === onlyVideo.value ? undefined : true);
85
+
86
+
87
+ watch(() => props.routeOnlyVideo, () =>{
88
+ onlyVideo.value = "true" === props.routeOnlyVideo;
89
+ }, {immediate: true});
90
+
93
91
  </script>
@@ -42,11 +42,9 @@
42
42
  import { useGeneralStore } from "../../stores/GeneralStore";
43
43
  import { mapActions, mapState } from "pinia";
44
44
  import classicApi from "../../api/classicApi";
45
- import displayMethods from "../mixins/displayMethods";
46
- import { seoTitleUrl } from "../mixins/seoTitleUrl";
47
- import imageProxy from "../mixins/imageProxy";
48
- import { orgaComputed } from "../mixins/orgaComputed";
49
- import { handle403 } from "../mixins/handle403";
45
+ import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
46
+ import {useOrgaComputed} from "../composable/useOrgaComputed";
47
+ import {useErrorHandler} from "../composable/useErrorHandler";
50
48
  import ClassicLoading from "../form/ClassicLoading.vue";
51
49
  import { defineComponent, defineAsyncComponent } from "vue";
52
50
  import { AxiosError } from "axios";
@@ -84,10 +82,15 @@ export default defineComponent({
84
82
  RadioPlanning,
85
83
  PodcastmakerHeader,
86
84
  },
87
- mixins: [displayMethods, handle403, orgaComputed, imageProxy, seoTitleUrl],
88
85
  props: {
89
86
  canalId: { default: undefined, type: Number },
90
87
  },
88
+ setup(){
89
+ const { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();
90
+ const { updatePathParams } = useSeoTitleUrl();
91
+ const {handle403} = useErrorHandler();
92
+ return { isPodcastmaker, isEditRights, authOrgaId, updatePathParams, handle403}
93
+ },
91
94
  data() {
92
95
  return {
93
96
  loaded: false as boolean,