diff --git a/packages/web/next.config.js b/packages/web/next.config.js
index e4d6e85dc..07228c7f9 100644
--- a/packages/web/next.config.js
+++ b/packages/web/next.config.js
@@ -3,7 +3,7 @@ const ContentSecurityPolicy = `
base-uri 'self';
connect-src 'self' ${process.env.NEXT_PUBLIC_SERVER_BASE_URL} https://proxy-prod.omnivore-image-cache.app https://accounts.google.com https://proxy-demo.omnivore-image-cache.app https://storage.googleapis.com https://api.segment.io https://cdn.segment.com https://widget.intercom.io https://api-iam.intercom.io https://static.intercomassets.com https://downloads.intercomcdn.com https://platform.twitter.com wss://nexus-websocket-a.intercom.io wss://nexus-websocket-b.intercom.io wss://nexus-europe-websocket.intercom.io wss://nexus-australia-websocket.intercom.io https://uploads.intercomcdn.com https://tools.applemediaservices.com;
font-src 'self' data: https://cdn.jsdelivr.net https://js.intercomcdn.com https://fonts.intercomcdn.com;
- form-action 'self' ${process.env.NEXT_PUBLIC_SERVER_BASE_URL} https://getpocket.com/auth/authorize https://intercom.help https://api-iam.intercom.io https://api-iam.eu.intercom.io https://api-iam.au.intercom.io;
+ form-action 'self' ${process.env.NEXT_PUBLIC_SERVER_BASE_URL} https://getpocket.com/auth/authorize https://intercom.help https://api-iam.intercom.io https://api-iam.eu.intercom.io https://api-iam.au.intercom.io https://www.notion.so https://api.notion.com;
frame-ancestors 'none';
frame-src 'self' https://accounts.google.com https://platform.twitter.com https://www.youtube.com https://www.youtube-nocookie.com;
manifest-src 'self';
diff --git a/packages/web/pages/settings/integrations.tsx b/packages/web/pages/settings/integrations.tsx
index cd83bb68c..2e1e17d9b 100644
--- a/packages/web/pages/settings/integrations.tsx
+++ b/packages/web/pages/settings/integrations.tsx
@@ -128,6 +128,7 @@ export default function Integrations(): JSX.Element {
input.value = importItemState
form.appendChild(input)
}
+ document.body.appendChild(form)
form.submit()
}
@@ -163,7 +164,7 @@ export default function Integrations(): JSX.Element {
{ duration: 5000 }
)
} finally {
- router.replace('/settings/integrations')
+ router.push('/settings/integrations')
}
}
@@ -189,7 +190,7 @@ export default function Integrations(): JSX.Element {
{ duration: 5000 }
)
} finally {
- router.replace('/settings/integrations/notion')
+ router.push('/settings/integrations/notion')
}
}
@@ -276,7 +277,7 @@ export default function Integrations(): JSX.Element {
button: {
text: isConnected('NOTION') ? 'Settings' : 'Connect',
icon: ,
- style: 'ctaWhite',
+ style: isConnected('NOTION') ? 'ctaWhite' : 'ctaDarkYellow',
action: () => {
isConnected('NOTION')
? router.push('/settings/integrations/notion')
diff --git a/packages/web/pages/settings/integrations/notion.tsx b/packages/web/pages/settings/integrations/notion.tsx
index 0d1107993..28fac42bb 100644
--- a/packages/web/pages/settings/integrations/notion.tsx
+++ b/packages/web/pages/settings/integrations/notion.tsx
@@ -12,6 +12,7 @@ import {
import 'antd/dist/antd.compact.css'
import { CheckboxValueType } from 'antd/lib/checkbox/Group'
import Image from 'next/image'
+import { useRouter } from 'next/router'
import { useMemo } from 'react'
import {
Box,
@@ -21,8 +22,11 @@ import {
import { PageMetaData } from '../../../components/patterns/PageMetaData'
import { Beta } from '../../../components/templates/Beta'
import { SettingsLayout } from '../../../components/templates/SettingsLayout'
+import { deleteIntegrationMutation } from '../../../lib/networking/mutations/deleteIntegrationMutation'
import { setIntegrationMutation } from '../../../lib/networking/mutations/setIntegrationMutation'
import { useGetIntegrationsQuery } from '../../../lib/networking/queries/useGetIntegrationsQuery'
+import { applyStoredTheme } from '../../../lib/themeUpdater'
+import { showSuccessToast } from '../../../lib/toastHelpers'
interface FieldData {
name: string | number | (string | number)[]
@@ -47,6 +51,9 @@ const Header = styled(Box, {
})
export default function Notion(): JSX.Element {
+ applyStoredTheme()
+
+ const router = useRouter()
const { integrations, revalidate } = useGetIntegrationsQuery()
const notion = useMemo(
() => integrations.find((i) => i.name == 'NOTION' && i.type == 'EXPORT'),
@@ -77,6 +84,17 @@ export default function Notion(): JSX.Element {
const [form] = Form.useForm()
const [messageApi, contextHolder] = message.useMessage()
+ const deleteNotion = async () => {
+ if (!notion) {
+ throw new Error('Notion integration not found')
+ }
+
+ await deleteIntegrationMutation(notion.id)
+ showSuccessToast('Notion integration disconnected successfully.')
+
+ router.push('/settings/integrations')
+ }
+
const updateNotion = async (values: FieldType) => {
if (!notion) {
throw new Error('Notion integration not found')
@@ -194,7 +212,7 @@ export default function Notion(): JSX.Element {
-