From 5ec81ff931511fbd07e7f408ba579780d9946e45 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Tue, 13 Oct 2026 18:02:22 +0300 Subject: [PATCH 1/4] refactor: media page migrated to pinia [WTEL-10653](https://webitel.atlassian.net/browse/WTEL-10653) --- package-lock.json | 16 - package.json | 1 - .../components/utils/download-files-btn.vue | 55 -- src/app/css/_reusable.scss | 1 - .../objects/lib-custom-styling/dropzone.scss | 40 -- src/app/router/router.ts | 2 +- src/main.ts | 2 - .../__tests__/media-play-action.spec.js | 10 + .../table-media-audio-preview-action.spec.js | 10 - .../table-media-file-preview-action.spec.js | 14 - .../__tests__/text-to-speech-popup.spec.js | 2 +- .../media-download-files-action.vue | 53 ++ .../media/components/media-play-action.vue | 55 ++ .../table-media-audio-preview-action.vue | 48 -- .../table-media-file-preview-action.vue | 48 -- .../media/components/text-to-speech-popup.vue | 262 +++++++++ .../modules/media/components/the-media.vue | 555 ++++++++---------- .../__tests__/useMediaPlayer.spec.ts | 46 ++ .../__tests__/useMediaUpload.spec.ts | 87 +++ .../media/composables/useMediaPlayer.ts | 36 ++ .../media/composables/useMediaUpload.ts | 44 ++ .../text-to-speech/api/TextToSpeechAPI.js | 47 -- .../components/text-to-speech-popup.vue | 309 ---------- .../enums/TtsGoogleVoice.enum.js | 36 -- .../enums/TtsMicrosoftVoice.enum.js | 6 - .../text-to-speech/enums/TtsTextType.enum.js | 6 - .../lookups/TtsTextType.lookup.js | 14 - .../media/router/{media.js => media.ts} | 3 +- .../lookups/modules/media/store/media.js | 12 - .../datalist/_internals/headers.ts} | 7 +- .../stores/datalist/mediaDatalistStore.ts | 13 + .../lookups/modules/media/stores/namespace.ts | 3 + src/modules/lookups/store/lookups.js | 2 - 33 files changed, 880 insertions(+), 965 deletions(-) delete mode 100644 src/app/components/utils/download-files-btn.vue delete mode 100644 src/app/css/objects/lib-custom-styling/dropzone.scss create mode 100644 src/modules/lookups/modules/media/components/__tests__/media-play-action.spec.js delete mode 100644 src/modules/lookups/modules/media/components/__tests__/table-media-audio-preview-action.spec.js delete mode 100644 src/modules/lookups/modules/media/components/__tests__/table-media-file-preview-action.spec.js rename src/modules/lookups/modules/media/{modules/text-to-speech => }/components/__tests__/text-to-speech-popup.spec.js (85%) create mode 100644 src/modules/lookups/modules/media/components/media-download-files-action.vue create mode 100644 src/modules/lookups/modules/media/components/media-play-action.vue delete mode 100644 src/modules/lookups/modules/media/components/table-media-audio-preview-action.vue delete mode 100644 src/modules/lookups/modules/media/components/table-media-file-preview-action.vue create mode 100644 src/modules/lookups/modules/media/components/text-to-speech-popup.vue create mode 100644 src/modules/lookups/modules/media/composables/__tests__/useMediaPlayer.spec.ts create mode 100644 src/modules/lookups/modules/media/composables/__tests__/useMediaUpload.spec.ts create mode 100644 src/modules/lookups/modules/media/composables/useMediaPlayer.ts create mode 100644 src/modules/lookups/modules/media/composables/useMediaUpload.ts delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/api/TextToSpeechAPI.js delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/components/text-to-speech-popup.vue delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/enums/TtsGoogleVoice.enum.js delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/enums/TtsMicrosoftVoice.enum.js delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/enums/TtsTextType.enum.js delete mode 100644 src/modules/lookups/modules/media/modules/text-to-speech/lookups/TtsTextType.lookup.js rename src/modules/lookups/modules/media/router/{media.js => media.ts} (95%) delete mode 100644 src/modules/lookups/modules/media/store/media.js rename src/modules/lookups/modules/media/{store/_internals/headers.js => stores/datalist/_internals/headers.ts} (75%) create mode 100644 src/modules/lookups/modules/media/stores/datalist/mediaDatalistStore.ts create mode 100644 src/modules/lookups/modules/media/stores/namespace.ts diff --git a/package-lock.json b/package-lock.json index 01dd55427..917132ea9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,6 @@ "vue": "^3.5.x", "vue-i18n": "~11.x", "vue-router": "^4.4.3", - "vue2-dropzone": "^3.6.0", "vuex": "^4.1.0", "webitel-sdk": "^26.4.29", "zod": "^4.x" @@ -5611,12 +5610,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dropzone": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", - "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==", - "license": "MIT" - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -11671,15 +11664,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/vue2-dropzone": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/vue2-dropzone/-/vue2-dropzone-3.6.0.tgz", - "integrity": "sha512-YXC1nCWIZvfa98e/i6h+EshZCkFSxFEh0Sxr9ODfThAPPDVhAzLLlz/4XIx0NGO1QeSy6htwSstte47R7vVhLQ==", - "license": "MIT", - "dependencies": { - "dropzone": "^5.5.1" - } - }, "node_modules/vuex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", diff --git a/package.json b/package.json index 760f9e44a..d7f410800 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "vue": "^3.5.x", "vue-i18n": "~11.x", "vue-router": "^4.4.3", - "vue2-dropzone": "^3.6.0", "vuex": "^4.1.0", "webitel-sdk": "^26.4.29", "zod": "^4.x" diff --git a/src/app/components/utils/download-files-btn.vue b/src/app/components/utils/download-files-btn.vue deleted file mode 100644 index 56ca315ed..000000000 --- a/src/app/components/utils/download-files-btn.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/src/app/css/_reusable.scss b/src/app/css/_reusable.scss index 74aca39d0..2c0ef0cbb 100644 --- a/src/app/css/_reusable.scss +++ b/src/app/css/_reusable.scss @@ -1,5 +1,4 @@ @forward '@webitel/ui-sdk/src/css/main'; -@forward './objects/lib-custom-styling/dropzone'; @forward './objects/history-popup'; // @forward './objects/table-page'; diff --git a/src/app/css/objects/lib-custom-styling/dropzone.scss b/src/app/css/objects/lib-custom-styling/dropzone.scss deleted file mode 100644 index b859a1e06..000000000 --- a/src/app/css/objects/lib-custom-styling/dropzone.scss +++ /dev/null @@ -1,40 +0,0 @@ -#dropzone { - min-height: 57px; - margin-bottom: 36px; - border: 2px dashed var(--primary-color); - border-radius: var(--border-radius); - - &:hover { - background: #fff; - } - - .dz-message { - margin: 0; - - .dz-custom-message { - display: flex; - align-items: center; - width: fit-content; - width: -moz-fit-content; - margin: auto; - - .dz-message-text { - margin-left: 18px; - } - - i, .dz-message-text__accent { - color: var(--primary-color); - } - } - } - - &.dz-started { - .dz-message { - display: block; - } - } - - .dz-preview { - display: none; - } -} diff --git a/src/app/router/router.ts b/src/app/router/router.ts index 5cbb6f4b8..b9273434f 100755 --- a/src/app/router/router.ts +++ b/src/app/router/router.ts @@ -23,7 +23,7 @@ import BlacklistsRoutes from '../../modules/lookups/modules/blacklists/router/bl import BucketsRoutes from '../../modules/lookups/modules/buckets/router/buckets.js'; import CalendarsRoutes from '../../modules/lookups/modules/calendars/router/calendars'; import CommunicationsRoutes from '../../modules/lookups/modules/communications/router/communications.js'; -import MediaRoutes from '../../modules/lookups/modules/media/router/media.js'; +import MediaRoutes from '../../modules/lookups/modules/media/router/media'; import QuickRepliesRoutes from '../../modules/lookups/modules/quick-replies/router/quickReplies.js'; import RegionsRoutes from '../../modules/lookups/modules/regions/router/regions.js'; import ObjectsRoutes from '../../modules/permissions/modules/objects/router/objects.js'; diff --git a/src/main.ts b/src/main.ts index 976deea3e..9c5ea6c73 100755 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,3 @@ -// dont know why but when i import dropzone css is css files, it brakes build on firefox (only build!) -import 'vue2-dropzone/dist/vue2Dropzone.min.css'; import './app/assets/icons/sprite/_index'; import { setConfig as setApiServicesConfig } from '@webitel/api-services'; import { setDefaultAxiosInstance } from '@webitel/api-services/api/axios'; diff --git a/src/modules/lookups/modules/media/components/__tests__/media-play-action.spec.js b/src/modules/lookups/modules/media/components/__tests__/media-play-action.spec.js new file mode 100644 index 000000000..ea5b23882 --- /dev/null +++ b/src/modules/lookups/modules/media/components/__tests__/media-play-action.spec.js @@ -0,0 +1,10 @@ +import { shallowMount } from '@vue/test-utils'; + +import MediaPlayAction from '../media-play-action.vue'; + +describe('MediaPlayAction', () => { + it('renders a component', () => { + const wrapper = shallowMount(MediaPlayAction); + expect(wrapper.isVisible()).toBe(true); + }); +}); diff --git a/src/modules/lookups/modules/media/components/__tests__/table-media-audio-preview-action.spec.js b/src/modules/lookups/modules/media/components/__tests__/table-media-audio-preview-action.spec.js deleted file mode 100644 index 1dbd2ede2..000000000 --- a/src/modules/lookups/modules/media/components/__tests__/table-media-audio-preview-action.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { shallowMount } from '@vue/test-utils'; - -import TableMediaAudioPreviewAction from '../table-media-audio-preview-action.vue'; - -describe('TableMediaAudioPreviewAction', () => { - it('renders a component', () => { - const wrapper = shallowMount(TableMediaAudioPreviewAction); - expect(wrapper.isVisible()).toBe(true); - }); -}); diff --git a/src/modules/lookups/modules/media/components/__tests__/table-media-file-preview-action.spec.js b/src/modules/lookups/modules/media/components/__tests__/table-media-file-preview-action.spec.js deleted file mode 100644 index a701f358c..000000000 --- a/src/modules/lookups/modules/media/components/__tests__/table-media-file-preview-action.spec.js +++ /dev/null @@ -1,14 +0,0 @@ -import { shallowMount } from '@vue/test-utils'; - -import TableMediaFilePreviewAction from '../table-media-file-preview-action.vue'; - -describe('TableMediaFilePreviewAction', () => { - it('renders a component', () => { - const wrapper = shallowMount(TableMediaFilePreviewAction, { - props: { - type: '', - }, - }); - expect(wrapper.isVisible()).toBe(true); - }); -}); diff --git a/src/modules/lookups/modules/media/modules/text-to-speech/components/__tests__/text-to-speech-popup.spec.js b/src/modules/lookups/modules/media/components/__tests__/text-to-speech-popup.spec.js similarity index 85% rename from src/modules/lookups/modules/media/modules/text-to-speech/components/__tests__/text-to-speech-popup.spec.js rename to src/modules/lookups/modules/media/components/__tests__/text-to-speech-popup.spec.js index 912adcd24..6a60eb218 100644 --- a/src/modules/lookups/modules/media/modules/text-to-speech/components/__tests__/text-to-speech-popup.spec.js +++ b/src/modules/lookups/modules/media/components/__tests__/text-to-speech-popup.spec.js @@ -5,6 +5,6 @@ import TextToSpeechPopup from '../text-to-speech-popup.vue'; describe('TextToSpeechPopup', () => { it('renders a component', () => { const wrapper = shallowMount(TextToSpeechPopup); - expect(wrapper.isVisible()).toBe(true); + expect(wrapper.exists()).toBe(true); }); }); diff --git a/src/modules/lookups/modules/media/components/media-download-files-action.vue b/src/modules/lookups/modules/media/components/media-download-files-action.vue new file mode 100644 index 000000000..817e1d0fd --- /dev/null +++ b/src/modules/lookups/modules/media/components/media-download-files-action.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/modules/lookups/modules/media/components/media-play-action.vue b/src/modules/lookups/modules/media/components/media-play-action.vue new file mode 100644 index 000000000..55f438821 --- /dev/null +++ b/src/modules/lookups/modules/media/components/media-play-action.vue @@ -0,0 +1,55 @@ +