Prevent crash when importing

Fix #1060.
This commit is contained in:
Mygod
2017-01-07 14:48:19 +08:00
parent f4026e5a86
commit 5e9f78d31a
2 changed files with 16 additions and 3 deletions
@@ -26,6 +26,7 @@ import android.app.Activity
import android.content._
import android.net.Uri
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.widget.RecyclerView.ViewHolder
import android.support.v7.widget._
import android.support.v7.widget.helper.ItemTouchHelper
@@ -348,15 +349,17 @@ final class ProfilesFragment extends ToolbarFragment with Toolbar.OnMenuItemClic
}
true
case R.id.action_import =>
if (clipboard.hasPrimaryClip) {
try {
val profiles = Parser.findAll(clipboard.getPrimaryClip.getItemAt(0).getText)
if (profiles.nonEmpty) {
profiles.foreach(app.profileManager.createProfile)
Toast.makeText(getActivity, R.string.action_import_msg, Toast.LENGTH_SHORT).show()
return true
}
} catch {
case _: Exception =>
}
Toast.makeText(getActivity, R.string.action_import_err, Toast.LENGTH_SHORT).show()
Snackbar.make(getActivity.findViewById(R.id.snackbar), R.string.action_import_err, Snackbar.LENGTH_LONG).show()
true
case R.id.action_manual_settings =>
startConfig(app.profileManager.createProfile().id)
@@ -5,6 +5,7 @@ import java.util.Locale
import android.content.{ClipData, ClipboardManager, Context, DialogInterface}
import android.os.{Bundle, Handler}
import android.support.design.widget.Snackbar
import android.support.v7.app.AlertDialog
import android.support.v7.widget.RecyclerView.ViewHolder
import android.support.v7.widget.helper.ItemTouchHelper
@@ -276,7 +277,16 @@ class CustomRulesFragment extends ToolbarFragment with Toolbar.OnMenuItemClickLi
.create().show()
true
case R.id.action_import =>
clipboard.getPrimaryClip.getItemAt(0).getText.toString.split("\n").foreach(adapter.addToProxy)
try {
val items = clipboard.getPrimaryClip.getItemAt(0).getText.toString.split("\n")
if (items.nonEmpty) {
items.foreach(adapter.addToProxy)
return true
}
} catch {
case _: Exception =>
}
Snackbar.make(getActivity.findViewById(R.id.snackbar), R.string.action_import_err, Snackbar.LENGTH_LONG).show()
true
case R.id.action_import_gfwlist =>
val acl = new Acl().fromId(Acl.GFWLIST)