@saooti/octopus-sdk 40.2.18 → 41.0.0-SNAPSHOT

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 (204) hide show
  1. package/package.json +38 -39
  2. package/src/App.vue +68 -88
  3. package/src/components/composable/player/usePlayerLive.ts +12 -3
  4. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  5. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  6. package/src/components/composable/useInit.ts +2 -2
  7. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  8. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  9. package/src/components/display/categories/CategoryChooser.vue +142 -145
  10. package/src/components/display/categories/CategoryFilter.vue +172 -198
  11. package/src/components/display/categories/CategoryList.vue +122 -147
  12. package/src/components/display/comments/CommentInput.vue +100 -122
  13. package/src/components/display/comments/CommentList.vue +169 -191
  14. package/src/components/display/comments/CommentName.vue +35 -45
  15. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  16. package/src/components/display/comments/CommentPlayer.vue +38 -50
  17. package/src/components/display/comments/CommentSection.vue +85 -103
  18. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  19. package/src/components/display/comments/item/CommentItem.vue +101 -116
  20. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  21. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  22. package/src/components/display/comments/like/LikeButton.vue +36 -41
  23. package/src/components/display/comments/like/LikeSection.vue +128 -136
  24. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  25. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  26. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  27. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  28. package/src/components/display/edit/EditBox.vue +6 -9
  29. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  30. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  31. package/src/components/display/emission/EmissionItem.vue +56 -69
  32. package/src/components/display/emission/EmissionList.vue +192 -218
  33. package/src/components/display/emission/EmissionPlayerItem.vue +48 -65
  34. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  35. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  36. package/src/components/display/filter/AdvancedSearch.vue +154 -176
  37. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  38. package/src/components/display/filter/DateFilter.vue +76 -91
  39. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  40. package/src/components/display/filter/ProductorSearch.vue +87 -90
  41. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  42. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  43. package/src/components/display/filter/SearchOrder.vue +35 -35
  44. package/src/components/display/list/ListPaginate.vue +80 -93
  45. package/src/components/display/list/PaginateParams.vue +36 -40
  46. package/src/components/display/list/PaginateSection.vue +113 -124
  47. package/src/components/display/list/SwiperList.vue +97 -109
  48. package/src/components/display/live/CountDown.vue +15 -9
  49. package/src/components/display/live/CountdownOctopus.vue +16 -10
  50. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  51. package/src/components/display/live/LiveItem.vue +65 -73
  52. package/src/components/display/live/LiveList.vue +125 -137
  53. package/src/components/display/live/RadioCurrently.vue +66 -73
  54. package/src/components/display/live/RadioImage.vue +40 -51
  55. package/src/components/display/live/RadioItem.vue +9 -14
  56. package/src/components/display/live/RadioList.vue +39 -53
  57. package/src/components/display/live/RadioPlanning.vue +211 -223
  58. package/src/components/display/organisation/OrganisationChooser.vue +117 -123
  59. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  60. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  61. package/src/components/display/participant/ParticipantItem.vue +66 -74
  62. package/src/components/display/participant/ParticipantList.vue +119 -141
  63. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  64. package/src/components/display/playlist/PlaylistList.vue +118 -144
  65. package/src/components/display/playlist/PodcastList.vue +79 -101
  66. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  67. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  68. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  69. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  70. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  71. package/src/components/display/podcasts/PodcastFilterList.vue +48 -53
  72. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  73. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  74. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  75. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  76. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  78. package/src/components/display/podcasts/PodcastList.vue +183 -206
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  80. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  81. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  82. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  83. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  84. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  85. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  86. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  87. package/src/components/display/podcasts/TagList.vue +49 -51
  88. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  89. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  90. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  91. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  92. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  93. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  94. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  95. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  96. package/src/components/display/sharing/QrCode.vue +55 -67
  97. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  98. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  99. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  100. package/src/components/display/sharing/SharePlayer.vue +273 -295
  101. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  102. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  103. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  104. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  105. package/src/components/display/sharing/SubscribeButtons.vue +185 -209
  106. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  107. package/src/components/form/ClassicCheckbox.vue +26 -30
  108. package/src/components/form/ClassicContentEditable.vue +37 -33
  109. package/src/components/form/ClassicCopyButton.vue +40 -44
  110. package/src/components/form/ClassicDatePicker.vue +114 -114
  111. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  112. package/src/components/form/ClassicInputText.vue +116 -120
  113. package/src/components/form/ClassicLoading.vue +7 -12
  114. package/src/components/form/ClassicMultiselect.vue +106 -116
  115. package/src/components/form/ClassicRadio.vue +21 -16
  116. package/src/components/form/ClassicRadioLabel.vue +23 -22
  117. package/src/components/form/ClassicSearch.vue +24 -19
  118. package/src/components/form/ClassicSelect.vue +47 -38
  119. package/src/components/form/ClassicWysiwyg.vue +116 -123
  120. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  121. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  122. package/src/components/icons/BlueSkyIcon.vue +8 -11
  123. package/src/components/icons/DeezerIcon.vue +8 -11
  124. package/src/components/icons/EditFtpIcon.vue +8 -11
  125. package/src/components/icons/IHeartIcon.vue +8 -11
  126. package/src/components/icons/PlayVideoIcon.vue +7 -10
  127. package/src/components/icons/PlayerFmIcon.vue +7 -10
  128. package/src/components/icons/PocketCastIcon.vue +8 -11
  129. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  130. package/src/components/icons/RadiolineIcon.vue +8 -11
  131. package/src/components/icons/TuninIcon.vue +8 -11
  132. package/src/components/icons/XIcon.vue +7 -10
  133. package/src/components/misc/AcpmImage.vue +6 -7
  134. package/src/components/misc/ClassicAccordion.vue +27 -32
  135. package/src/components/misc/ClassicLazy.vue +86 -90
  136. package/src/components/misc/ClassicNav.vue +16 -20
  137. package/src/components/misc/ClassicPopover.vue +266 -282
  138. package/src/components/misc/ClassicSpinner.vue +5 -27
  139. package/src/components/misc/ErrorMessage.vue +11 -12
  140. package/src/components/misc/FooterGarSection.vue +33 -41
  141. package/src/components/misc/FooterSection.vue +109 -130
  142. package/src/components/misc/HomeDropdown.vue +85 -108
  143. package/src/components/misc/MobileMenu.vue +102 -113
  144. package/src/components/misc/ProgressBar.vue +53 -62
  145. package/src/components/misc/TopBar.vue +97 -120
  146. package/src/components/misc/TopBarMainContent.vue +116 -135
  147. package/src/components/misc/modal/ClassicModal.vue +40 -33
  148. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  149. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  150. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  151. package/src/components/misc/modal/MessageModal.vue +50 -47
  152. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  153. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  154. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  155. package/src/components/misc/player/PlayerCompact.vue +6 -4
  156. package/src/components/misc/player/PlayerComponent.vue +8 -9
  157. package/src/components/misc/player/PlayerLarge.vue +9 -8
  158. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  159. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  160. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  161. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  162. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  163. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  164. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  165. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  166. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  167. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  168. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  169. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  170. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  171. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  172. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  173. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  174. package/src/components/pages/CategoryPage.vue +28 -33
  175. package/src/components/pages/EmissionPage.vue +98 -131
  176. package/src/components/pages/EmissionsPage.vue +2 -0
  177. package/src/components/pages/Error403Page.vue +22 -21
  178. package/src/components/pages/HomePage.vue +91 -100
  179. package/src/components/pages/LivesPage.vue +35 -37
  180. package/src/components/pages/MapPage.vue +209 -241
  181. package/src/components/pages/PageLogout.vue +8 -11
  182. package/src/components/pages/PageNotFound.vue +9 -5
  183. package/src/components/pages/ParticipantPage.vue +83 -111
  184. package/src/components/pages/ParticipantsPage.vue +3 -0
  185. package/src/components/pages/PlaylistPage.vue +98 -116
  186. package/src/components/pages/PlaylistsPage.vue +9 -2
  187. package/src/components/pages/PodcastPage.vue +223 -238
  188. package/src/components/pages/PodcastsPage.vue +9 -2
  189. package/src/components/pages/RadioPage.vue +56 -70
  190. package/src/components/pages/RubriquePage.vue +7 -3
  191. package/src/components/pages/SearchPage.vue +31 -36
  192. package/src/components/pages/TagPage.vue +11 -9
  193. package/src/components/pages/VideoPage.vue +14 -11
  194. package/src/helper/displayHelper.ts +1 -1
  195. package/src/i18n.ts +2 -2
  196. package/src/main.ts +1 -1
  197. package/src/stores/class/general/player.ts +1 -0
  198. package/public/css/fonts/icomoon.eot +0 -0
  199. package/public/css/fonts/icomoon.svg +0 -113
  200. package/public/css/fonts/icomoon.ttf +0 -0
  201. package/public/css/fonts/icomoon.woff +0 -0
  202. package/public/css/fonts/icomoon.woff2 +0 -0
  203. package/public/css/fonts/style.css +0 -352
  204. package/sonarqube-scanner.js +0 -10
