From 31df05825ca21df7b0108e200681d6c2ab83fe33 Mon Sep 17 00:00:00 2001
From: renahlee <renahlee@outlook.com>
Date: Wed, 19 Apr 2023 10:51:33 -0700
Subject: Support CMD + Enter to publish post

---
 src/view/com/composer/Composer.tsx | 115 +++++++++++++++++++------------------
 1 file changed, 60 insertions(+), 55 deletions(-)

(limited to 'src/view/com/composer/Composer.tsx')

diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index f77005b5e..08f977f79 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -123,65 +123,67 @@ export const ComposePost = observer(function ComposePost({
     [gallery, track],
   )
 
-  const onPressPublish = useCallback(async () => {
-    if (isProcessing || richtext.graphemeLength > MAX_GRAPHEME_LENGTH) {
-      return
-    }
+  const onPressPublish = useCallback(
+    async rt => {
+      if (isProcessing || rt.graphemeLength_ > MAX_GRAPHEME_LENGTH) {
+        return
+      }
 
-    setError('')
+      setError('')
 
-    if (richtext.text.trim().length === 0 && gallery.isEmpty) {
-      setError('Did you want to say anything?')
-      return false
-    }
+      if (rt.text.trim().length === 0 && gallery.isEmpty) {
+        setError('Did you want to say anything?')
+        return false
+      }
 
-    setIsProcessing(true)
+      setIsProcessing(true)
 
-    try {
-      await apilib.post(store, {
-        rawText: richtext.text,
-        replyTo: replyTo?.uri,
-        images: gallery.paths,
-        quote: quote,
-        extLink: extLink,
-        onStateChange: setProcessingState,
-        knownHandles: autocompleteView.knownHandles,
-      })
-      track('Create Post', {
-        imageCount: gallery.size,
-      })
-    } catch (e: any) {
-      if (extLink) {
-        setExtLink({
-          ...extLink,
-          isLoading: true,
-          localThumb: undefined,
-        } as apilib.ExternalEmbedDraft)
+      try {
+        await apilib.post(store, {
+          rawText: rt.text,
+          replyTo: replyTo?.uri,
+          images: gallery.paths,
+          quote: quote,
+          extLink: extLink,
+          onStateChange: setProcessingState,
+          knownHandles: autocompleteView.knownHandles,
+        })
+        track('Create Post', {
+          imageCount: gallery.size,
+        })
+      } catch (e: any) {
+        if (extLink) {
+          setExtLink({
+            ...extLink,
+            isLoading: true,
+            localThumb: undefined,
+          } as apilib.ExternalEmbedDraft)
+        }
+        setError(cleanError(e.message))
+        setIsProcessing(false)
+        return
       }
-      setError(cleanError(e.message))
-      setIsProcessing(false)
-      return
-    }
-    store.me.mainFeed.checkForLatest({autoPrepend: true})
-    onPost?.()
-    hackfixOnClose()
-    Toast.show(`Your ${replyTo ? 'reply' : 'post'} has been published`)
-  }, [
-    isProcessing,
-    richtext,
-    setError,
-    setIsProcessing,
-    replyTo,
-    autocompleteView.knownHandles,
-    extLink,
-    hackfixOnClose,
-    onPost,
-    quote,
-    setExtLink,
-    store,
-    track,
-    gallery,
-  ])
+      store.me.mainFeed.checkForLatest({autoPrepend: true})
+      onPost?.()
+      hackfixOnClose()
+      Toast.show(`Your ${replyTo ? 'reply' : 'post'} has been published`)
+    },
+    [
+      isProcessing,
+      setError,
+      setIsProcessing,
+      replyTo,
+      autocompleteView.knownHandles,
+      extLink,
+      hackfixOnClose,
+      onPost,
+      quote,
+      setExtLink,
+      store,
+      track,
+      gallery,
+    ],
+  )
 
   const canPost = graphemeLength <= MAX_GRAPHEME_LENGTH
 
@@ -218,7 +220,9 @@ export const ComposePost = observer(function ComposePost({
             ) : canPost ? (
               <TouchableOpacity
                 testID="composerPublishBtn"
-                onPress={onPressPublish}>
+                onPress={() => {
+                  onPressPublish(richtext)
+                }}>
                 <LinearGradient
                   colors={[gradients.blueLight.start, gradients.blueLight.end]}
                   start={{x: 0, y: 0}}
@@ -281,6 +285,7 @@ export const ComposePost = observer(function ComposePost({
                 autocompleteView={autocompleteView}
                 setRichText={setRichText}
                 onPhotoPasted={onPhotoPasted}
+                onPressPublish={onPressPublish}
                 onSuggestedLinksChanged={setSuggestedLinks}
                 onError={setError}
               />
-- 
cgit 1.4.1

