diff --git a/src/ui/views/Push/Push.tsx b/src/ui/views/Push/Push.tsx index 13a585f..c4c8c4a 100644 --- a/src/ui/views/Push/Push.tsx +++ b/src/ui/views/Push/Push.tsx @@ -34,6 +34,8 @@ import { useHasNamespacesEnabled } from "../../hooks/useHasNamespacesEnabled"; type SingleStepImportResolvableItemRequest = components["schemas"]["SingleStepImportResolvableItemRequest"]; type KeyScreenshotDto = components["schemas"]["KeyScreenshotDto"]; +type SimpleImportConflictResult = + components["schemas"]["SimpleImportConflictResult"]; export const Push: FunctionalComponent = () => { const language = useGlobalState((c) => c.config!.language!); @@ -46,6 +48,9 @@ export const Push: FunctionalComponent = () => { const [_loadingStatus, setLoadingStatus] = useState(); const [changes, setChanges] = useState(); const [pushedKeysCount, setPushedKeysCount] = useState(0); + const [unresolvedConflicts, setUnresolvedConflicts] = useState< + SimpleImportConflictResult[] + >([]); const selectedNodes = useConnectedNodes({ ignoreSelection: false }); const tolgeeConfig = useGlobalState((c) => c.config); const [uploadedScreenshotCount, setUploadedScreenshotCount] = useState(0); @@ -346,16 +351,20 @@ export const Push: FunctionalComponent = () => { }); }); - await updateTranslations.mutateAsync({ + const updateResult = await updateTranslations.mutateAsync({ content: { "application/json": { keys, + errorOnUnresolvedConflict: false, overrideMode: "RECOMMENDED", branch: branch || undefined, }, }, }); + const conflicts = updateResult?.unresolvedConflicts ?? []; + setUnresolvedConflicts(conflicts); + try { // Add tags to keys if ( @@ -454,6 +463,7 @@ export const Push: FunctionalComponent = () => { setPushedKeysCount(0); setUploadedScreenshotCount(0); setErrorMessage(undefined); + setUnresolvedConflicts([]); }; const isLoading = @@ -485,11 +495,32 @@ export const Push: FunctionalComponent = () => { // Show success screen immediately, don't wait for recompute
- Successfully updated {pushedKeysCount} key(s) + Successfully updated{" "} + {Math.max(pushedKeysCount - unresolvedConflicts.length, 0)} key(s) {uploadScreenshots ? ` and uploaded ${uploadedScreenshotCount} screenshot(s).` : "."}
+ {unresolvedConflicts.length > 0 && ( + + + }> +
+ These translations could not be updated because they are + either disabled or already reviewed: +
+ +
    + {unresolvedConflicts.map((c, i) => ( +
  • + {c.keyNamespace ? `${c.keyNamespace}:` : ""} + {c.keyName} ({c.language}) +
  • + ))} +
+
+
+ )}