Added invalid_file_format toast on XML importing

This commit is contained in:
merkost 2023-07-24 13:40:38 +10:00
parent e244fd5a53
commit 014ac2a4cf

View File

@ -94,48 +94,52 @@ class MessagesImporter(private val activity: SimpleActivity) {
} }
private fun InputStream.importXml() { private fun InputStream.importXml() {
bufferedReader().use { reader -> try {
val xmlParser = Xml.newPullParser().apply { bufferedReader().use { reader ->
setInput(reader) val xmlParser = Xml.newPullParser().apply {
} setInput(reader)
xmlParser.nextTag()
xmlParser.require(XmlPullParser.START_TAG, null, "smses")
var depth = 1
while (depth != 0) {
when (xmlParser.next()) {
XmlPullParser.END_TAG -> depth--
XmlPullParser.START_TAG -> depth++
} }
if (xmlParser.eventType != XmlPullParser.START_TAG) { xmlParser.nextTag()
continue xmlParser.require(XmlPullParser.START_TAG, null, "smses")
}
try { var depth = 1
if (xmlParser.name == "sms") { while (depth != 0) {
if (config.importSms) { when (xmlParser.next()) {
val message = xmlParser.readSms() XmlPullParser.END_TAG -> depth--
messageWriter.writeSmsMessage(message) XmlPullParser.START_TAG -> depth++
messagesImported++ }
if (xmlParser.eventType != XmlPullParser.START_TAG) {
continue
}
try {
if (xmlParser.name == "sms") {
if (config.importSms) {
val message = xmlParser.readSms()
messageWriter.writeSmsMessage(message)
messagesImported++
} else {
xmlParser.skip()
}
} else { } else {
xmlParser.skip() xmlParser.skip()
} }
} else { } catch (e: Exception) {
xmlParser.skip() activity.showErrorToast(e)
messagesFailed++
} }
} catch (e: Exception) {
activity.showErrorToast(e)
messagesFailed++
} }
refreshMessages()
} }
refreshMessages() when {
} messagesFailed > 0 && messagesImported > 0 -> activity.toast(R.string.importing_some_entries_failed)
when { messagesFailed > 0 -> activity.toast(R.string.importing_failed)
messagesFailed > 0 && messagesImported > 0 -> activity.toast(R.string.importing_some_entries_failed) else -> activity.toast(R.string.importing_successful)
messagesFailed > 0 -> activity.toast(R.string.importing_failed) }
else -> activity.toast(R.string.importing_successful) } catch (_: Exception) {
activity.toast(R.string.invalid_file_format)
} }
} }