import { observer } from 'mobx-react-lite'
import { useCallback, useEffect, useState } from 'react'
import ProtectedItemOverlay from '@/Components/ProtectedItemOverlay/ProtectedItemOverlay'
import FileViewWithoutProtection from './FileViewWithoutProtection'
import { FileViewProps } from './FileViewProps'
import { ApplicationEvent } from '@standardnotes/snjs'
const FileView = ({ application, viewControllerManager, file }: FileViewProps) => {
const [shouldShowProtectedOverlay, setShouldShowProtectedOverlay] = useState(false)
useEffect(() => {
viewControllerManager.filesController.setShowProtectedOverlay(!application.isAuthorizedToRenderItem(file))
}, [application, file, viewControllerManager.filesController])
useEffect(() => {
setShouldShowProtectedOverlay(viewControllerManager.filesController.showProtectedOverlay)
}, [viewControllerManager.filesController.showProtectedOverlay])
const dismissProtectedOverlay = useCallback(async () => {
let showFileContents = true
if (application.hasProtectionSources()) {
showFileContents = await application.protections.authorizeItemAccess(file)
}
if (showFileContents) {
setShouldShowProtectedOverlay(false)
}
}, [application, file])
useEffect(() => {
const disposer = application.addEventObserver(async (event) => {
if (event === ApplicationEvent.UnprotectedSessionBegan) {
setShouldShowProtectedOverlay(false)
} else if (event === ApplicationEvent.UnprotectedSessionExpired) {
setShouldShowProtectedOverlay(!application.isAuthorizedToRenderItem(file))
}
})
return disposer
}, [application, file])
return shouldShowProtectedOverlay ? (
) : (
)
}
export default observer(FileView)