From d1f2297f3eac4cc11383298faaf92fedfb7449c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Grom?= Date: Fri, 2 Oct 2026 08:43:30 +0100 Subject: [PATCH 1/3] fix: type integration progress, ui-kit, overview and logRocket long tail (CM-1536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs linuxfoundation/lfx-cdp-insights-ops#236 Signed-off-by: Gašper Grom --- .../components/integration-list-item.vue | 2 +- .../status/integration-platform-select.vue | 2 +- .../integration/pages/integration-status.page.vue | 2 +- .../projects/components/form/lf-project-form.vue | 2 +- .../components/integration-progress-bar.vue | 2 +- .../components/integration-progress-wrapper.vue | 13 ++++--------- .../integration/components/integration-progress.vue | 2 +- .../helpers/integration-progress-notification.ts | 7 ++++--- .../integration/types/IntegrationProgress.ts | 1 + .../components/fragments/status-display.vue | 2 +- .../overview/components/fragments/trend-display.vue | 2 +- .../src/ui-kit/contenteditable/Contenteditable.vue | 10 ++++++---- frontend/src/ui-kit/dropdown/Dropdown.stories.ts | 2 +- .../src/ui-kit/dropdown/DropdownItem.stories.ts | 2 +- .../src/ui-kit/field-messages/FieldMessages.vue | 6 ++++-- frontend/src/ui-kit/lfx/popover/popover.vue | 2 +- frontend/src/ui-kit/search/Search.vue | 4 ++-- frontend/src/ui-kit/tabs/Tab.vue | 2 +- frontend/src/utils/logRocket/index.ts | 2 +- 19 files changed, 34 insertions(+), 33 deletions(-) diff --git a/frontend/src/modules/admin/modules/integration/components/integration-list-item.vue b/frontend/src/modules/admin/modules/integration/components/integration-list-item.vue index 510acba017..9472a2b4b0 100644 --- a/frontend/src/modules/admin/modules/integration/components/integration-list-item.vue +++ b/frontend/src/modules/admin/modules/integration/components/integration-list-item.vue @@ -166,7 +166,7 @@ import { IntegrationService } from '@/modules/integration/integration-service'; const props = defineProps<{ config: IntegrationConfig, - progress: IntegrationProgress | null, + progress: IntegrationProgress[] | null, progressError: boolean }>(); diff --git a/frontend/src/modules/admin/modules/integration/components/status/integration-platform-select.vue b/frontend/src/modules/admin/modules/integration/components/status/integration-platform-select.vue index b4fc8884ec..0f4f23904e 100644 --- a/frontend/src/modules/admin/modules/integration/components/status/integration-platform-select.vue +++ b/frontend/src/modules/admin/modules/integration/components/status/integration-platform-select.vue @@ -50,7 +50,7 @@ const props = defineProps<{ modelValue?: string, }>(); -const emit = defineEmits<{(e: 'update:modelValue', value: string)}>(); +const emit = defineEmits<{(e: 'update:modelValue', value: string): void}>(); const model = computed({ get() { diff --git a/frontend/src/modules/admin/modules/integration/pages/integration-status.page.vue b/frontend/src/modules/admin/modules/integration/pages/integration-status.page.vue index a82db0fbfd..cf302b388b 100644 --- a/frontend/src/modules/admin/modules/integration/pages/integration-status.page.vue +++ b/frontend/src/modules/admin/modules/integration/pages/integration-status.page.vue @@ -70,7 +70,7 @@
diff --git a/frontend/src/modules/admin/modules/projects/components/form/lf-project-form.vue b/frontend/src/modules/admin/modules/projects/components/form/lf-project-form.vue index 49f3f9f584..4dadeb6002 100644 --- a/frontend/src/modules/admin/modules/projects/components/form/lf-project-form.vue +++ b/frontend/src/modules/admin/modules/projects/components/form/lf-project-form.vue @@ -271,7 +271,7 @@ const onSuccess = () => { emit('onSuccess'); }; -const onError = (error: AxiosError) => { +const onError = (error: AxiosError) => { ToastStore.error( error?.response?.data ? error.response.data : `Something went wrong while ${props.id ? 'updating' : 'creating'} the project`, diff --git a/frontend/src/modules/integration/components/integration-progress-bar.vue b/frontend/src/modules/integration/components/integration-progress-bar.vue index 9eaf560e1a..525b1b4aa3 100644 --- a/frontend/src/modules/integration/components/integration-progress-bar.vue +++ b/frontend/src/modules/integration/components/integration-progress-bar.vue @@ -39,7 +39,7 @@ import { computed } from 'vue'; import LfIcon from '@/ui-kit/icon/Icon.vue'; const props = defineProps<{ - progress: IntegrationProgress | null, + progress: IntegrationProgress | null | undefined, barOnly?: boolean, hideBar?: boolean, textClass?: string, diff --git a/frontend/src/modules/integration/components/integration-progress-wrapper.vue b/frontend/src/modules/integration/components/integration-progress-wrapper.vue index eed73ec9b8..1616762069 100644 --- a/frontend/src/modules/integration/components/integration-progress-wrapper.vue +++ b/frontend/src/modules/integration/components/integration-progress-wrapper.vue @@ -18,19 +18,14 @@ const props = withDefaults(defineProps<{ segments: () => ([]), }); -const progress = ref(null); +const progress = ref(null); const progressError = ref(false); const fetchUpdates = () => { IntegrationService.fetchIntegrationsProgress(props.segments) - .then((data: IntegrationProgress) => { - const parsedData = data.platform === 'github-nango' ? { - ...data, - platform: 'github', - } : data; - - progress.value = parsedData; - if (parsedData.length === 0) { + .then((data: IntegrationProgress[]) => { + progress.value = data; + if (data.length === 0) { pause(); } }) diff --git a/frontend/src/modules/integration/components/integration-progress.vue b/frontend/src/modules/integration/components/integration-progress.vue index 9db877ad61..665582df50 100644 --- a/frontend/src/modules/integration/components/integration-progress.vue +++ b/frontend/src/modules/integration/components/integration-progress.vue @@ -45,7 +45,7 @@ const props = defineProps<{ showParts?: boolean, }>(); -const statusPriority = { +const statusPriority: Record = { ok: 1, 'in-progress': 2, }; diff --git a/frontend/src/modules/integration/helpers/integration-progress-notification.ts b/frontend/src/modules/integration/helpers/integration-progress-notification.ts index ca134d79e3..8f81966971 100644 --- a/frontend/src/modules/integration/helpers/integration-progress-notification.ts +++ b/frontend/src/modules/integration/helpers/integration-progress-notification.ts @@ -3,11 +3,12 @@ import AppIntegrationProgress from '@/modules/integration/components/integration import AppIntegrationProgressWrapper from '@/modules/integration/components/integration-progress-wrapper.vue'; import { lfIntegrations } from '@/config/integrations'; import { ToastStore } from '@/shared/message/notification'; +import { IntegrationProgress } from '@/modules/integration/types/IntegrationProgress'; -export const showIntegrationProgressNotification = (platform, segmentId) => { +export const showIntegrationProgressNotification = (platform: string, segmentId: string) => { const label = lfIntegrations()[platform]?.name; - const defaultSlot = ({ progress }) => { - const integrationProgress = (progress || []).find((p) => p.platform === platform); + const defaultSlot = ({ progress }: { progress: IntegrationProgress[] | null }) => { + const integrationProgress = (progress || []).find((p: IntegrationProgress) => p.platform === platform); const text = h('p', { class: 'text-2xs text-black leading-4.5 pb-4', }, 'Sit back and relax. We will send you an email when the entire process is completed.'); diff --git a/frontend/src/modules/integration/types/IntegrationProgress.ts b/frontend/src/modules/integration/types/IntegrationProgress.ts index f7e0c3473b..63865a472c 100644 --- a/frontend/src/modules/integration/types/IntegrationProgress.ts +++ b/frontend/src/modules/integration/types/IntegrationProgress.ts @@ -1,5 +1,6 @@ export interface IntegrationProgress { data: Record + percentage?: number; platform: string; reportStatus: 'ok' | 'in-progress' | 'calculating'; segmentId: string; diff --git a/frontend/src/modules/overview/components/fragments/status-display.vue b/frontend/src/modules/overview/components/fragments/status-display.vue index b2cde9b771..ef40c318d3 100644 --- a/frontend/src/modules/overview/components/fragments/status-display.vue +++ b/frontend/src/modules/overview/components/fragments/status-display.vue @@ -9,7 +9,7 @@ In progress
diff --git a/frontend/src/modules/overview/components/fragments/trend-display.vue b/frontend/src/modules/overview/components/fragments/trend-display.vue index 8d30d5b387..1c03b1a64a 100644 --- a/frontend/src/modules/overview/components/fragments/trend-display.vue +++ b/frontend/src/modules/overview/components/fragments/trend-display.vue @@ -34,7 +34,7 @@ import { computed } from 'vue'; import LfIcon from '@/ui-kit/icon/Icon.vue'; import { formatNumber } from '@/utils/number'; -import type { OverviewTrends } from '@/modules/admin/modules/overview/types/overview.types'; +import type { OverviewTrends } from '../../types/overview.types'; const props = withDefaults( defineProps<{ diff --git a/frontend/src/ui-kit/contenteditable/Contenteditable.vue b/frontend/src/ui-kit/contenteditable/Contenteditable.vue index cc37ebbb06..a8e5d6c5c1 100644 --- a/frontend/src/ui-kit/contenteditable/Contenteditable.vue +++ b/frontend/src/ui-kit/contenteditable/Contenteditable.vue @@ -17,16 +17,18 @@ const props = defineProps<{ const emit = defineEmits<{(e: 'update:modelValue', value: string): any }>(); -const editable = ref(null); +const editable = ref(null); const proxy = ref(props.modelValue); -const onInput = (e: InputEvent) => { - const value = e.target?.innerText; +const onInput = (e: Event) => { + const value = (e.target as HTMLElement).innerText; proxy.value = value; emit('update:modelValue', value); }; const setDefualtValue = () => { - editable.value.innerText = props.modelValue; + if (editable.value) { + editable.value.innerText = props.modelValue; + } }; watch(() => props.modelValue, () => { diff --git a/frontend/src/ui-kit/dropdown/Dropdown.stories.ts b/frontend/src/ui-kit/dropdown/Dropdown.stories.ts index ce55867cf7..b448ca10f0 100644 --- a/frontend/src/ui-kit/dropdown/Dropdown.stories.ts +++ b/frontend/src/ui-kit/dropdown/Dropdown.stories.ts @@ -29,7 +29,7 @@ export const Regular = { placement: 'bottom-start', width: 'auto', }, - render: (args) => ({ + render: (args: Record) => ({ components: { LfDropdown, LfDropdownItem, diff --git a/frontend/src/ui-kit/dropdown/DropdownItem.stories.ts b/frontend/src/ui-kit/dropdown/DropdownItem.stories.ts index 7cb775a2fd..559bd2e7a0 100644 --- a/frontend/src/ui-kit/dropdown/DropdownItem.stories.ts +++ b/frontend/src/ui-kit/dropdown/DropdownItem.stories.ts @@ -25,7 +25,7 @@ export const Regular = { disabled: false, type: 'regular', }, - render: (args) => ({ + render: (args: Record) => ({ components: { LfDropdownItem, }, diff --git a/frontend/src/ui-kit/field-messages/FieldMessages.vue b/frontend/src/ui-kit/field-messages/FieldMessages.vue index c2144f3be6..8c9a65fa27 100644 --- a/frontend/src/ui-kit/field-messages/FieldMessages.vue +++ b/frontend/src/ui-kit/field-messages/FieldMessages.vue @@ -11,18 +11,20 @@