// @flow
import moment from 'moment';
import React from 'react';
import { Component, Text, View } from 'reactxp';
import { Button, CellButton, RedButton, Label, SubText} from './styled';
import { Layout, Container } from './Layout';
import CustomScrollbars from './CustomScrollbars';
import styles from './SettingsStyles';
import Img from './Img';
import type { AccountReduxState } from '../redux/account/reducers';
import type { SettingsReduxState } from '../redux/settings/reducers';
export type SettingsProps = {
account: AccountReduxState,
settings: SettingsReduxState,
version: string,
onQuit: () => void,
onClose: () => void,
onViewAccount: () => void,
onViewSupport: () => void,
onViewPreferences: () => void,
onViewAdvancedSettings: () => void,
onExternalLink: (type: string) => void,
};
export default class Settings extends Component {
props: SettingsProps;
render() {
return (
Settings
{ this._renderTopButtons() }
{ this._renderMiddleButtons() }
{ this._renderBottomButtons() }
{ this._renderQuitButton() }
);
}
_renderTopButtons() {
const isLoggedIn = this.props.account.status === 'ok';
if (!isLoggedIn) {
return null;
}
let isOutOfTime = false, formattedExpiry = '';
let expiryIso = this.props.account.expiry;
if(isLoggedIn && expiryIso) {
let expiry = moment(this.props.account.expiry);
isOutOfTime = expiry.isSameOrBefore(moment());
formattedExpiry = (expiry.fromNow(true) + ' left').toUpperCase();
}
return
{isOutOfTime ? (
OUT OF TIME
) : (
{ formattedExpiry }
)}
;
}
_renderMiddleButtons() {
return
{this._formattedVersion()}
;
}
_formattedVersion() {
// the version in package.json has to be semver, but we use a YEAR.release-channel
// version scheme. in package.json we thus have to write YEAR.release.X-channel and
// this function is responsible for removing .X part.
return this.props.version
.replace('.0-', '-') // remove the .0 in 2018.1.0-beta9
.replace(/\.0$/, ''); // remove the .0 in 2018.1.0
}
_renderBottomButtons() {
return
;
}
_renderQuitButton() {
return
;
}
}