Files
outline/app/scenes/Document/components/MarkAsViewed.ts
Tom Moor 15b1069bcc chore: Move to Typescript (#2783)
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously.

closes #1282
2021-11-29 06:40:55 -08:00

34 lines
695 B
TypeScript

import * as React from "react";
import Document from "~/models/Document";
const MARK_AS_VIEWED_AFTER = 3 * 1000;
type Props = {
document: Document;
children?: React.ReactNode;
};
class MarkAsViewed extends React.Component<Props> {
viewTimeout: ReturnType<typeof setTimeout>;
componentDidMount() {
const { document } = this.props;
this.viewTimeout = setTimeout(async () => {
const view = await document.view();
if (view) {
document.updateLastViewed(view);
}
}, MARK_AS_VIEWED_AFTER);
}
componentWillUnmount() {
clearTimeout(this.viewTimeout);
}
render() {
return this.props.children || null;
}
}
export default MarkAsViewed;