@@ -1,22 +1,22 @@
1
1
  <template>
2
2
  <ClassicModal
3
3
  id-modal="edit-comment-modal"
4
- :title-modal="$t('Edit comment')"
4
+ :title-modal="t('Edit comment')"
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
8
8
  <ClassicLoading
9
- :loading-text="inProcessing ? $t('Send in progress') : undefined"
10
- :error-text="errorUpdate ? $t(`An error occurred`) : undefined"
9
+ :loading-text="inProcessing ? t('Send in progress') : undefined"
10
+ :error-text="errorUpdate ? t(`An error occurred`) : undefined"
11
11
  />
12
12
  <template v-if="!inProcessing && !errorUpdate">
13
13
  <ClassicInputText
14
14
  v-model:text-init="commentText"
15
15
  v-model:error-variable="errorCommentText"
16
16
  input-id="comment-textarea"
17
- :label="$t('Comment')"
18
- :max-length="MAX_DESCRIPTION"
19
- :error-text="$t('Please provide a comment')"
17
+ :label="t('Comment')"
18
+ :max-length="Constants.MAX_COMMENT"
19
+ :error-text="t('Please provide a comment')"
20
20
  :is-textarea="true"
21
21
  :is-emoji-picker="true"
22
22
  popover-relative-class="octopus-modal"
