Fixed reuploading the same file

This commit is contained in:
Przemek Wiech
2019-04-09 00:12:21 +02:00
parent f590675261
commit 177c721c2f
2 changed files with 15 additions and 3 deletions

View File

@@ -45,9 +45,12 @@ export class App extends React.Component<RouteComponentProps, {}> {
private isNewData(
hash: string | undefined,
url: string | undefined,
gedcom: string | undefined,
): boolean {
return (
!!(hash && hash !== this.state.hash) || !!(url && this.state.url !== url)
!!(hash && hash !== this.state.hash) ||
!!(url && this.state.url !== url) ||
(!!gedcom && !this.state.loading && !this.state.data)
);
}
@@ -77,7 +80,7 @@ export class App extends React.Component<RouteComponentProps, {}> {
if (!url && !hash) {
this.props.history.replace({pathname: '/'});
} else if (this.isNewData(hash, url)) {
} else if (this.isNewData(hash, url, gedcom)) {
try {
// Set loading state.
this.setState(

View File

@@ -105,7 +105,16 @@ export class TopBar extends React.Component<
.join('|');
// Hash GEDCOM contents with uploaded image file names.
const hash = md5(md5(data) + imageFileNames);
this.props.history.push({
// Use history.replace() when reuploading the same file and history.push() when loading
// a new file.
const search = queryString.parse(this.props.location.search);
const historyPush =
search.file === hash
? this.props.history.replace
: this.props.history.push;
historyPush({
pathname: '/view',
search: queryString.stringify({file: hash}),
state: {data, images: imageMap},