[Glitch] Fix tesseract.js being part of the common chunk

Port dfe6059889 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
Eugen Rochko 2019-08-15 17:24:45 +02:00 committed by Thibaut Girka
parent 41c7fec796
commit 5c35c9c409
2 changed files with 18 additions and 12 deletions

View file

@ -10,11 +10,11 @@ import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import IconButton from 'flavours/glitch/components/icon_button'; import IconButton from 'flavours/glitch/components/icon_button';
import Button from 'flavours/glitch/components/button'; import Button from 'flavours/glitch/components/button';
import Video from 'flavours/glitch/features/video'; import Video from 'flavours/glitch/features/video';
import { TesseractWorker } from 'tesseract.js';
import Textarea from 'react-textarea-autosize'; import Textarea from 'react-textarea-autosize';
import UploadProgress from 'flavours/glitch/features/compose/components/upload_progress'; import UploadProgress from 'flavours/glitch/features/compose/components/upload_progress';
import CharacterCounter from 'flavours/glitch/features/compose/components/character_counter'; import CharacterCounter from 'flavours/glitch/features/compose/components/character_counter';
import { length } from 'stringz'; import { length } from 'stringz';
import { Tesseract as fetchTesseract } from 'flavours/glitch/util/async-components';
const messages = defineMessages({ const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' }, close: { id: 'lightbox.close', defaultMessage: 'Close' },
@ -148,19 +148,21 @@ class FocalPointModal extends ImmutablePureComponent {
handleTextDetection = () => { handleTextDetection = () => {
const { media } = this.props; const { media } = this.props;
this.setState({ detecting: true });
fetchTesseract().then(({ TesseractWorker }) => {
const worker = new TesseractWorker({ const worker = new TesseractWorker({
workerPath: `${assetHost}/packs/ocr/worker.min.js`, workerPath: `${assetHost}/packs/ocr/worker.min.js`,
corePath: `${assetHost}/packs/ocr/tesseract-core.wasm.js`, corePath: `${assetHost}/packs/ocr/tesseract-core.wasm.js`,
langPath: `${assetHost}/ocr/lang-data`, langPath: `${assetHost}/ocr/lang-data`,
}); });
this.setState({ detecting: true });
worker.recognize(media.get('url')) worker.recognize(media.get('url'))
.progress(({ progress }) => this.setState({ progress })) .progress(({ progress }) => this.setState({ progress }))
.finally(() => worker.terminate()) .finally(() => worker.terminate())
.then(({ text }) => this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false })) .then(({ text }) => this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false }))
.catch(() => this.setState({ detecting: false })); .catch(() => this.setState({ detecting: false }));
}).catch(() => this.setState({ detecting: false }));
} }
render () { render () {

View file

@ -153,3 +153,7 @@ export function ListAdder () {
export function Search () { export function Search () {
return import(/*webpackChunkName: "features/glitch/async/search" */'flavours/glitch/features/search'); return import(/*webpackChunkName: "features/glitch/async/search" */'flavours/glitch/features/search');
} }
export function Tesseract () {
return import(/*webpackChunkName: "tesseract" */'tesseract.js');
}