@@ -26,36 +26,37 @@
26
26
  v-if="editRight"
27
27
  v-model:text-init="commentState"
28
28
  id-select="comment-state-select"
29
- :label="$t('Status')"
29
+ :label="t('Status')"
30
30
  :display-label="true"
31
31
  :options="[
32
- { title: $t('pending'), value: 'PENDING' },
33
- { title: $t('Validated'), value: 'VALIDATED' },
34
- { title: $t('Invalid'), value: 'NOT_VALID' },
32
+ { title: t('pending'), value: 'PENDING' },
33
+ { title: t('Validated'), value: 'VALIDATED' },
34
+ { title: t('Invalid'), value: 'NOT_VALID' },
35
35
  ]"
36
36
  />
37
37
  </template>
38
38
  </template>
39
39
  <template #footer>
40
40
  <button class="btn m-1" @click="closePopup">
41
- {{ $t("No") }}
41
+ {{ t("No") }}
42
42
  </button>
43
43
  <button
44
44
  class="btn btn-primary m-1"
45
45
  :disabled="errorCommentText"
46
46
  @click="onEditComment"
47
47
  >
48
- {{ $t("Yes") }}
48
+ {{ t("Yes") }}
49
49
  </button>
50
50
  </template>
51
51
  </ClassicModal>
52
52
  </template>
53
53
 
54
- <script lang="ts">
54
+ <script setup lang="ts">
55
55
  import classicApi from "../../../../api/classicApi";
56
56
  import Constants from "../../../../../public/config";
57
- import { defineAsyncComponent, defineComponent } from "vue";
57
+ import { defineAsyncComponent, onBeforeMount, Ref, ref } from "vue";
58
58
  import { CommentPodcast } from "@/stores/class/general/comment";
