show an error message on web if notion database is not found

This commit is contained in:
Hongbo Wu
2024-07-01 18:11:08 +08:00
parent ee70f6603a
commit a680cbc9c9
2 changed files with 22 additions and 4 deletions

View File

@ -23,9 +23,17 @@ type SetIntegrationResult = {
setIntegration: SetIntegrationData
}
export enum SetIntegrationErrorCode {
AlreadyExists = 'ALREADY_EXISTS',
BadRequest = 'BAD_REQUEST',
InvalidToken = 'INVALID_TOKEN',
NotFound = 'NOT_FOUND',
Unauthorized = 'UNAUTHORIZED',
}
type SetIntegrationData = {
integration: Integration
errorCodes?: string[]
errorCodes?: SetIntegrationErrorCode[]
}
type Integration = {
@ -66,8 +74,8 @@ export async function setIntegrationMutation(
const data = (await gqlFetcher(mutation, { input })) as SetIntegrationResult
const error = data.setIntegration.errorCodes?.find(() => true)
if (error) {
if (error === 'INVALID_TOKEN') throw 'Your token is invalid.'
throw error
throw new Error(error)
}
return data.setIntegration.integration
}

View File

@ -13,7 +13,10 @@ import {
Task,
TaskState,
} from '../../../lib/networking/mutations/exportToIntegrationMutation'
import { setIntegrationMutation } from '../../../lib/networking/mutations/setIntegrationMutation'
import {
SetIntegrationErrorCode,
setIntegrationMutation,
} from '../../../lib/networking/mutations/setIntegrationMutation'
import { apiFetcher } from '../../../lib/networking/networkHelpers'
import { useGetIntegrationQuery } from '../../../lib/networking/queries/useGetIntegrationQuery'
import { showSuccessToast } from '../../../lib/toastHelpers'
@ -86,6 +89,13 @@ export default function Notion(): JSX.Element {
revalidate()
messageApi.success('Notion settings updated successfully.')
} catch (error) {
if (
error instanceof Error &&
error.message === SetIntegrationErrorCode.NotFound
) {
return messageApi.error('Notion database not found. Please make sure if you are using database ID instead of page ID.')
}
messageApi.error('There was an error updating Notion settings.')
}
}