cadfa70e60
* #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>
33 lines
961 B
TypeScript
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
|
|
})
|
|
}
|
|
})
|