Files
workavia-calendar-front/src/features/Calendars/services/importEventFromFileAsync.ts
T
lethemanh cadfa70e60 #708 apply strictier linting rules (#717)
* #708 apply strictier linting rules and fix simple eslint bugs

* #708 fix eslint errors relate to promise

* #708 fix eslint import/no-extraneous-dependencies

* #708 fix eslint errors of react-hook

* #708 enable eslint check for typescript

---------

Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-01 17:15:10 +02:00

33 lines
961 B
TypeScript

import { importEventFromFile } from '@/features/Events/EventApi'
import { importFile } from '@/utils/apiUtils'
import { formatReduxError } from '@/utils/errorUtils'
import { createAsyncThunk } from '@reduxjs/toolkit'
import { RejectedError } from '../types/RejectedError'
export const importEventFromFileAsync = createAsyncThunk<
void,
{
calLink: string
file: File
},
{ rejectValue: RejectedError }
>('calendars/importEvent', async ({ calLink, file }, { rejectWithValue }) => {
try {
const response = await importFile(file)
const id = response?._id
if (!id) {
return rejectWithValue({
message: 'Failed to upload file: missing file ID',
status: undefined
})
}
await importEventFromFile(id, calLink)
} catch (err) {
const error = err as { response?: { status?: number } }
return rejectWithValue({
message: formatReduxError(err),
status: error.response?.status
})
}
})