From d430afb11f442fec1fae605f8214a84ec3c39037 Mon Sep 17 00:00:00 2001 From: udara Date: Sun, 12 Nov 2023 14:23:36 -0500 Subject: [PATCH 1/3] Cleanup attachments and toasts --- assets/icon.svg | 2 +- src/renderer/App.css | 2 - src/renderer/icons/img/ChainIcon.js | 6 +- src/renderer/icons/img/EditIcon.js | 8 +- .../Attachments/Attachments.module.scss | 1 + .../pages/Pile/Editor/Attachments/index.jsx | 32 +++--- src/renderer/pages/Pile/Editor/index.jsx | 97 +++++++++++-------- .../Pile/Posts/Post/Ball/Ball.module.scss | 2 +- .../Pile/Toasts/Toast/Loaders/Info/index.jsx | 2 +- .../Toasts/Toast/Loaders/Waiting/index.jsx | 2 +- 10 files changed, 90 insertions(+), 64 deletions(-) diff --git a/assets/icon.svg b/assets/icon.svg index 743b89d..00426ac 100644 --- a/assets/icon.svg +++ b/assets/icon.svg @@ -1,6 +1,6 @@ - + diff --git a/src/renderer/App.css b/src/renderer/App.css index fccae0d..aa01b71 100644 --- a/src/renderer/App.css +++ b/src/renderer/App.css @@ -14,7 +14,6 @@ --secondary: #626262; --base: #4d80e6; - --base-text: rgb(246, 247, 255); --base-hover: #2b5bbb; --base-yellow: #e6e04d; --base-green: #4de64d; @@ -43,7 +42,6 @@ --secondary: #c1c1c1; --base: #4d88ff; - --base-text: hsl(213, 100%, 93%); --base-hover: #82acff; --base-yellow: #776b0e; --base-green: #128212; diff --git a/src/renderer/icons/img/ChainIcon.js b/src/renderer/icons/img/ChainIcon.js index dec97c2..f69c1ee 100644 --- a/src/renderer/icons/img/ChainIcon.js +++ b/src/renderer/icons/img/ChainIcon.js @@ -9,10 +9,10 @@ export const ChainIcon = (props) => { > diff --git a/src/renderer/icons/img/EditIcon.js b/src/renderer/icons/img/EditIcon.js index 889ebbd..5bae085 100644 --- a/src/renderer/icons/img/EditIcon.js +++ b/src/renderer/icons/img/EditIcon.js @@ -3,15 +3,15 @@ export const EditIcon = (props) => { diff --git a/src/renderer/pages/Pile/Editor/Attachments/Attachments.module.scss b/src/renderer/pages/Pile/Editor/Attachments/Attachments.module.scss index c38ea72..96043b3 100644 --- a/src/renderer/pages/Pile/Editor/Attachments/Attachments.module.scss +++ b/src/renderer/pages/Pile/Editor/Attachments/Attachments.module.scss @@ -7,6 +7,7 @@ img { max-height: 350px; + max-width: 100%; border-radius: 22px; transition: all ease-in-out 120ms; diff --git a/src/renderer/pages/Pile/Editor/Attachments/index.jsx b/src/renderer/pages/Pile/Editor/Attachments/index.jsx index 02f7fcd..06e93d6 100644 --- a/src/renderer/pages/Pile/Editor/Attachments/index.jsx +++ b/src/renderer/pages/Pile/Editor/Attachments/index.jsx @@ -1,7 +1,7 @@ import styles from './Attachments.module.scss'; import { useCallback, useState, useEffect } from 'react'; import { DiscIcon, PhotoIcon, TrashIcon, TagIcon } from 'renderer/icons'; -import { motion, AnimatePresence } from 'framer-motion'; +import { motion } from 'framer-motion'; import { usePilesContext } from 'renderer/context/PilesContext'; export default function Attachments({ @@ -20,17 +20,25 @@ export default function Attachments({ if (image_exts.includes(extension)) { return ( -
- {editable && ( -
onRemoveAttachment(attachment)} - > - -
- )} - -
+ +
+ {editable && ( +
onRemoveAttachment(attachment)} + > + +
+ )} + +
+
); } }); diff --git a/src/renderer/pages/Pile/Editor/index.jsx b/src/renderer/pages/Pile/Editor/index.jsx index 256bee3..7e566e4 100644 --- a/src/renderer/pages/Pile/Editor/index.jsx +++ b/src/renderer/pages/Pile/Editor/index.jsx @@ -20,6 +20,7 @@ import ProseMirrorStyles from './ProseMirror.scss'; import { useAIContext } from 'renderer/context/AIContext'; import useThread from 'renderer/hooks/useThread'; import LinkPreviews from './LinkPreviews'; +import { useToastsContext } from 'renderer/context/ToastsContext'; export default function Editor({ postPath = null, @@ -44,27 +45,29 @@ export default function Editor({ } = usePost(postPath, { isReply, parentPostPath, reloadParentPost, isAI }); const { getThread } = useThread(); const { ai, prompt } = useAIContext(); + const { addNotification, removeNotification } = useToastsContext(); const isNew = !postPath; const EnterSubmitExtension = Extension.create({ - name: 'customExtension', - + name: 'EnterSubmitExtension', addCommands() { return { - triggerSubmit: () => ({ state, dispatch }) => { - // This will trigger a 'submit' event on the editor - const event = new CustomEvent('submit'); - document.dispatchEvent(event); - - return true; - }, + triggerSubmit: + () => + ({ state, dispatch }) => { + // This will trigger a 'submit' event on the editor + const event = new CustomEvent('submit'); + document.dispatchEvent(event); + + return true; + }, }; }, addKeyboardShortcuts() { return { - 'Enter': ({ editor }) => { + Enter: ({ editor }) => { editor.commands.triggerSubmit(); return true; }, @@ -86,10 +89,10 @@ export default function Editor({ EnterSubmitExtension, ], editorProps: { - handlePaste: function(view, event, slice) { + handlePaste: function (view, event, slice) { const items = Array.from(event.clipboardData?.items || []); for (const item of items) { - if (item.type.indexOf("image") === 0) { + if (item.type.indexOf('image') === 0) { const file = item.getAsFile(); const fileName = file.name; // Retrieve the filename const fileExtension = fileName.split('.').pop(); // Extract the file extension @@ -105,7 +108,7 @@ export default function Editor({ } } return false; // not handled use default behaviour - } + }, }, autofocus: true, editable: editable, @@ -170,11 +173,23 @@ export default function Editor({ }; }, [handleSubmit, editor]); + // This has to ensure that it only calls the AI generate function + // on entries added for the AI that are empty. const generateAiResponse = useCallback(async () => { if (!editor) return; if (isAIResponding) return; + const isEmpty = editor.state.doc.textContent.length === 0; + + // isAI makes sure AI responses are only generated for + // AI entries that are empty. if (isAI && isEmpty) { + addNotification({ + id: 'reflecting', + type: 'thinking', + message: 'talking to AI', + dismissTime: 10000, + }); setEditable(false); setIsAiResponding(true); const thread = await getThread(parentPostPath); @@ -187,6 +202,7 @@ export default function Editor({ const message = { role: 'user', content: post.content }; context.push(message); }); + context.push({ role: 'system', content: 'You can only respond in plaintext, do NOT use HTML.', @@ -205,6 +221,7 @@ export default function Editor({ const token = part.choices[0].delta.content; editor.commands.insertContent(token); } + removeNotification('reflecting'); setIsAiResponding(false); } }, [editor, isAI]); @@ -251,7 +268,7 @@ export default function Editor({ if (!post) return; return ( -
+
{editable ? ( - - -
0 ? styles.open : '' - }`} + +
0 ? styles.open : '' + }`} > -
- +
+
+ + + +
-
-
+ - {editable && ( - + - + From 91c7ad89066ae8114d28e40df0d0f6a82eb34790 Mon Sep 17 00:00:00 2001 From: udara Date: Sun, 12 Nov 2023 15:49:02 -0500 Subject: [PATCH 2/3] Remove windows build (not ready yet) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc41fba..cc0787c 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", - "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac --win --publish never", + "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac --publish never", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", From 6028a5557cb15343b52a34d73c6e52aef8bbb58e Mon Sep 17 00:00:00 2001 From: udara Date: Sun, 12 Nov 2023 15:53:17 -0500 Subject: [PATCH 3/3] Add --base-text color --- src/renderer/App.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/renderer/App.css b/src/renderer/App.css index aa01b71..fccae0d 100644 --- a/src/renderer/App.css +++ b/src/renderer/App.css @@ -14,6 +14,7 @@ --secondary: #626262; --base: #4d80e6; + --base-text: rgb(246, 247, 255); --base-hover: #2b5bbb; --base-yellow: #e6e04d; --base-green: #4de64d; @@ -42,6 +43,7 @@ --secondary: #c1c1c1; --base: #4d88ff; + --base-text: hsl(213, 100%, 93%); --base-hover: #82acff; --base-yellow: #776b0e; --base-green: #128212;