about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-06-16 11:24:55 +0200
committerClaire <claire.github-309c@sitedethib.com>2021-06-16 11:24:55 +0200
commit4aa78027ea747bb932645df31c831d632044e200 (patch)
tree9d937d5c21246c32ef80178ae637632e840bed38 /app
parentdb5baf3d1a93cbf6961f721205cff0beaf71bffd (diff)
parent8428faa0859d86c97950084658498a2c25e26f15 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile.lock`: upstream-updated dependency (redis) textually too close to
   glitch-specific one (redcarpet).
   Ported upstream change.
Diffstat (limited to 'app')
-rw-r--r--app/javascript/mastodon/features/ui/components/focal_point_modal.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.js b/app/javascript/mastodon/features/ui/components/focal_point_modal.js
index 3457b7633..edeb281e9 100644
--- a/app/javascript/mastodon/features/ui/components/focal_point_modal.js
+++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.js
@@ -219,6 +219,10 @@ class FocalPointModal extends ImmutablePureComponent {
   }
 
   handleTextDetection = () => {
+    this._detectText();
+  }
+
+  _detectText = (refreshCache = false) => {
     const { media } = this.props;
 
     this.setState({ detecting: true });
@@ -235,6 +239,7 @@ class FocalPointModal extends ImmutablePureComponent {
             this.setState({ ocrStatus: 'preparing', progress });
           }
         },
+        cacheMethod: refreshCache ? 'refresh' : 'write',
       });
 
       let media_url = media.get('url');
@@ -247,14 +252,20 @@ class FocalPointModal extends ImmutablePureComponent {
         }
       }
 
-      (async () => {
+      return (async () => {
         await worker.load();
         await worker.loadLanguage('eng');
         await worker.initialize('eng');
         const { data: { text } } = await worker.recognize(media_url);
         this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false });
         await worker.terminate();
-      })();
+      })().catch((e) => {
+        if (refreshCache) {
+          throw e;
+        } else {
+          this._detectText(true);
+        }
+      });
     }).catch((e) => {
       console.error(e);
       this.setState({ detecting: false });