mirror of
				https://github.com/scm-manager/scm-manager.git
				synced 2025-11-03 20:15:52 +01:00 
			
		
		
		
	create a separate LoadingDiff component
This commit is contained in:
		@@ -0,0 +1,64 @@
 | 
			
		||||
//@flow
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { apiClient } from "../apiclient";
 | 
			
		||||
import ErrorNotification from "../ErrorNotification";
 | 
			
		||||
import Loading from "../Loading";
 | 
			
		||||
import Diff from "./Diff";
 | 
			
		||||
 | 
			
		||||
type Props = {
 | 
			
		||||
  url: string,
 | 
			
		||||
  sideBySide: boolean
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
type State = {
 | 
			
		||||
  diff?: string,
 | 
			
		||||
  loading: boolean,
 | 
			
		||||
  error?: Error
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class LoadingDiff extends React.Component<Props, State> {
 | 
			
		||||
 | 
			
		||||
  static defaultProps = {
 | 
			
		||||
    sideBySide: false
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  constructor(props: Props) {
 | 
			
		||||
    super(props);
 | 
			
		||||
    this.state = {
 | 
			
		||||
      loading: true
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  componentDidMount() {
 | 
			
		||||
    const { url } = this.props;
 | 
			
		||||
    apiClient
 | 
			
		||||
      .get(url)
 | 
			
		||||
      .then(response => response.text())
 | 
			
		||||
      .then(text => {
 | 
			
		||||
        this.setState({
 | 
			
		||||
          loading: false,
 | 
			
		||||
          diff: text
 | 
			
		||||
        });
 | 
			
		||||
      })
 | 
			
		||||
      .catch(error => {
 | 
			
		||||
        this.setState({
 | 
			
		||||
          loading: false,
 | 
			
		||||
          error
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render() {
 | 
			
		||||
    const { diff, loading, error } = this.state;
 | 
			
		||||
    if (error) {
 | 
			
		||||
      return <ErrorNotification error={error} />;
 | 
			
		||||
    } else if (loading || !diff) {
 | 
			
		||||
      return <Loading />;
 | 
			
		||||
    } else {
 | 
			
		||||
      return <Diff diff={diff} />;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default LoadingDiff;
 | 
			
		||||
		Reference in New Issue
	
	Block a user