* feat: Enable note deletion. * enable dismissing the upgrade button * delete notes * fix chat session dialog error * chore: bump * chore: bump correctly
71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
'use client'
|
|
|
|
import { useEffect } from 'react'
|
|
import { toast } from 'sonner'
|
|
import { getConfig } from '@/lib/config'
|
|
|
|
/**
|
|
* Hook to check for version updates and display notification.
|
|
* Should be called once per session in the dashboard layout.
|
|
*/
|
|
export function useVersionCheck() {
|
|
useEffect(() => {
|
|
const checkVersion = async () => {
|
|
try {
|
|
const config = await getConfig()
|
|
|
|
// Only show notification if update is available
|
|
if (config.hasUpdate && config.latestVersion) {
|
|
// Check if user has dismissed this version in this session
|
|
const dismissKey = `version_notification_dismissed_${config.latestVersion}`
|
|
const isDismissed = sessionStorage.getItem(dismissKey)
|
|
|
|
if (!isDismissed) {
|
|
// Show persistent toast notification
|
|
toast.info(`Version ${config.latestVersion} available`, {
|
|
description: 'A new version of Open Notebook is available.',
|
|
duration: Infinity, // No auto-dismiss - user must manually dismiss
|
|
closeButton: true, // Show close button for dismissing
|
|
action: {
|
|
label: 'View on GitHub',
|
|
onClick: () => {
|
|
window.open(
|
|
'https://github.com/lfnovo/open-notebook',
|
|
'_blank',
|
|
'noopener,noreferrer'
|
|
)
|
|
},
|
|
},
|
|
onDismiss: () => {
|
|
// Store dismissal in session storage
|
|
sessionStorage.setItem(dismissKey, 'true')
|
|
},
|
|
})
|
|
|
|
console.log(
|
|
`🔔 [Version Check] Update available: ${config.version} → ${config.latestVersion}`
|
|
)
|
|
} else {
|
|
console.log(
|
|
`🔕 [Version Check] Notification dismissed for version ${config.latestVersion}`
|
|
)
|
|
}
|
|
} else if (config.latestVersion) {
|
|
console.log(
|
|
`✅ [Version Check] Running latest version: ${config.version}`
|
|
)
|
|
} else {
|
|
console.log(
|
|
`⚠️ [Version Check] Could not check for updates (offline or GitHub unavailable)`
|
|
)
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ [Version Check] Failed to check version:', error)
|
|
// Silently fail - don't disrupt user experience
|
|
}
|
|
}
|
|
|
|
// Run version check
|
|
checkVersion()
|
|
}, []) // Run once on mount
|
|
}
|