const React = require("react"); const Component = React.Component; const { TextInput, TouchableOpacity, Linking, View, Switch, Slider, StyleSheet, Text, Button, ScrollView, Platform } = require("react-native"); const EncryptionService = require("lib/services/EncryptionService"); const { connect } = require("react-redux"); const { ScreenHeader } = require("lib/components/screen-header.js"); const { _ } = require("lib/locale.js"); const { BaseScreenComponent } = require("lib/components/base-screen.js"); const { Dropdown } = require("lib/components/Dropdown.js"); const { themeStyle } = require("lib/components/global-style.js"); const { time } = require("lib/time-utils.js"); const Setting = require("lib/models/Setting.js"); const shared = require("lib/components/shared/encryption-config-shared.js"); const { dialogs } = require("lib/dialogs.js"); const DialogBox = require("react-native-dialogbox").default; class EncryptionConfigScreenComponent extends BaseScreenComponent { static navigationOptions(options) { return { header: null }; } constructor() { super(); this.state = { passwordPromptShow: false, passwordPromptAnswer: "", }; shared.constructor(this); this.styles_ = {}; } componentDidMount() { this.isMounted_ = true; } componentWillUnmount() { this.isMounted_ = false; } initState(props) { return shared.initState(this, props); } async refreshStats() { return shared.refreshStats(this); } componentWillMount() { this.initState(this.props); } componentWillReceiveProps(nextProps) { this.initState(nextProps); } async checkPasswords() { return shared.checkPasswords(this); } styles() { const themeId = this.props.theme; const theme = themeStyle(themeId); if (this.styles_[themeId]) return this.styles_[themeId]; this.styles_ = {}; let styles = { titleText: { flex: 1, fontWeight: "bold", flexDirection: "column", fontSize: theme.fontSize, paddingTop: 5, paddingBottom: 5, marginTop: theme.marginTop, marginBottom: 5, color: theme.color, }, normalText: { flex: 1, fontSize: theme.fontSize, color: theme.color, }, container: { flex: 1, padding: theme.margin, }, }; this.styles_[themeId] = StyleSheet.create(styles); return this.styles_[themeId]; } renderMasterKey(num, mk) { const theme = themeStyle(this.props.theme); const onSaveClick = () => { return shared.onSavePasswordClick(this, mk); }; const onPasswordChange = text => { return shared.onPasswordChange(this, mk, text); }; const password = this.state.passwords[mk.id] ? this.state.passwords[mk.id] : ""; const passwordOk = this.state.passwordChecks[mk.id] === true ? "✔" : "❌"; const active = this.props.activeMasterKeyId === mk.id ? "✔" : ""; const inputStyle = { flex: 1, marginRight: 10, color: theme.color }; if (Platform.OS === "ios") { inputStyle.borderBottomWidth = 1; inputStyle.borderBottomColor = theme.dividerColor; } return ( {_("Master Key %s", mk.id.substr(0, 6))} {_("Created: %s", time.formatMsToLocal(mk.created_time))} {_("Password:")} onPasswordChange(text)} style={inputStyle} /> {passwordOk}