diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js
index b6ecd12..dd09c4a 100644
--- a/components/settings/data-management/delete-data.js
+++ b/components/settings/data-management/delete-data.js
@@ -2,7 +2,7 @@ import React, { Component } from 'react'
import RNFS from 'react-native-fs'
import { Alert, ToastAndroid } from 'react-native'
-import { clearDb } from '../../../db'
+import { clearDb, isDbEmpty } from '../../../db'
import { hasEncryptionObservable } from '../../../local-storage'
import SettingsButton from '../settings-button'
import ConfirmWithPassword from './confirm-with-password'
@@ -12,6 +12,8 @@ import settings from '../../../i18n/en/settings'
import { shared as sharedLabels } from '../../../i18n/en/labels'
import { EXPORT_FILE_NAME } from './constants'
+const exportedFilePath = `${RNFS.DocumentDirectoryPath}/${EXPORT_FILE_NAME}`
+
export default class DeleteData extends Component {
constructor() {
super()
@@ -29,41 +31,45 @@ export default class DeleteData extends Component {
}
}
- alertBeforeDeletion = () => {
- const { question, message, confirmation } = settings.deleteSegment
-
- Alert.alert(
- question,
- message,
- [{
- text: confirmation,
- onPress: this.onAlertConfirmation
- }, {
- text: sharedLabels.cancel,
- style: 'cancel',
- onPress: this.cancelConfirmationWithPassword
- }]
- )
+ alertBeforeDeletion = async () => {
+ const { question, message, confirmation, errors } = settings.deleteSegment
+ if (isDbEmpty() && !await RNFS.exists(exportedFilePath)) {
+ alertError(errors.noData)
+ } else {
+ Alert.alert(
+ question,
+ message,
+ [{
+ text: confirmation,
+ onPress: this.onAlertConfirmation
+ }, {
+ text: sharedLabels.cancel,
+ style: 'cancel',
+ onPress: this.cancelConfirmationWithPassword
+ }]
+ )
+ }
}
deleteExportedFile = async () => {
- const path = `${RNFS.DocumentDirectoryPath}/${EXPORT_FILE_NAME}`
- const isFileExist = await RNFS.exists(path)
- if (isFileExist) {
- await RNFS.unlink(path)
+ if (await RNFS.exists(exportedFilePath)) {
+ await RNFS.unlink(exportedFilePath)
}
}
deleteAppData = async () => {
const { errors, success } = settings.deleteSegment
+
try {
- clearDb()
+ if (!isDbEmpty()) {
+ clearDb()
+ }
await this.deleteExportedFile()
ToastAndroid.show(success.message, ToastAndroid.LONG)
- this.props.onDeleteData()
} catch (err) {
- return alertError(errors.couldNotDeleteFile)
+ alertError(errors.couldNotDeleteFile)
}
+ this.cancelConfirmationWithPassword()
}
cancelConfirmationWithPassword = () => {
diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js
index 806052d..4199760 100644
--- a/components/settings/data-management/index.js
+++ b/components/settings/data-management/index.js
@@ -1,51 +1,38 @@
-import React, { Component } from 'react'
+import React from 'react'
import { ScrollView } from 'react-native'
import AppText from '../../app-text'
import SettingsSegment from '../settings-segment'
import SettingsButton from '../settings-button'
import openImportDialogAndImport from './import-dialog'
import openShareDialogAndExport from './export-dialog'
-import { isDbEmpty } from '../../../db'
import DeleteData from './delete-data'
import labels from '../../../i18n/en/settings'
+import styles from '../../../styles/index'
-class DataManagement extends Component {
- constructor() {
- super()
- this.state = {
- isDataEmpty: isDbEmpty()
- }
- }
- onDeleteData = () => {
- this.setState({
- isDataEmpty: true
- })
- }
- render() {
- return (
-
-
- {labels.export.segmentExplainer}
-
- {labels.export.button}
-
-
-
- {labels.import.segmentExplainer}
-
- {labels.import.button}
-
-
- {!isDbEmpty() && (
-
- {labels.deleteSegment.explainer}
-
-
- )}
-
- )
- }
+const DataManagement = () => {
+ return (
+
+
+ {labels.export.segmentExplainer}
+
+ {labels.export.button}
+
+
+
+ {labels.import.segmentExplainer}
+
+ {labels.import.button}
+
+
+
+ {labels.deleteSegment.explainer}
+
+
+
+ )
}
-
-export default DataManagement
+export default DataManagement
\ No newline at end of file
diff --git a/i18n/en/settings.js b/i18n/en/settings.js
index 5de7d10..d3565d3 100644
--- a/i18n/en/settings.js
+++ b/i18n/en/settings.js
@@ -43,7 +43,8 @@ export default {
confirmation: 'Delete app data permanently',
errors: {
couldNotDeleteFile: 'Could not delete data',
- postFix: 'No data was deleted or changed'
+ postFix: 'No data was deleted or changed',
+ noData: 'There is no data to delete'
},
success: {
message: 'App data successfully deleted'