@@ -135,6 +136,14 @@ const ClipperView = ({
}
}, [application.user])
+ const [isScreenshotMode, setIsScreenshotMode] = useState(false)
+ useEffect(() => {
+ void sendMessageToActiveTab({
+ type: RuntimeMessageTypes.ToggleScreenshotMode,
+ enabled: isScreenshotMode,
+ })
+ }, [isScreenshotMode])
+
const [hasSelection, setHasSelection] = useState(false)
useEffect(() => {
if (!user) {
@@ -143,7 +152,7 @@ const ClipperView = ({
try {
const checkIfPageHasSelection = async () => {
- setHasSelection(Boolean(await sendMessageToActiveTab(RuntimeMessageTypes.HasSelection)))
+ setHasSelection(Boolean(await sendMessageToActiveTab({ type: RuntimeMessageTypes.HasSelection })))
}
void checkIfPageHasSelection()
@@ -188,6 +197,17 @@ const ClipperView = ({
})
return
}
+ if (clipPayload.isScreenshot) {
+ const blob = await fetch(clipPayload.content).then((response) => response.blob())
+
+ const file = new File([blob], `${clipPayload.title} - ${clipPayload.url}.png`, {
+ type: 'image/png',
+ })
+
+ viewControllerManager.filesController.uploadNewFile(file).catch(console.error)
+
+ return
+ }
const editorStateJSON = await getSuperJSONFromClipPayload(clipPayload)
@@ -216,7 +236,15 @@ const ClipperView = ({
}
void createNoteFromClip()
- }, [application.items, application.linkingController, application.sync, clipPayload, defaultTag, isEntitledRef])
+ }, [
+ application.items,
+ application.linkingController,
+ application.sync,
+ clipPayload,
+ defaultTag,
+ isEntitledRef,
+ viewControllerManager.filesController,
+ ])
const upgradePlan = useCallback(async () => {
if (hasSubscription) {
@@ -307,18 +335,25 @@ const ClipperView = ({