fix: resolve unhandled exeptions and new message for OCR service on 400 error (#470)

This commit is contained in:
alex-krasn 2020-08-05 08:31:09 -07:00 коммит произвёл GitHub
Родитель c1f5d803f0
Коммит 76381bc659
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 50 добавлений и 30 удалений

Просмотреть файл

@ -630,6 +630,10 @@ export const english: IAppStrings = {
modelNotFound: {
title: "Model not found",
message: "Model \"${modelID}\" not found. Please use another model.",
},
getOcrError: {
title: "Cannot load OCR file",
message: "Failed to load from OCR file. Please check your connection or network settings.",
}
},
shareProject: {

Просмотреть файл

@ -631,7 +631,12 @@ export const spanish: IAppStrings = {
modelNotFound: {
title: "Modelo no encontrado",
message: "Modelo \"${modelID}\" no encontrado. Por favor use otro modelo.",
},
getOcrError: {
title: "No se puede cargar el archivo OCR",
message: "Error al cargar desde el archivo OCR. Verifique su conexión o configuración de red."
}
},
shareProject: {
name: "Compartir proyecto",

Просмотреть файл

@ -531,6 +531,7 @@ export interface IAppStrings {
modelCountLimitExceeded: IErrorMetadata,
requestSendError: IErrorMetadata,
modelNotFound: IErrorMetadata,
getOcrError: IErrorMetadata,
};
shareProject: {
name: string,

Просмотреть файл

@ -631,29 +631,32 @@ export default class EditorPage extends React.Component<IEditorPageProps, IEdito
this.loadingProjectAssets = true;
const assets: IAsset[] = _(await this.props.actions.loadAssets(this.props.project))
.uniqBy((asset) => asset.id)
.value();
if (this.state.assets.length === assets.length
&& JSON.stringify(this.state.assets) === JSON.stringify(assets)) {
this.loadingProjectAssets = false;
this.setState({ tagsLoaded: true });
return;
}
const lastVisited = assets.find((asset) => asset.id === this.props.project.lastVisitedAssetId);
this.setState({
assets,
}, async () => {
await this.props.actions.saveProject(this.props.project, false, true);
this.setState({ tagsLoaded: true });
if (assets.length > 0) {
await this.selectAsset(lastVisited ? lastVisited : assets[0]);
try {
const assets = _(await this.props.actions.loadAssets(this.props.project))
.uniqBy((asset) => asset.id)
.value();
if (this.state.assets.length === assets.length
&& JSON.stringify(this.state.assets) === JSON.stringify(assets)) {
this.loadingProjectAssets = false;
this.setState({ tagsLoaded: true });
return;
}
this.loadingProjectAssets = false;
});
const lastVisited = assets.find((asset) => asset.id === this.props.project.lastVisitedAssetId);
this.setState({
assets,
}, async () => {
await this.props.actions.saveProject(this.props.project, false, true);
this.setState({ tagsLoaded: true });
if (assets.length > 0) {
await this.selectAsset(lastVisited ? lastVisited : assets[0]);
}
this.loadingProjectAssets = false;
});
} catch (error) {
throw Error(error);
}
}
public loadOcrForNotVisited = async (runForAll?: boolean) => {

Просмотреть файл

@ -6,6 +6,7 @@ import { IProject } from "../models/applicationState";
import { IStorageProvider, StorageProviderFactory } from "../providers/storage/storageProviderFactory";
import { constants } from "../common/constants";
import ServiceHelper from "./serviceHelper";
import { strings } from "../common/strings";
export enum OcrStatus {
loadingFromAzureBlob,
@ -116,8 +117,12 @@ export class OCRService {
this.save(ocrFileName, data);
return data;
});
} catch (err) {
ServiceHelper.handleServiceError(err);
} catch (error) {
if (error.response.status === 400) {
throw new Error(strings.errors.getOcrError.message);
} else {
throw new Error(error);
}
}
}

Просмотреть файл

@ -97,12 +97,14 @@ export default class ProjectService implements IProjectService {
}
project = await encryptProject(project, securityToken);
await storageProvider.writeText(
`${project.name}${constants.projectFileExtension}`,
JSON.stringify(project, null, 4),
);
try {
await storageProvider.writeText(
`${project.name}${constants.projectFileExtension}`,
JSON.stringify(project, null, 4),
);
} catch (error) {
throw new Error(error);
}
return project;
}