Merge remote-tracking branch 'origin/develop' into dbkr/electron_3

pull/2535/head
David Baker 2016-11-03 13:32:01 +00:00
commit fb3ca441ba
4 changed files with 66 additions and 56 deletions

View File

@ -16,8 +16,8 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); import React from 'react';
var sdk = require('matrix-react-sdk'); import sdk from 'matrix-react-sdk';
import Modal from 'matrix-react-sdk/lib/Modal'; import Modal from 'matrix-react-sdk/lib/Modal';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
@ -30,13 +30,18 @@ function checkVersion(ver) {
return parts[0] == 'vector' && parts[2] == 'react' && parts[4] == 'js'; return parts[0] == 'vector' && parts[2] == 'react' && parts[4] == 'js';
} }
export default function NewVersionBar(props) { export default React.createClass({
const onChangelogClicked = () => { propTypes: {
if (props.releaseNotes) { version: React.PropTypes.string.isRequired,
newVersion: React.PropTypes.string.isRequired,
releaseNotes: React.PropTypes.string,
},
displayReleaseNotes: function(releaseNotes) {
const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog'); const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog');
Modal.createDialog(QuestionDialog, { Modal.createDialog(QuestionDialog, {
title: "What's New", title: "What's New",
description: <pre className="changelog_text">{props.releaseNotes}</pre>, description: <pre className="changelog_text">{releaseNotes}</pre>,
button: "Update", button: "Update",
onFinished: (update) => { onFinished: (update) => {
if(update && PlatformPeg.get()) { if(update && PlatformPeg.get()) {
@ -44,30 +49,37 @@ export default function NewVersionBar(props) {
} }
} }
}); });
} else { },
displayChangelog: function() {
const ChangelogDialog = sdk.getComponent('dialogs.ChangelogDialog'); const ChangelogDialog = sdk.getComponent('dialogs.ChangelogDialog');
Modal.createDialog(ChangelogDialog, { Modal.createDialog(ChangelogDialog, {
version: props.version, version: this.props.version,
newVersion: props.newVersion, newVersion: this.props.newVersion,
releaseNotes: releaseNotes,
onFinished: (update) => { onFinished: (update) => {
if(update && PlatformPeg.get()) { if(update && PlatformPeg.get()) {
PlatformPeg.get().installUpdate(); PlatformPeg.get().installUpdate();
} }
} }
}); });
} },
};
const onUpdateClicked = () => { onUpdateClicked: function() {
PlatformPeg.get().installUpdate(); PlatformPeg.get().installUpdate();
}; },
render: function() {
let action_button; let action_button;
if (props.releaseNotes || (checkVersion(props.version) && checkVersion(props.newVersion))) { // If we have release notes to display, we display them. Otherwise,
action_button = <button className="mx_MatrixToolbar_action" onClick={onChangelogClicked}>What's new?</button>; // we display the Changelog Dialog which takes two versions and
// automatically tells you what's changed (provided the versions
// are in the right format)
if (this.props.releaseNotes) {
action_button = <button className="mx_MatrixToolbar_action" onClick={this.displayReleaseNotes}>What's new?</button>;
} else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) {
action_button = <button className="mx_MatrixToolbar_action" onClick={this.displayChangelog}>What's new?</button>;
} else if (PlatformPeg.get()) { } else if (PlatformPeg.get()) {
action_button = <button className="mx_MatrixToolbar_action" onClick={onUpdateClicked}>Update</button>; action_button = <button className="mx_MatrixToolbar_action" onClick={this.onUpdateClicked}>Update</button>;
} }
return ( return (
<div className="mx_MatrixToolbar"> <div className="mx_MatrixToolbar">
@ -78,10 +90,5 @@ export default function NewVersionBar(props) {
{action_button} {action_button}
</div> </div>
); );
} }
});
NewVersionBar.propTypes = {
version: React.PropTypes.string.isRequired,
newVersion: React.PropTypes.string.isRequired,
releaseNotes: React.PropTypes.string,
};

View File

@ -1,7 +1,8 @@
// @flow // @flow
/* /*
Copyright 2016 Aviral Dasgupta and OpenMarket Ltd Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -1,7 +1,8 @@
// @flow // @flow
/* /*
Copyright 2016 Aviral Dasgupta and OpenMarket Ltd Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -1,7 +1,8 @@
// @flow // @flow
/* /*
Copyright 2016 Aviral Dasgupta and OpenMarket Ltd Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.