* add platform guards * add service management * fix types * move to zustand for servicehub * update App Updater * update tauri missing move * update app updater * refactor: move PlatformFeatures to separate const file 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * change tauri fetch name * update implementation * update extension fetch * make web version run properly * disabled unused web settings * fix all tests * fix lint * fix tests * add mock for extension * fix build * update make and mise * fix tsconfig for web-extensions * fix loader type * cleanup * fix test * update error handling + mcp should be working * Update mcp init * use separate is_web_app build property * Remove fixed model catalog url * fix additional tests * fix download issue (event emitter not implemented correctly) * Update Title html * fix app logs * update root tsx render timing --------- Co-authored-by: Claude <noreply@anthropic.com>
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { useEffect } from 'react'
|
|
import { events } from '@janhq/core'
|
|
import { useModelProvider } from '@/hooks/useModelProvider'
|
|
import { useServiceHub } from '@/hooks/useServiceHub'
|
|
|
|
/**
|
|
* GlobalEventHandler handles global events that should be processed across all screens
|
|
* This provider should be mounted at the root level to ensure all screens can benefit from global event handling
|
|
*/
|
|
export function GlobalEventHandler() {
|
|
const { setProviders } = useModelProvider()
|
|
const serviceHub = useServiceHub()
|
|
|
|
// Handle settingsChanged event globally
|
|
useEffect(() => {
|
|
const handleSettingsChanged = async (event: {
|
|
key: string
|
|
value: string
|
|
}) => {
|
|
console.log('Global settingsChanged event:', event)
|
|
|
|
// Handle version_backend changes specifically
|
|
if (event.key === 'version_backend') {
|
|
try {
|
|
// Refresh providers to get updated settings from the extension
|
|
const updatedProviders = await serviceHub.providers().getProviders()
|
|
setProviders(updatedProviders)
|
|
console.log('Providers refreshed after version_backend change')
|
|
} catch (error) {
|
|
console.error(
|
|
'Failed to refresh providers after settingsChanged:',
|
|
error
|
|
)
|
|
}
|
|
}
|
|
|
|
// Add more global event handlers here as needed
|
|
// For example:
|
|
// if (event.key === 'some_other_setting') {
|
|
// // Handle other setting changes
|
|
// }
|
|
}
|
|
|
|
// Subscribe to the settingsChanged event
|
|
events.on('settingsChanged', handleSettingsChanged)
|
|
|
|
// Cleanup subscription on unmount
|
|
return () => {
|
|
events.off('settingsChanged', handleSettingsChanged)
|
|
}
|
|
}, [setProviders, serviceHub])
|
|
|
|
// This component doesn't render anything
|
|
return null
|
|
}
|