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..765fb749a4 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 type { 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/lf/segments/store/actions.js b/frontend/src/modules/lf/segments/store/actions.js index 370f284818..e0e76f83c5 100644 --- a/frontend/src/modules/lf/segments/store/actions.js +++ b/frontend/src/modules/lf/segments/store/actions.js @@ -15,9 +15,7 @@ const isAdminOnly = () => { export default { // Project Groups - listProjectGroups({ - search = null, offset, limit, reset = false, adminOnly, - } = {}) { + listProjectGroups({ search = null, offset, limit, reset = false, adminOnly } = {}) { if (reset) { this.projectGroups.pagination = { pageSize: 20, @@ -132,9 +130,7 @@ export default { }, // Projects /** @param {{ parentSlug?: string | null, search?: string | null, offset?: number, limit?: number, reset?: boolean }} [params] */ - listProjects({ - parentSlug = null, search = null, offset, limit, reset = false, - } = {}) { + listProjects({ parentSlug = null, search = null, offset, limit, reset = false } = {}) { this.projects.loading = true; if (parentSlug) { @@ -201,7 +197,9 @@ export default { this.listProjects(); }) .catch((err) => { - ToastStore.error(getAxiosErrorMessage(err, 'Something went wrong while creating the project')); + ToastStore.error( + getAxiosErrorMessage(err, 'Something went wrong while creating the project'), + ); }) .finally(() => Promise.resolve()); }, @@ -212,7 +210,9 @@ export default { this.updateProjectList(id, data); }) .catch((err) => { - ToastStore.error(getAxiosErrorMessage(err, 'Something went wrong while updating the project')); + ToastStore.error( + getAxiosErrorMessage(err, 'Something went wrong while updating the project'), + ); }) .finally(() => Promise.resolve()); }, @@ -244,7 +244,9 @@ export default { this.listProjects(); }) .catch((err) => { - ToastStore.error(getAxiosErrorMessage(err, 'Something went wrong while creating the sub-project')); + ToastStore.error( + getAxiosErrorMessage(err, 'Something went wrong while creating the sub-project'), + ); }) .finally(() => Promise.resolve()); }, @@ -255,7 +257,9 @@ export default { this.listProjects(); }) .catch((err) => { - ToastStore.error(getAxiosErrorMessage(err, 'Something went wrong while updating the sub-project')); + ToastStore.error( + getAxiosErrorMessage(err, 'Something went wrong while updating the sub-project'), + ); }) .finally(() => Promise.resolve()); }, 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/shared/modules/merge/types/MemberMessage.ts b/frontend/src/shared/modules/merge/types/MemberMessage.ts index e58228191f..73b09deade 100644 --- a/frontend/src/shared/modules/merge/types/MemberMessage.ts +++ b/frontend/src/shared/modules/merge/types/MemberMessage.ts @@ -2,17 +2,21 @@ import type { Member } from '@/modules/member/types/Member'; import type { AxiosError } from 'axios'; export interface SuccessMessage { - primaryMember: Member; - secondaryMember: Member; - selectedProjectGroupId: number; + primaryMember: Member; + secondaryMember: Member; + selectedProjectGroupId: number; } export interface ErrorMessage { - error: AxiosError + error: AxiosError; } export interface MemberMessage { - loadingMessage: () => void; - successMessage: ({ primaryMember, secondaryMember, selectedProjectGroupId }: SuccessMessage) => void; - apiErrorMessage: ({ error }: ErrorMessage) => boolean; - } + loadingMessage: () => void; + successMessage: ({ + primaryMember, + secondaryMember, + selectedProjectGroupId, + }: SuccessMessage) => void; + apiErrorMessage: ({ error }: ErrorMessage) => boolean; +} diff --git a/frontend/src/ui-kit/contenteditable/Contenteditable.vue b/frontend/src/ui-kit/contenteditable/Contenteditable.vue index cc37ebbb06..7e58d06425 100644 --- a/frontend/src/ui-kit/contenteditable/Contenteditable.vue +++ b/frontend/src/ui-kit/contenteditable/Contenteditable.vue @@ -17,16 +17,19 @@ 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) => { + // shortcut: cast hides a null target; input events always have one. revisit: if onInput is reused + 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 @@