mirror of https://github.com/micromata/borgbackup-butler.git

Kai Reinhard
09.43.2018 1a21e0d3baca3870611a1fe712027a559d9a4b93
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import React from 'react';
import {connect} from 'react-redux';
import {PageHeader} from '../../general/BootstrapComponents';
import {getRestServiceUrl} from '../../../utilities/global';
import {FormButton} from '../../general/forms/FormComponents';
import {Table} from 'reactstrap';
import I18n from "../../general/translation/I18n";
 
 
class UpdatePage extends React.Component {
 
    onUpdate = () => {
        fetch(getRestServiceUrl('updates/install'), {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        });
    }
 
    componentDidMount() {
        fetch(getRestServiceUrl("updates/info"), {
            method: "GET",
            dataType: "JSON",
            headers: {
                "Content-Type": "text/plain; charset=utf-8"
            }
        })
            .then((resp) => {
                return resp.json();
            })
            .then((data) => {
                this.setState({
                    version: data.version,
                    installerUrl: data.installerUrl,
                    fileSize: data.fileSize,
                    filename: data.filename,
                    baseUrl: data.baseUrl,
                    comment: data.comment
                });
            })
            .catch((error) => {
                console.log(error, "Oups, what's happened?")
            })
    }
 
    render() {
        let content = <I18n name={'update.noUpdateAvailable'}/>;
        if (this.props.updateVersion) {
            let comment = null;
            if (this.state.comment) {
                comment = <tr>
                    <th><I18n name={'common.comment'}/></th>
                    <td>{this.state.comment}</td>
                </tr>;
            }
            content = <React.Fragment>
                <h2><I18n name={'update.newVersion'}/></h2>
                <I18n name={'update.newVersionAvailable'} params={[this.props.updateVersion]}/>
                <br/>
                <I18n name={'update.newVersion.simplyClickButton'} />
                <br/>
                <br/>
                <form>
                    <FormButton
                        onClick={this.onUpdate}
                        hintKey={'update.update.button.hint'}
                    >
                        <I18n name={'common.update'}/>
                    </FormButton>
                </form>
                <br/>
                <I18n name={'update.description.line1'}/>
                <br/>
                <I18n name={'update.description.line2'}/>
                <br/>
                <br/>
                <Table striped bordered hover size={'sm'}>
                    <tbody>
                    <tr>
                        <th><I18n name={'version'}/></th>
                        <td>{this.state.version}</td>
                    </tr>
                    <tr>
                        <th><I18n name={'update.installerUrl'}/></th>
                        <td><a href={this.state.installerUrl} target={'_new'}>{this.state.installerUrl}</a></td>
                    </tr>
                    <tr>
                        <th><I18n name={'common.fileSize'}/></th>
                        <td>{this.state.fileSize}</td>
                    </tr>
                    <tr>
                        <th><I18n name={'common.filename'}/></th>
                        <td>{this.state.filename}</td>
                    </tr>
                    {comment}
                    </tbody>
                </Table>
 
            </React.Fragment>
        }
        return <React.Fragment>
            <PageHeader><I18n name={'update'}/></PageHeader>
            {content}
        </React.Fragment>;
    }
 
    constructor(props) {
        super(props);
        this.state = {
            version: null,
            installerUrl: null,
            baseUrl: null,
            fileSize: null,
            filename: null,
            comment: null
        }
    }
}
 
const mapStateToProps = state => ({
    updateVersion: state.version.updateVersion
});
 
export default connect(mapStateToProps, {})(UpdatePage);