From b6b204a05742d298a11622bc621306d015de400d Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 28 Oct 2017 19:08:12 +0800 Subject: [PATCH] fix: crash on create directory --- .../ui/common/ScriptOperations.java | 70 +++++++------------ .../scriptdroid/ui/edit/CodeMirrorEditor.java | 23 +++--- app/src/main/res/values/strings.xml | 1 + 3 files changed, 38 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java index 3ce97c28..247d0f42 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java @@ -110,51 +110,43 @@ public class ScriptOperations { public Observable importFile(final String pathFrom) { return showFileNameInputDialog(PFiles.getNameWithoutExtension(pathFrom), PFiles.getExtension(pathFrom)) .observeOn(Schedulers.io()) - .map(new Function() { - @Override - public String apply(@io.reactivex.annotations.NonNull String s) throws Exception { - final String pathTo = getCurrentDirectoryPath() + s + "." + PFiles.getExtension(pathFrom); - if (PFiles.copy(pathFrom, pathTo)) { - showMessage(R.string.text_import_succeed); - } else { - showMessage(R.string.text_import_fail); - } - mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(pathTo)); - return pathTo; + .map(input -> { + final String pathTo = getCurrentDirectoryPath() + input + "." + PFiles.getExtension(pathFrom); + if (PFiles.copy(pathFrom, pathTo)) { + showMessage(R.string.text_import_succeed); + } else { + showMessage(R.string.text_import_fail); } + mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(pathTo)); + return pathTo; }); } public Observable importFile(String prefix, final InputStream inputStream, final String ext) { return showFileNameInputDialog(PFiles.getNameWithoutExtension(prefix), ext) .observeOn(Schedulers.io()) - .map(new Function() { - @Override - public String apply(@io.reactivex.annotations.NonNull String s) throws Exception { - final String pathTo = getCurrentDirectoryPath() + s + "." + ext; - if (PFiles.copyStream(inputStream, pathTo)) { - showMessage(R.string.text_import_succeed); - } else { - showMessage(R.string.text_import_fail); - } - mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(pathTo)); - return pathTo; + .map(input -> { + final String pathTo = getCurrentDirectoryPath() + input + "." + ext; + if (PFiles.copyStream(inputStream, pathTo)) { + showMessage(R.string.text_import_succeed); + } else { + showMessage(R.string.text_import_fail); } + mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(pathTo)); + return pathTo; }); } public void newDirectory() { showNameInputDialog("", new InputCallback()) - .subscribe(new Consumer() { - @Override - public void accept(@io.reactivex.annotations.NonNull String path) throws Exception { - if (new ScriptFile(getCurrentDirectory(), path).mkdirs()) { - showMessage(R.string.text_already_create); - mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(path)); - } else { - showMessage(R.string.text_create_fail); - } + .subscribe(path -> { + ScriptFile newDir = new ScriptFile(getCurrentDirectory(), path); + if (newDir.mkdirs()) { + showMessage(R.string.text_already_create); + mStorageFileProvider.notifyFileCreated(mCurrentDirectory, new ScriptFile(newDir)); + } else { + showMessage(R.string.text_create_fail); } }); } @@ -164,12 +156,7 @@ public class ScriptOperations { showMessageWithoutThreadSwitch(resId); } //switch to ui thread to show message - App.getApp().getUiHandler().post(new Runnable() { - @Override - public void run() { - showMessageWithoutThreadSwitch(resId); - } - }); + App.getApp().getUiHandler().post(() -> showMessageWithoutThreadSwitch(resId)); } private void showMessageWithoutThreadSwitch(int resId) { @@ -191,12 +178,9 @@ public class ScriptOperations { .inputType(InputType.TYPE_CLASS_TEXT) .alwaysCallInputCallback() .input(getString(R.string.text_please_input_name), prefix, false, textWatcher) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - input.onNext(dialog.getInputEditText().getText().toString()); - input.onComplete(); - } + .onPositive((dialog, which) -> { + input.onNext(dialog.getInputEditText().getText().toString()); + input.onComplete(); }) .build()); return input; diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/CodeMirrorEditor.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/CodeMirrorEditor.java index 9d303289..259a9859 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/CodeMirrorEditor.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/CodeMirrorEditor.java @@ -17,6 +17,7 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; +import android.widget.Toast; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; @@ -192,20 +193,16 @@ public class CodeMirrorEditor extends FrameLayout { public void loadFile(final File file) { setProgress(true); - // TODO: 2017/9/29 handle error - Observable.fromCallable(new Callable() { - @Override - public String call() throws Exception { - return PFiles.read(file); - } - }).subscribeOn(Schedulers.io()) + Observable.fromCallable(() -> PFiles.read(file)) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer() { - @Override - public void accept(@NonNull String s) throws Exception { - setText(s); - setProgress(false); - } + .subscribe(s -> { + setText(s); + setProgress(false); + }, err -> { + err.printStackTrace(); + Toast.makeText(getContext(), getContext().getString(R.string.text_cannot_read_file, file.getPath()), + Toast.LENGTH_SHORT).show(); }); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92af4fef..cd6a5973 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -280,6 +280,7 @@ 重置为初始内容 重置失败 重置成功 + 无法读取文件: %s