From 6cbfcb9d6407b3678dbda33bd8519fde4f89f0df Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sat, 25 May 2019 17:15:38 +0200 Subject: [PATCH] Fixes delete data bug --- .../settings/data-management/delete-data.js | 10 +++++- components/settings/data-management/index.js | 31 ++++++++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js index 581c881f..6af5da38 100644 --- a/components/settings/data-management/delete-data.js +++ b/components/settings/data-management/delete-data.js @@ -1,6 +1,7 @@ import React, { Component } from 'react' import RNFS from 'react-native-fs' import { Alert, ToastAndroid } from 'react-native' +import PropTypes from 'prop-types' import { clearDb, isDbEmpty } from '../../../db' import { hasEncryptionObservable } from '../../../local-storage' @@ -24,6 +25,7 @@ export default class DeleteData extends Component { } onAlertConfirmation = () => { + this.props.onStartDeletion() if (this.state.isPasswordSet) { this.setState({ isConfirmingWithPassword: true }) } else { @@ -78,8 +80,9 @@ export default class DeleteData extends Component { render() { const { isConfirmingWithPassword } = this.state + const { isDeletingData } = this.props - if (isConfirmingWithPassword) { + if (isConfirmingWithPassword && isDeletingData) { return ( <ConfirmWithPassword onSuccess={this.deleteAppData} @@ -94,4 +97,9 @@ export default class DeleteData extends Component { </SettingsButton> ) } +} + +DeleteData.propTypes = { + isDeletingData: PropTypes.bool, + onStartDeletion: PropTypes.func.isRequired } \ No newline at end of file diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 04a6ccb1..bf32d6d1 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -13,7 +13,10 @@ export default class DataManagement extends Component { constructor(props) { super(props) - this.state = { isLoading: false } + this.state = { + isLoading: false, + currentAction: null + } } startLoading = () => { @@ -33,7 +36,22 @@ export default class DataManagement extends Component { this.endLoading() } + startExport = () => { + this.setCurrentAction('export') + openShareDialogAndExport() + } + + startImport = () => { + this.setCurrentAction('import') + openImportDialog(this.startImportFlow) + } + + setCurrentAction = (action) => { + this.setState({ currentAction: action }) + } + render() { + const { currentAction } = this.state return ( <View flex={1}> {this.state.isLoading && <AppLoadingView />} @@ -42,14 +60,14 @@ export default class DataManagement extends Component { <View> <FramedSegment title={labels.export.button}> <AppText>{labels.export.segmentExplainer}</AppText> - <SettingsButton onPress={openShareDialogAndExport}> + <SettingsButton onPress={this.startExport}> {labels.export.button} </SettingsButton> </FramedSegment> <FramedSegment title={labels.import.button}> <AppText>{labels.import.segmentExplainer}</AppText> <SettingsButton - onPress= {() => openImportDialog(this.startImportFlow)} + onPress= {this.startImport} > {labels.import.button} </SettingsButton> @@ -59,7 +77,10 @@ export default class DataManagement extends Component { last > <AppText>{labels.deleteSegment.explainer}</AppText> - <DeleteData /> + <DeleteData + isDeletingData = { currentAction === 'delete' } + onStartDeletion = {() => this.setCurrentAction('delete')} + /> </FramedSegment> </View> </ScrollView> @@ -67,4 +88,4 @@ export default class DataManagement extends Component { </View> ) } -} +} \ No newline at end of file -- GitLab