59
+ import { useI18n } from "vue-i18n";
59
60
  const ClassicModal = defineAsyncComponent(
60
61
  () => import("../../../misc/modal/ClassicModal.vue"),
61
62
  );
@@ -68,72 +69,65 @@ const ClassicInputText = defineAsyncComponent(
68
69
  const ClassicSelect = defineAsyncComponent(
69
70
  () => import("../../../form/ClassicSelect.vue"),
70
71
  );
71
- export default defineComponent({
72
- name: "EditCommentModal",
73
72
 
74
- components: {
75
- ClassicModal,
76
- ClassicLoading,
77
- ClassicInputText,
78
- ClassicSelect,
73
+ //Props
74
+ const props = defineProps({
75
+ comment: {
76
+ default: undefined,
77
+ type: Object as () => CommentPodcast,
79
78
  },
79
+ editRight: { default: false, type: Boolean },
80
+ })
81
+
82
+ //Emits
83
+ const emit = defineEmits(["close", "update:comment"]);
80
84
 
81
- props: {
82
- comment: {
83
- default: undefined,
84
- type: Object as () => CommentPodcast,
85
- },
86
- editRight: { default: false, type: Boolean },
87
- },
88
85
 
89
- emits: ["close", "update:comment"],
90
- data() {
91
- return {
92
- MAX_DESCRIPTION: Constants.MAX_COMMENT as number,
93
- commentText: undefined as string | undefined,
94
- errorCommentText: true as boolean,
95
- commentState: "PENDING" as string,
96
- errorUpdate: false as boolean,
97
- inProcessing: false as boolean,
98
- };
99
- },
100
- created() {
101
- this.initComment();
102
- },
103
- methods: {
104
- initComment() {
105
- if (!this.comment) {
106
- return;
107
- }
108
- this.commentText = this.comment.content;
109
- this.commentState = this.comment.state;
110
- },
111
- async onEditComment() {
112
- if (!this.comment) {
113
- return;
114
- }
115
- this.inProcessing = true;
116
- try {
117
- const commentUpdated = await classicApi.putData({
118
- api: 2,
119
- path: "comment/",
120
- dataToSend: {
121
- commentId: this.comment.commentId,
122
- content: this.commentText,
123
- state: this.commentState,
124
- },
125
- isNotAuth: !this.editRight,
126
- });
127
- this.$emit("update:comment", commentUpdated);
128
- this.closePopup();
129
- } catch {
130
- this.errorUpdate = true;
131
- }
132
- this.inProcessing = false;
133
- },
134
- closePopup() {
135
- this.$emit("close");
136
- },
137
- },
138
- });
86
+ //Data
87
+ const commentText: Ref<string | undefined> = ref(undefined);
88
+ const errorCommentText = ref(true);
89
+ const commentState = ref("PENDING");
90
+ const errorUpdate = ref(false);
91
+ const inProcessing = ref(false);
92
+
93
+ //Composables
94
+ const { t } = useI18n();
95
+
96
+ onBeforeMount(()=>initComment())
97
+
98
+
99
+ //Methods
100
+ function initComment() {
101
+ if (!props.comment) {
102
+ return;
103
+ }
104
+ commentText.value = props.comment.content;
105
+ commentState.value = props.comment.state;
106
+ }
107
+ async function onEditComment() {
108
+ if (!props.comment) {
109
+ return;
110
+ }
111
+ inProcessing.value = true;
112
+ try {
113
+ const commentUpdated = await classicApi.putData({
114
+ api: 2,
115
+ path: "comment/",
116
+ dataToSend: {
117
+ commentId: props.comment.commentId,
118
+ content: commentText.value,
119
+ state: commentState.value,
120
+ },
121
+ isNotAuth: !props.editRight,
122
+ });
123
+ emit("update:comment", commentUpdated);
124
+ closePopup();
125
+ } catch {
126
+ errorUpdate.value = true;
127
+ }
128
+ inProcessing.value = false;
129
+ }
130
+ function closePopup() {
131
+ emit("close");
132
+ }
139
133
  </script>
@@ -12,7 +12,7 @@
12
12
  v-else
13
13
  :loading-text="
14
14
  isInTreatment && !errorText && !successText
15
- ? $t('Loading content ...')
15
+ ? t('Loading content ...')
16
16
  : undefined
17
17
  "
18
18
  :error-text="errorText"
@@ -21,7 +21,7 @@
21
21
  </template>
22
22
  <template #footer>
23
23
  <button class="btn m-1" @click="closePopup">
24
- {{ $t("Close") }}
24
+ {{ t("Close") }}
25
25
  </button>
26
26
  <vue-recaptcha
27
27
  v-if="!isVerify"
@@ -38,78 +38,73 @@
38
38
  :disabled="disableValidate || isInTreatment"
39
39
  @click="submit"
40
40
  >
41
- {{ $t("Yes") }}
41
+ {{ t("Yes") }}
42
42
  </button>
43
43
  </template>
44
44
  </ClassicModal>
45
45
  </template>
46
46
 
47
- <script lang="ts">
47
+ <script setup lang="ts">
48
48
  import { state } from "../../../../stores/ParamSdkStore";
49
49
  import ClassicLoading from "../../../form/ClassicLoading.vue";
50
50
  import ClassicModal from "../../../misc/modal/ClassicModal.vue";
51
51
  import api from "@/api/initialize";
52
52
  import { VueRecaptcha } from "vue-recaptcha";
53
- import { defineComponent } from "vue";
54
- export default defineComponent({
55
- name: "RecaptchaModal",
56
- components: {
57
- VueRecaptcha,
58
- ClassicModal,
59
- ClassicLoading,
60
- },
61
- props: {
62
- idModal: { default: undefined, type: String },
63
- titleModal: { default: undefined, type: String },
64
- disableValidate: { default: false, type: Boolean },
65
- errorText: { default: undefined, type: String },
66
- successText: { default: undefined, type: String },
67
- },
53
+ import { computed, ref, useTemplateRef } from "vue";
54
+ import { useI18n } from "vue-i18n";
68
55
 
69
- emits: ["close", "validate"],
56
+ //Props
57
+ defineProps({
58
+ idModal: { default: undefined, type: String },
59
+ titleModal: { default: undefined, type: String },
60
+ disableValidate: { default: false, type: Boolean },
61
+ errorText: { default: undefined, type: String },
62
+ successText: { default: undefined, type: String },
63
+ })
70
64
 
71
- data() {
72
- return {
73
- sendError: false as boolean,
74
- isVerify: false as boolean,
75
- isInTreatment: false as boolean,
76
- };
77
- },
78
- computed: {
79
- errorRecaptchaText(): string {
80
- if (this.isCaptchaTest) {
81
- return this.$t("Recaptcha not active");
82
- }
83
- return this.sendError ? this.$t("Recaptcha error") : "";
84
- },
85
- isCaptchaTest(): boolean {
86
- return state.generalParameters.isCaptchaTest as boolean;
87
- },
88
- },
89
- methods: {
90
- async handleSuccess(token: string) {
91
- this.isVerify = await api.checkToken(token);
92
- this.sendAction();
93
- },
94
- handleError() {
95
- this.isVerify = false;
96
- this.sendError = true;
97
- },
98
- async submit(): Promise<void> {
99
- this.isInTreatment = true;
100
- if (!this.isVerify && !this.isCaptchaTest) {
101
- return (
102
- this.$refs.invisibleRecaptcha as InstanceType<typeof VueRecaptcha>
103
- ).execute();
104
- }
105
- this.sendAction();
106
- },
107
- closePopup(): void {
108
- this.$emit("close");
109
- },
110
- sendAction(): void {
111
- this.$emit("validate");
112
- },
113
- },
65
+ //Emits
66
+ const emit = defineEmits(["close", "validate"]);
67
+
68
+ //Data
69
+ const sendError = ref(false);
70
+ const isVerify = ref(false);
71
+ const isInTreatment = ref(false);
72
+ const captchRef = useTemplateRef('invisibleRecaptcha');
73
+
74
+
75
+ //Composables
76
+ const { t } = useI18n();
77
+
78
+ //Computed
79
+ const errorRecaptchaText = computed(() =>{
80
+ if (isCaptchaTest.value) {
81
+ return t("Recaptcha not active");
82
+ }
83
+ return sendError.value ? t("Recaptcha error") : "";
114
84
  });
85
+ const isCaptchaTest = computed(() => state.generalParameters.isCaptchaTest as boolean);
86
+
87
+
88
+ //Methods
89
+ async function handleSuccess(token: string) {
90
+ isVerify.value = await api.checkToken(token);
91
+ sendAction();
92
+ }
93
+ function handleError() {
94
+ isVerify.value = false;
95
+ sendError.value = true;
96
+ }
97
+ async function submit(): Promise<void> {
98
+ isInTreatment.value = true;
99
+ if (!isVerify.value && !isCaptchaTest.value) {
100
+ (captchRef?.value as InstanceType<typeof VueRecaptcha>).execute();
101
+ }
102
+ sendAction();
103
+ }
104
+ function closePopup(): void {
105
+ emit("close");
106
+ }
107
+ function sendAction(): void {
108
+ emit("validate");
109
+ }
115
110
  </script>
@@ -1,104 +1,97 @@
1
1
  <template>
2
2
  <RecaptchaModal
3
3
  id-modal="report-abuse-modal"
4
- :title-modal="$t('Report abuse')"
4
+ :title-modal="t('Report abuse')"
5
5
  :disable-validate="errorName || abuseDescriptionError"
6
6
  :error-text="errorSendAbuse"
7
7
  :success-text="successText"
8
- @close="$emit('close')"
8
+ @close="emit('close')"
9
9
  @validate="reportAbuse"
10
10
  >
11
11
  <template #form>
12
12
  <ClassicInputText
13
- v-if="!commentUser?.name"
13
+ v-if="!commentStore.commentUser?.name"
14
14
  v-model:text-init="name"
15
15
  v-model:error-variable="errorName"
16
16
  input-id="comment-user-name"
17
- :label="$t('Let\'s get acquainted :')"
18
- :max-length="maxName"
19
- :placeholder="$t('Your name')"
20
- autocomplete="name"
17
+ :label="t('Let\'s get acquainted :')"
18
+ :max-length="Constants.MAX_COMMENT_NAME"
19
+ :placeholder="t('Your name')"
20
+ autocomplete-type="name"
21
21
  />
22
22
  <ClassicInputText
23
23
  v-model:text-init="abuseDescription"
24
24
  v-model:error-variable="abuseDescriptionError"
25
25
  :is-textarea="true"
26
26
  input-id="abuse-description"
27
- :label="$t('Describe the reason for the report')"
28
- :max-length="maxAbuseDescription"
27
+ :label="t('Describe the reason for the report')"
28
+ :max-length="Constants.MAX_COMMENT"
29
29
  :focus="true"
30
30
  />
31
31
  </template>
32
32
  </RecaptchaModal>
33
33
  </template>
34
34
 
35
- <script lang="ts">
35
+ <script setup lang="ts">
36
36
  import Constants from "../../../../../public/config";
37
37
  import ClassicInputText from "../../../form/ClassicInputText.vue";
38
38
  import RecaptchaModal from "./RecaptchaModal.vue";
39
- import { mapActions, mapState } from "pinia";
40
- import { defineComponent } from "vue";
39
+ import { Ref, ref } from "vue";
41
40
  import { useCommentStore } from "../../../../stores/CommentStore";
42
41
  import classicApi from "../../../../api/classicApi";
43
42
  import {
44
43
  CommentAbuseInfo,
45
44
  CommentPodcast,
46
45
  } from "@/stores/class/general/comment";
47
- export default defineComponent({
48
- name: "ReportAbuseModal",
49
- components: {
50
- RecaptchaModal,
51
- ClassicInputText,
52
- },
53
- props: {
54
- comment: { default: undefined, type: Object as () => CommentPodcast },
55
- },
46
+ import { useI18n } from "vue-i18n";
56
47
 
57
- emits: ["close", "update:comment"],
58
48
 
59
- data() {
60
- return {
61
- name: undefined as string | undefined,
62
- errorName: false as boolean,
63
- maxName: Constants.MAX_COMMENT_NAME as number,
64
- abuseDescription: undefined as string | undefined,
65
- abuseDescriptionError: true as boolean,
66
- maxAbuseDescription: Constants.MAX_COMMENT as number,
67
- errorSendAbuse: undefined as string | undefined,
68
- successText: undefined as string | undefined,
49
+ //Props
50
+ const props = defineProps({
51
+ comment: { default: undefined, type: Object as () => CommentPodcast },
52
+ })
53
+
54
+ //Emits
55
+ const emit = defineEmits(["close", "update:comment"]);
56
+
57
+ //Data
58
+ const errorName = ref(false);
59
+ const name: Ref<string | undefined> = ref(undefined);
60
+ const abuseDescription: Ref<string | undefined> = ref(undefined);
61
+ const abuseDescriptionError = ref(true);
62
+ const errorSendAbuse: Ref<string | undefined> = ref(undefined);
63
+ const successText: Ref<string | undefined> = ref(undefined);
64
+
65
+
66
+ //Composables
67
+ const { t } = useI18n();
68
+ const commentStore = useCommentStore();
69
+
70
+ //Methods
71
+ async function reportAbuse(): Promise<void> {
72
+ if (!commentStore.commentUser?.name) {
73
+ commentStore.setCommentUser(name.value ?? "");
74
+ }
75
+ try {
76
+ const abuseObject = {
77
+ commentId: props.comment?.commentId,
78
+ description: abuseDescription.value,
79
+ uuid: commentStore.commentUser?.uuid,
69
80
  };
70
- },
71
- computed: {
72
- ...mapState(useCommentStore, ["commentUser"]),
73
- },
74
- methods: {
75
- ...mapActions(useCommentStore, ["setCommentUser"]),
76
- async reportAbuse(): Promise<void> {
77
- if (!this.commentUser?.name) {
78
- this.setCommentUser(this.name ?? "");
79
- }
80
- try {
81
- const abuseObject = {
82
- commentId: this.comment?.commentId,
83
- description: this.abuseDescription,
84
- uuid: this.commentUser?.uuid,
85
- };
86
- const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({
87
- api: 2,
88
- path: "abuse/",
89
- dataToSend: abuseObject,
90
- });
91
- this.$emit("update:comment", {
92
- ...this.comment,
93
- ...{ abuse: commentAbuseInfo.abuseCount },
94
- });
95
- this.successText = this.$t("Thank you for reporting abuse");
96
- } catch {
97
- this.errorSendAbuse = this.$t(
98
- "Error occurs while post your comment...",
99
- );
100
- }
101
- },
102
- },
103
- });
81
+ const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({
82
+ api: 2,
83
+ path: "abuse/",
84
+ dataToSend: abuseObject,
85
+ });
86
+ emit("update:comment", {
87
+ ...props.comment,
88
+ ...{ abuse: commentAbuseInfo.abuseCount },
89
+ });
90
+ successText.value = t("Thank you for reporting abuse");
91
+ } catch {
92
+ errorSendAbuse.value = t(
93
+ "Error occurs while post your comment...",
94
+ );
95
+ }
96
+ }
104
97
  </script>
@@ -2,14 +2,11 @@
2
2
  <div />
3
3
  </template>
4
4
 
5
- <script lang="ts">
5
+ <script setup lang="ts">
6
6
  import { CommentPodcast } from "@/stores/class/general/comment";
7
- import { defineComponent } from "vue";
8
- export default defineComponent({
9
- methods: {
10
- updateComment(comment: CommentPodcast): void {
11
- console.log(comment);
12
- },
13
- },
14
- });
7
+
8
+ //Methods
9
+ function updateComment(comment: CommentPodcast): void {
10
+ console.log(comment);
11
+ }
15
12
  </script>
@@ -2,9 +2,5 @@
2
2
  <div />
3
3
  </template>
4
4
 
5
- <script lang="ts">
6
- import { defineComponent } from "vue";
7
- export default defineComponent({
8
- methods: {},
9
- });
5
+ <script setup lang="ts">
10
6
  </script>