diff --git a/eslint.config.mjs b/eslint.config.mjs
index 0541cf6..d7b2a88 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -25,10 +25,11 @@ const eslintConfig = [
},
},
{
- // Payload Admin components can use elements (they're not in Next.js page router)
- files: ['src/components/admin/**/*.tsx'],
+ // Payload Admin components can use and
elements (they're not in Next.js page router)
+ files: ['src/components/admin/**/*.tsx', 'src/app/(payload)/admin/**/*.tsx'],
rules: {
'@next/next/no-html-link-for-pages': 'off',
+ '@next/next/no-img-element': 'off',
},
},
{
diff --git a/src/app/(payload)/admin/views/community/inbox/CommunityInbox.tsx b/src/app/(payload)/admin/views/community/inbox/CommunityInbox.tsx
index 7f687b4..9017d50 100644
--- a/src/app/(payload)/admin/views/community/inbox/CommunityInbox.tsx
+++ b/src/app/(payload)/admin/views/community/inbox/CommunityInbox.tsx
@@ -469,7 +469,7 @@ export const CommunityInbox: React.FC = () => {
}
// Use generated reply
- const useGeneratedReply = (reply: { text: string }) => {
+ const applyGeneratedReply = (reply: { text: string }) => {
setReplyText(reply.text)
setGeneratedReplies([])
}
@@ -1518,7 +1518,7 @@ export const CommunityInbox: React.FC = () => {
)}
diff --git a/src/hooks/useRealtimeUpdates.ts b/src/hooks/useRealtimeUpdates.ts
index c344194..a565995 100644
--- a/src/hooks/useRealtimeUpdates.ts
+++ b/src/hooks/useRealtimeUpdates.ts
@@ -94,12 +94,29 @@ export function useRealtimeUpdates(
const eventSourceRef = useRef(null)
const reconnectTimeoutRef = useRef(null)
const lastTimestampRef = useRef(null)
+ const connectRef = useRef<() => void>(() => {})
// Callbacks als Refs speichern um Dependency-Probleme zu vermeiden
const onUpdateRef = useRef(onUpdate)
const onConnectionChangeRef = useRef(onConnectionChange)
- onUpdateRef.current = onUpdate
- onConnectionChangeRef.current = onConnectionChange
+ useEffect(() => {
+ onUpdateRef.current = onUpdate
+ onConnectionChangeRef.current = onConnectionChange
+ })
+
+ /**
+ * Reconnect nach Verzögerung planen
+ */
+ const scheduleReconnect = useCallback(() => {
+ if (reconnectTimeoutRef.current) {
+ return // Bereits geplant
+ }
+
+ reconnectTimeoutRef.current = setTimeout(() => {
+ reconnectTimeoutRef.current = null
+ connectRef.current()
+ }, 3000) // 3 Sekunden warten
+ }, [])
/**
* Verbindung herstellen
@@ -205,7 +222,12 @@ export function useRealtimeUpdates(
setConnecting(false)
setError('Failed to connect')
}
- }, [channelIds, connecting, maxUpdates])
+ }, [channelIds, connecting, maxUpdates, scheduleReconnect])
+
+ // Keep ref in sync so scheduleReconnect can call latest connect
+ useEffect(() => {
+ connectRef.current = connect
+ })
/**
* Verbindung trennen
@@ -226,20 +248,6 @@ export function useRealtimeUpdates(
onConnectionChangeRef.current?.(false)
}, [])
- /**
- * Reconnect nach Verzögerung planen
- */
- const scheduleReconnect = useCallback(() => {
- if (reconnectTimeoutRef.current) {
- return // Bereits geplant
- }
-
- reconnectTimeoutRef.current = setTimeout(() => {
- reconnectTimeoutRef.current = null
- connect()
- }, 3000) // 3 Sekunden warten
- }, [connect])
-
/**
* Updates zurücksetzen
*/
@@ -254,9 +262,10 @@ export function useRealtimeUpdates(
setNewCount(0)
}, [])
- // Auto-Connect beim Mount
+ // Auto-Connect beim Mount (SSE external system subscription)
useEffect(() => {
if (autoConnect) {
+ // eslint-disable-next-line react-hooks/set-state-in-effect -- SSE subscription pattern
connect()
}
@@ -268,6 +277,7 @@ export function useRealtimeUpdates(
// Channel-IDs Änderung: Reconnect
useEffect(() => {
if (connected || connecting) {
+ // eslint-disable-next-line react-hooks/set-state-in-effect -- SSE reconnect pattern
disconnect()
// Kurz warten, dann neu verbinden
const timeout = setTimeout(() => {
diff --git a/src/lib/integrations/meta/MetaBaseClient.ts b/src/lib/integrations/meta/MetaBaseClient.ts
index d74e4ce..11be238 100644
--- a/src/lib/integrations/meta/MetaBaseClient.ts
+++ b/src/lib/integrations/meta/MetaBaseClient.ts
@@ -133,7 +133,7 @@ export class MetaBaseClient {
// Initial request
const initialParams = { ...params, limit }
- let response = await this.request>(endpoint, {
+ const response = await this.request>(endpoint, {
params: initialParams,
})