From 59f950915a6f4df13574aabe79fc83099f8bdc42 Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Thu, 9 Dec 2021 17:02:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C=E4=B8=8E?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 7 + app/build.gradle | 2 - app/src/main/AndroidManifest.xml | 1 + .../xyz/fycz/myreader/application/App.java | 4 +- .../xyz/fycz/myreader/base/MyTextWatcher.kt | 15 + .../xyz/fycz/myreader/common/APPCONST.java | 5 +- .../xyz/fycz/myreader/common/URLCONST.java | 8 +- .../xyz/fycz/myreader/model/user/Result.kt | 10 + .../xyz/fycz/myreader/model/user/User.java | 70 +++++ .../model/{backup => user}/UserService.java | 6 +- .../fycz/myreader/model/user/UserService2.kt | 171 ++++++++++ .../myreader/ui/activity/AuthEmailActivity.kt | 225 ++++++++++++++ .../myreader/ui/activity/LoginActivity.java | 138 +++++---- .../ui/activity/RegisterActivity.java | 263 +++++++++------- .../ui/activity/SearchWordActivity.kt | 2 +- .../myreader/ui/fragment/MineFragment.java | 102 +++--- .../ui/presenter/BookcasePresenter.java | 9 +- .../fycz/myreader/util/help/StringHelper.java | 8 +- .../xyz/fycz/myreader/util/utils/AdUtils.java | 2 +- .../fycz/myreader/util/utils/FileUtils.java | 2 - .../res/color/selector_get_emali_code.xml | 5 + app/src/main/res/drawable-xhdpi/bg_login.jpg | Bin 137521 -> 0 bytes .../main/res/drawable/login_btn_selector.xml | 2 +- .../main/res/layout/activity_auth_email.xml | 125 ++++++++ app/src/main/res/layout/activity_login.xml | 290 ++++++----------- app/src/main/res/layout/activity_register.xml | 292 ++++++++---------- app/src/main/res/layout/fragment_mine.xml | 4 +- app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 13 +- app/version_code.properties | 2 +- 30 files changed, 1180 insertions(+), 604 deletions(-) create mode 100644 app/src/main/java/xyz/fycz/myreader/base/MyTextWatcher.kt create mode 100644 app/src/main/java/xyz/fycz/myreader/model/user/Result.kt create mode 100644 app/src/main/java/xyz/fycz/myreader/model/user/User.java rename app/src/main/java/xyz/fycz/myreader/model/{backup => user}/UserService.java (99%) create mode 100644 app/src/main/java/xyz/fycz/myreader/model/user/UserService2.kt create mode 100644 app/src/main/java/xyz/fycz/myreader/ui/activity/AuthEmailActivity.kt create mode 100644 app/src/main/res/color/selector_get_emali_code.xml delete mode 100644 app/src/main/res/drawable-xhdpi/bg_login.jpg create mode 100644 app/src/main/res/layout/activity_auth_email.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index f539713..ecf6ace 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,21 +6,28 @@ + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 536e404..3ee0aa9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -185,8 +185,6 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'io.alterac.blurkit:blurkit:1.1.0' - implementation 'com.google.android.material:material:1.1.0' //Scroller diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 958d7c8..670532b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -121,6 +121,7 @@ + diff --git a/app/src/main/java/xyz/fycz/myreader/application/App.java b/app/src/main/java/xyz/fycz/myreader/application/App.java index f09164e..c033b7c 100644 --- a/app/src/main/java/xyz/fycz/myreader/application/App.java +++ b/app/src/main/java/xyz/fycz/myreader/application/App.java @@ -247,7 +247,6 @@ public class App extends Application { try { PackageManager manager = application.getPackageManager(); PackageInfo info = manager.getPackageInfo(application.getPackageName(), 0); - return info.versionCode; } catch (Exception e) { e.printStackTrace(); @@ -335,6 +334,9 @@ public class App extends Application { forceUpdateVersion = Integer.parseInt(contents[8].substring(contents[8].indexOf(":") + 1)); spu.putInt("forceUpdateVersion", forceUpdateVersion); + String domain = contents[9].substring(contents[9].indexOf(":") + 1); + spu.putString("domain", domain); + int versionCode = getVersionCode(); isForceUpdate = isForceUpdate && forceUpdateVersion > versionCode; diff --git a/app/src/main/java/xyz/fycz/myreader/base/MyTextWatcher.kt b/app/src/main/java/xyz/fycz/myreader/base/MyTextWatcher.kt new file mode 100644 index 0000000..41768db --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/base/MyTextWatcher.kt @@ -0,0 +1,15 @@ +package xyz.fycz.myreader.base + +import android.text.TextWatcher + +/** + * @author fengyue + * @date 2021/12/9 12:32 + */ +abstract class MyTextWatcher : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java index c8af5aa..5077c34 100644 --- a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java +++ b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java @@ -21,8 +21,8 @@ import javax.script.ScriptEngineManager; public class APPCONST { - public static String publicKey = "";//服务端公钥 - public static final String KEY = ""; + public static String publicKey = "fyds2.0";//服务端公钥 + public static final String KEY = "readerByFengyue"; public static final String[] STORAGE_PERMISSIONS = new String[]{Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE}; @@ -99,6 +99,7 @@ public class APPCONST { public static final int REQUEST_EDIT_BOOK = 1013; public static final int REQUEST_GROUP_MANAGER = 1014; public static final int REQUEST_SEARCH_WORD = 1015; + public static final int REQUEST_AUTH_EMAIL = 1016; public static final int REQUEST_READ = 1; diff --git a/app/src/main/java/xyz/fycz/myreader/common/URLCONST.java b/app/src/main/java/xyz/fycz/myreader/common/URLCONST.java index 1511f01..ad381b7 100644 --- a/app/src/main/java/xyz/fycz/myreader/common/URLCONST.java +++ b/app/src/main/java/xyz/fycz/myreader/common/URLCONST.java @@ -1,5 +1,7 @@ package xyz.fycz.myreader.common; +import xyz.fycz.myreader.util.SharedPreUtils; + public class URLCONST { public static final String OFFICIAL_WEB = "https://reader.fycz.tk/"; @@ -19,11 +21,15 @@ public class URLCONST { public static final String YOU_DAO_SEARCH = "http://m.youdao.com/dict?le=eng&q={key}"; - public static final String FY_READER_URL = "https://fyreader.fycz.tk"; + public static final String DEFAULT_DOMAIN = + SharedPreUtils.getInstance().getString("domain", "fycz.tk"); + + public static final String FY_READER_URL = "https://fyreader." + DEFAULT_DOMAIN; public static final String AD_URL = FY_READER_URL + "/ad"; public static final String LOG_UPLOAD_URL = FY_READER_URL + "/logUpload"; public static final String THANKS_URL = FY_READER_URL + "/thanks/"; + public static final String USER_URL = "https://user." + DEFAULT_DOMAIN; public static final String DONATE = "https://gitee.com/fengyuecanzhu/Donate/raw/master"; diff --git a/app/src/main/java/xyz/fycz/myreader/model/user/Result.kt b/app/src/main/java/xyz/fycz/myreader/model/user/Result.kt new file mode 100644 index 0000000..876959d --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/model/user/Result.kt @@ -0,0 +1,10 @@ +package xyz.fycz.myreader.model.user + +/** + * @author fengyue + * @date 2021/12/9 10:19 + */ +data class Result( + val code: Int, + val result: Any +) diff --git a/app/src/main/java/xyz/fycz/myreader/model/user/User.java b/app/src/main/java/xyz/fycz/myreader/model/user/User.java new file mode 100644 index 0000000..d61f5ff --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/model/user/User.java @@ -0,0 +1,70 @@ +package xyz.fycz.myreader.model.user; + +/** + * @author fengyue + * @date 2020/7/12 17:35 + */ +public class User { + private Integer userId; + private String userName; + private String password; + private String email; + + public User() { + } + + public User(String userName) { + this.userName = userName; + } + + public User(String userName, String password) { + this.userName = userName; + this.password = password; + } + + public User(String userName, String password, String email) { + this.userName = userName; + this.password = password; + this.email = email; + } + + public User(Integer userId, String userName, String password, String email) { + this.userId = userId; + this.userName = userName; + this.password = password; + this.email = email; + } + + + public Integer getUserId() { + return userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java b/app/src/main/java/xyz/fycz/myreader/model/user/UserService.java similarity index 99% rename from app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java rename to app/src/main/java/xyz/fycz/myreader/model/user/UserService.java index d3cee63..75bb439 100644 --- a/app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java +++ b/app/src/main/java/xyz/fycz/myreader/model/user/UserService.java @@ -1,4 +1,6 @@ -package xyz.fycz.myreader.model.backup; +package xyz.fycz.myreader.model.user; + +import android.content.Context; import io.reactivex.annotations.NonNull; import xyz.fycz.myreader.application.App; @@ -111,7 +113,7 @@ public class UserService { public static boolean writeConfig(Map userLoginInfo){ FileOutputStream fos = null; try { - fos = App.getApplication().openFileOutput("userConfig.fy", App.getApplication().MODE_PRIVATE); + fos = App.getApplication().openFileOutput("userConfig.fy", Context.MODE_PRIVATE); String userInfo = "username='" + userLoginInfo.get("loginName") + "',\npassword='" + userLoginInfo.get("loginPwd") + "'"; byte[] bs = userInfo.getBytes(); fos.write(bs); diff --git a/app/src/main/java/xyz/fycz/myreader/model/user/UserService2.kt b/app/src/main/java/xyz/fycz/myreader/model/user/UserService2.kt new file mode 100644 index 0000000..1243bd0 --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/model/user/UserService2.kt @@ -0,0 +1,171 @@ +package xyz.fycz.myreader.model.user + +import io.reactivex.Single +import io.reactivex.SingleOnSubscribe +import okhttp3.MediaType +import okhttp3.RequestBody +import xyz.fycz.myreader.application.App +import xyz.fycz.myreader.common.APPCONST +import xyz.fycz.myreader.common.URLCONST +import xyz.fycz.myreader.model.storage.Backup +import xyz.fycz.myreader.model.storage.Restore +import xyz.fycz.myreader.model.storage.Restore.restore +import xyz.fycz.myreader.util.* +import xyz.fycz.myreader.util.utils.FileUtils +import xyz.fycz.myreader.util.utils.GSON +import xyz.fycz.myreader.util.utils.OkHttpUtils +import xyz.fycz.myreader.util.utils.RxUtils + +/** + * @author fengyue + * @date 2021/12/9 10:17 + */ +object UserService2 { + fun login(user: User): Single { + return Single.create(SingleOnSubscribe { + val mediaType = MediaType.parse("application/x-www-form-urlencoded") + val body = "username=${user.userName}" + + "&password=${user.password}" + + makeAuth() + val requestBody = RequestBody.create(mediaType, body) + val ret = OkHttpUtils.getHtml(URLCONST.USER_URL + "/do/login", requestBody, "UTF-8") + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun register(user: User, code: String, keyc: String): Single { + return Single.create(SingleOnSubscribe { + val mediaType = MediaType.parse("application/x-www-form-urlencoded") + val body = "username=${user.userName}" + + "&password=${user.password}" + + "&email=${user.email}" + + "&code=${code}" + + "&keyc=${keyc}" + + "&key=${CyptoUtils.encode(APPCONST.KEY, APPCONST.publicKey)}" + + makeAuth() + val requestBody = RequestBody.create(mediaType, body) + val ret = OkHttpUtils.getHtml(URLCONST.USER_URL + "/do/reg", requestBody, "UTF-8") + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun bindEmail(user: User, code: String, keyc: String): Single { + return Single.create(SingleOnSubscribe { + val mediaType = MediaType.parse("application/x-www-form-urlencoded") + val body = "username=${user.userName}" + + "&email=${user.email}" + + "&code=${code}" + + "&keyc=${keyc}" + + makeAuth() + val requestBody = RequestBody.create(mediaType, body) + val ret = OkHttpUtils.getHtml(URLCONST.USER_URL + "/do/bindEmail", requestBody, "UTF-8") + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun resetPwd(user: User, code: String, keyc: String): Single { + return Single.create(SingleOnSubscribe { + val mediaType = MediaType.parse("application/x-www-form-urlencoded") + val body = "email=${user.email}" + + "&password=${user.password}" + + "&code=${code}" + + "&keyc=${keyc}" + + makeAuth() + val requestBody = RequestBody.create(mediaType, body) + val ret = OkHttpUtils.getHtml(URLCONST.USER_URL + "/do/resetPwd", requestBody, "UTF-8") + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun sendEmail(email: String, type: String, keyc: String = ""): Single { + return Single.create(SingleOnSubscribe { + val mediaType = MediaType.parse("application/x-www-form-urlencoded") + val body = "email=${email}" + + "&type=${type}" + + "&keyc=${keyc}" + + makeAuth() + val requestBody = RequestBody.create(mediaType, body) + val ret = OkHttpUtils.getHtml(URLCONST.USER_URL + "/do/sendEmail", requestBody, "UTF-8") + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun webBackup(user: User): Single { + return Single.create(SingleOnSubscribe { + Backup.backup(App.getmContext(), APPCONST.FILE_DIR + "webBackup/", + object : Backup.CallBack { + override fun backupSuccess() { + val inputFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup") + val zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip") + //压缩文件 + ZipUtils.zipFile(inputFile, zipFile) + val ret = OkHttpUtils.upload( + URLCONST.USER_URL + "/do/bak?" + + "username=${user.userName}" + + makeAuth(), + zipFile.absolutePath, + zipFile.name + ) + zipFile.delete() + it.onSuccess(GSON.fromJson(ret, Result::class.java)) + } + + override fun backupError(msg: String) { + it.onError(Throwable(msg)) + } + + }) + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun webRestore(user: User): Single { + return Single.create(SingleOnSubscribe { + val zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip") + val input = OkHttpUtils.getInputStream( + URLCONST.USER_URL + "/do/ret?" + + "username=${user.userName}" + + makeAuth() + ) + if (FileUtils.writeFile(input.readBytes(), zipFile)) { + ZipUtils.unzipFile(zipFile.absolutePath, APPCONST.FILE_DIR) + restore(APPCONST.FILE_DIR + "webBackup/", object : Restore.CallBack { + override fun restoreSuccess() { + zipFile.delete() + it.onSuccess(Result(100, "成功从网络同步到本地")) + } + + override fun restoreError(msg: String) { + it.onError(Throwable(msg)) + } + }) + } + }).compose { RxUtils.toSimpleSingle(it) } + } + + fun writeConfig(user: User) { + FileUtils.write(App.getmContext(), "userConfig.fy", GSON.toJson(user)) + } + + fun readConfig(): User? { + val config = FileUtils.read(App.getmContext(), "userConfig.fy") + if ("" != config) { + return GSON.fromJson(config, User::class.java) + } + return null + } + + fun writeUsername(username: String) { + FileUtils.writeText(username, FileUtils.getFile(APPCONST.QQ_DATA_DIR + "user")) + } + + fun readUsername(): String { + return FileUtils.readText(APPCONST.QQ_DATA_DIR + "user") + } + + private fun makeAuth(): String { + return "&signal=" + AppInfoUtils.getSingInfo( + App.getmContext(), + App.getApplication().packageName, AppInfoUtils.SHA1 + ) + "&appVersion=" + App.getVersionCode() + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/AuthEmailActivity.kt b/app/src/main/java/xyz/fycz/myreader/ui/activity/AuthEmailActivity.kt new file mode 100644 index 0000000..014ce1c --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/AuthEmailActivity.kt @@ -0,0 +1,225 @@ +package xyz.fycz.myreader.ui.activity + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.text.Editable +import android.view.View +import androidx.appcompat.widget.Toolbar +import io.reactivex.SingleObserver +import io.reactivex.disposables.Disposable +import xyz.fycz.myreader.R +import xyz.fycz.myreader.application.App +import xyz.fycz.myreader.base.BaseActivity +import xyz.fycz.myreader.base.BitIntentDataManager +import xyz.fycz.myreader.base.MyTextWatcher +import xyz.fycz.myreader.base.observer.MySingleObserver +import xyz.fycz.myreader.common.APPCONST +import xyz.fycz.myreader.databinding.ActivityAuthEmailBinding +import xyz.fycz.myreader.model.user.Result +import xyz.fycz.myreader.model.user.User +import xyz.fycz.myreader.model.user.UserService2 +import xyz.fycz.myreader.model.user.UserService2.bindEmail +import xyz.fycz.myreader.model.user.UserService2.register +import xyz.fycz.myreader.model.user.UserService2.resetPwd +import xyz.fycz.myreader.model.user.UserService2.sendEmail +import xyz.fycz.myreader.model.user.UserService2.writeUsername +import xyz.fycz.myreader.ui.dialog.DialogCreator +import xyz.fycz.myreader.ui.dialog.LoadingDialog +import xyz.fycz.myreader.util.CyptoUtils +import xyz.fycz.myreader.util.ToastUtils +import java.util.* + +/** + * @author fengyue + * @date 2021/12/9 15:20 + */ +class AuthEmailActivity : BaseActivity(), SingleObserver { + + private lateinit var binding: ActivityAuthEmailBinding + private var email = "" + private var password = "" + private var emailCode = "" + private var keyc = "" + private lateinit var dialog: LoadingDialog + private var disp: Disposable? = null + private lateinit var operator: String + private var user: User? = null + private var isBind: Boolean = false + override fun bindView() { + binding = ActivityAuthEmailBinding.inflate(layoutInflater) + setContentView(binding.root) + } + + override fun initData(savedInstanceState: Bundle?) { + user = BitIntentDataManager.getInstance().getData(intent) as User? + isBind = user != null + operator = if (isBind) "绑定邮箱" else "重置密码" + dialog = LoadingDialog(this, "正在请求") { + disp?.dispose() + } + } + + override fun setUpToolbar(toolbar: Toolbar?) { + super.setUpToolbar(toolbar) + setStatusBarColor(R.color.colorPrimary, true) + supportActionBar?.title = operator + } + + override fun initWidget() { + binding.tvTitle.text = operator + binding.btSubmit.text = operator + binding.etEmail.editText?.addTextChangedListener(object : MyTextWatcher() { + override fun afterTextChanged(s: Editable) { + email = s.toString() + if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$".toRegex())) { + showTip("邮箱格式错误") + } else { + binding.tvRegisterTip.visibility = View.GONE + } + checkNotNone() + } + }) + + binding.etEmailCode.editText?.addTextChangedListener(object : MyTextWatcher() { + override fun afterTextChanged(s: Editable) { + emailCode = s.toString().trim() + checkNotNone() + } + }) + binding.etPassword.editText!!.addTextChangedListener(object : MyTextWatcher() { + override fun afterTextChanged(s: Editable) { + password = s.toString() + if (password.length < 8 || password.length > 16) { + showTip("密码必须在8-16位之间") + } else if (password.matches("^\\d+$".toRegex())) { + showTip("密码不能是纯数字") + } else { + binding.tvRegisterTip.visibility = View.GONE + } + checkNotNone() + } + }) + if (!isBind) { + binding.etPassword.visibility = View.VISIBLE + } + } + + override fun initClick() { + binding.tvGetEmailCode.setOnClickListener { + if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$".toRegex())) { + ToastUtils.showWarring("请正确输入邮箱") + return@setOnClickListener + } + dialog.show() + dialog.setmMessage("正在发送") + sendEmail(email, if (isBind) "bind" else "auth", keyc) + .subscribe(object : MySingleObserver() { + override fun onSubscribe(d: Disposable) { + addDisposable(d) + disp = d + } + + override fun onSuccess(result: Result) { + if (result.code == 106) { + ToastUtils.showSuccess("验证码发送成功") + keyc = result.result.toString() + timeDown(60) + } else { + ToastUtils.showWarring(result.result.toString()) + } + dialog.dismiss() + } + + override fun onError(e: Throwable) { + ToastUtils.showError("验证码发送失败:${e.localizedMessage}") + dialog.dismiss() + } + }) + } + + binding.btSubmit.setOnClickListener { + if (!isBind && (password.matches("^\\d+$".toRegex()) || !password.matches("^.{8,16}$".toRegex()))) { + DialogCreator.createTipDialog( + this, "密码格式错误", + "密码必须在8-16位之间\n密码不能是纯数字" + ) + } else if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$".toRegex())) { + DialogCreator.createTipDialog( + this, "邮箱格式错误", + "电子邮箱的正确写法为:用户名@邮箱网站.com(.cn等)" + ) + } else if ("" == keyc) { + DialogCreator.createTipDialog(this, "请先获取邮箱验证码") + } else if (emailCode.length < 6) { + DialogCreator.createTipDialog(this, "请输入6位邮箱验证码") + } else { + dialog.show() + dialog.setmMessage("正在请求") + if (isBind) { + val user = User().apply { + email = this@AuthEmailActivity.email + userName = this@AuthEmailActivity.user?.userName + } + bindEmail(user, emailCode, keyc) + .subscribe(this) + } else { + val user = User().apply { + email = this@AuthEmailActivity.email + password = CyptoUtils.encode(APPCONST.KEY, this@AuthEmailActivity.password) + } + resetPwd(user, emailCode, keyc) + .subscribe(this) + } + + } + } + } + + fun showTip(tip: String?) { + binding.tvRegisterTip.visibility = View.VISIBLE + binding.tvRegisterTip.text = tip + } + + private fun timeDown(time: Int) { + if (time == 0) { + binding.tvGetEmailCode.text = getString(R.string.re_get_email_code, "") + binding.tvGetEmailCode.isEnabled = true + } else { + binding.tvGetEmailCode.isEnabled = false + val timeStr = "($time)" + binding.tvGetEmailCode.text = getString(R.string.re_get_email_code, timeStr) + App.getHandler().postDelayed({ timeDown(time - 1) }, 1000) + } + } + + fun checkNotNone() { + binding.btSubmit.isEnabled = "" != email && "" != emailCode && (isBind || "" != password) + } + + override fun onDestroy() { + dialog.dismiss() + super.onDestroy() + } + + override fun onSubscribe(d: Disposable) { + addDisposable(d) + disp = d + } + + override fun onSuccess(result: Result) { + if (result.code < 200) { + ToastUtils.showSuccess(result.result.toString()) + setResult(Activity.RESULT_OK) + finish() + } else { + ToastUtils.showWarring(result.result.toString()) + } + dialog.dismiss() + } + + override fun onError(e: Throwable) { + ToastUtils.showError("失败:${e.localizedMessage}") + dialog.dismiss() + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java index 8145fcf..c74c999 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java @@ -13,17 +13,26 @@ import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import java.util.HashMap; import java.util.Map; +import io.reactivex.disposables.Disposable; import xyz.fycz.myreader.R; import xyz.fycz.myreader.base.BaseActivity; +import xyz.fycz.myreader.base.BitIntentDataManager; +import xyz.fycz.myreader.base.observer.MySingleObserver; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.databinding.ActivityLoginBinding; -import xyz.fycz.myreader.model.backup.UserService; +import xyz.fycz.myreader.model.user.Result; +import xyz.fycz.myreader.model.user.User; +import xyz.fycz.myreader.model.user.UserService; +import xyz.fycz.myreader.model.user.UserService2; import xyz.fycz.myreader.ui.dialog.DialogCreator; +import xyz.fycz.myreader.ui.dialog.LoadingDialog; import xyz.fycz.myreader.util.CodeUtil; import xyz.fycz.myreader.util.CyptoUtils; import xyz.fycz.myreader.util.ToastUtils; @@ -40,23 +49,9 @@ public class LoginActivity extends BaseActivity implements TextWatcher { private ActivityLoginBinding binding; private String code; - - @SuppressLint("HandlerLeak") - private Handler mHandler = new Handler() { - @SuppressLint("HandlerLeak") - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - binding.btLogin.setEnabled(true); - break; - case 2: - createCaptcha(); - break; - } - } - }; - + private Disposable loginDisp; + private LoadingDialog dialog; + private User user; @Override protected void bindView() { @@ -74,13 +69,18 @@ public class LoginActivity extends BaseActivity implements TextWatcher { @Override protected void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); + dialog = new LoadingDialog(this, "正在登录", () -> { + if (loginDisp != null) { + loginDisp.dispose(); + } + }); } @Override protected void initWidget() { super.initWidget(); - mHandler.sendMessage(mHandler.obtainMessage(2)); - String username = UserService.readUsername(); + createCaptcha(); + String username = UserService2.INSTANCE.readUsername(); binding.etUser.getEditText().setText(username); binding.etUser.getEditText().requestFocus(username.length()); //监听内容改变 -> 控制按钮的点击状态 @@ -92,11 +92,10 @@ public class LoginActivity extends BaseActivity implements TextWatcher { @Override protected void initClick() { super.initClick(); - binding.ivCaptcha.setOnClickListener(v -> mHandler.sendMessage(mHandler.obtainMessage(2))); + binding.ivCaptcha.setOnClickListener(v -> createCaptcha()); binding.btLogin.setOnClickListener(v -> { - mHandler.sendMessage(mHandler.obtainMessage(2)); - if (!code.toLowerCase().equals(binding.etCaptcha.getEditText().getText().toString().toLowerCase())){ + if (!code.equalsIgnoreCase(binding.etCaptcha.getEditText().getText().toString())) { DialogCreator.createTipDialog(this, "验证码错误!"); return; } @@ -104,46 +103,48 @@ public class LoginActivity extends BaseActivity implements TextWatcher { ToastUtils.showError("无网络连接!"); return; } - ProgressUtils.show(this, "正在登陆..."); binding.btLogin.setEnabled(false); final String loginName = binding.etUser.getEditText().getText().toString().trim(); String loginPwd = binding.etPassword.getEditText().getText().toString(); - final Map userLoginInfo = new HashMap<>(); - userLoginInfo.put("loginName", loginName); - userLoginInfo.put("loginPwd", CyptoUtils.encode(APPCONST.KEY, loginPwd)); - //验证用户名和密码 - UserService.login(userLoginInfo, new ResultCallback() { + user = new User(loginName, CyptoUtils.encode(APPCONST.KEY, loginPwd)); + dialog.show(); + UserService2.INSTANCE.login(user).subscribe(new MySingleObserver() { @Override - public void onFinish(Object o, int code) { - String result = (String) o; - String[] info = result.split(":"); - int resultCode = Integer.parseInt(info[0].trim()); - String resultName = info[1].trim(); - //最后输出结果 - if (resultCode == 102) { - UserService.writeConfig(userLoginInfo); - UserService.writeUsername(loginName); - Intent intent = new Intent(); - intent.putExtra("isLogin", true); - setResult(Activity.RESULT_OK, intent); - finish(); - ToastUtils.showSuccess(resultName); + public void onSubscribe(Disposable d) { + addDisposable(d); + loginDisp = d; + } + + @Override + public void onSuccess(@NonNull Result result) { + if (result.getCode() == 102) { + loginSuccess(); + ToastUtils.showSuccess(result.getResult().toString()); + } else if (result.getCode() == 301) { + Intent intent = new Intent(LoginActivity.this, AuthEmailActivity.class); + BitIntentDataManager.getInstance().putData(intent, user); + startActivityForResult(intent, APPCONST.REQUEST_AUTH_EMAIL); + ToastUtils.showWarring(result.getResult().toString()); } else { - mHandler.sendMessage(mHandler.obtainMessage(1)); - ProgressUtils.dismiss(); - ToastUtils.showWarring(resultName); + ToastUtils.showWarring(result.getResult().toString()); } - + binding.btLogin.setEnabled(false); + dialog.dismiss(); } @Override - public void onError(Exception e) { + public void onError(Throwable e) { ToastUtils.showError("登录失败\n" + e.getLocalizedMessage()); - mHandler.sendMessage(mHandler.obtainMessage(1)); - ProgressUtils.dismiss(); + binding.btLogin.setEnabled(false); + dialog.dismiss(); + createCaptcha(); } }); + }); + binding.tvForgotPwd.setOnClickListener(v -> { + Intent intent = new Intent(LoginActivity.this, AuthEmailActivity.class); + startActivity(intent); }); binding.tvRegister.setOnClickListener(v -> { @@ -152,6 +153,15 @@ public class LoginActivity extends BaseActivity implements TextWatcher { }); } + private void loginSuccess() { + UserService2.INSTANCE.writeConfig(user); + UserService2.INSTANCE.writeUsername(user.getUserName()); + Intent intent = new Intent(); + intent.putExtra("isLogin", true); + setResult(Activity.RESULT_OK, intent); + finish(); + } + public void createCaptcha() { code = CodeUtil.getInstance().createCode(); Bitmap codeBitmap = CodeUtil.getInstance().createBitmap(code); @@ -163,21 +173,21 @@ public class LoginActivity extends BaseActivity implements TextWatcher { * 当有控件获得焦点focus 自动弹出键盘 * 1. 点击软键盘的enter键 自动收回键盘 * 2. 代码控制 InputMethodManager - * requestFocus - * showSoftInput:显示键盘 必须先让这个view成为焦点requestFocus - * - * hideSoftInputFromWindow 隐藏键盘 + * requestFocus + * showSoftInput:显示键盘 必须先让这个view成为焦点requestFocus + *

+ * hideSoftInputFromWindow 隐藏键盘 */ @Override public boolean onTouchEvent(MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN){ + if (event.getAction() == MotionEvent.ACTION_DOWN) { //隐藏键盘 //1.获取系统输入的管理器 InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); //2.隐藏键盘 - inputManager.hideSoftInputFromWindow(binding.etUser.getWindowToken(),0); + inputManager.hideSoftInputFromWindow(binding.etUser.getWindowToken(), 0); //3.取消焦点 View focusView = getCurrentFocus(); @@ -209,18 +219,28 @@ public class LoginActivity extends BaseActivity implements TextWatcher { //判断两个输入框是否有内容 if (binding.etUser.getEditText().getText().toString().length() > 0 && binding.etPassword.getEditText().getText().toString().length() > 0 && - binding.etCaptcha.getEditText().getText().toString().length() > 0){ + binding.etCaptcha.getEditText().getText().toString().length() > 0) { //按钮可以点击 binding.btLogin.setEnabled(true); - }else{ + } else { //按钮不能点击 binding.btLogin.setEnabled(false); } } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == Activity.RESULT_OK) { + if (requestCode == APPCONST.REQUEST_AUTH_EMAIL) { + loginSuccess(); + } + } + } + @Override protected void onDestroy() { + dialog.dismiss(); super.onDestroy(); - ProgressUtils.dismiss(); } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java index 55111f7..d725a22 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java @@ -2,6 +2,7 @@ package xyz.fycz.myreader.ui.activity; import android.annotation.SuppressLint; import android.graphics.Bitmap; +import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; @@ -9,17 +10,28 @@ import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.view.View; +import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; import java.util.HashMap; import java.util.Map; +import io.reactivex.disposables.Disposable; import xyz.fycz.myreader.R; +import xyz.fycz.myreader.application.App; import xyz.fycz.myreader.base.BaseActivity; +import xyz.fycz.myreader.base.MyTextWatcher; +import xyz.fycz.myreader.base.observer.MySingleObserver; +import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.databinding.ActivityRegisterBinding; -import xyz.fycz.myreader.model.backup.UserService; +import xyz.fycz.myreader.model.user.Result; +import xyz.fycz.myreader.model.user.User; +import xyz.fycz.myreader.model.user.UserService; +import xyz.fycz.myreader.model.user.UserService2; import xyz.fycz.myreader.ui.dialog.DialogCreator; +import xyz.fycz.myreader.ui.dialog.LoadingDialog; import xyz.fycz.myreader.util.CodeUtil; +import xyz.fycz.myreader.util.CyptoUtils; import xyz.fycz.myreader.util.ToastUtils; import xyz.fycz.myreader.util.utils.ProgressUtils; import xyz.fycz.myreader.util.utils.StringUtils; @@ -36,27 +48,12 @@ public class RegisterActivity extends BaseActivity { private String code; private String username = ""; private String password = ""; - private String rpPassword = ""; + private String email = ""; + private String emailCode = ""; + private String keyc = ""; private String inputCode = ""; - - @SuppressLint("HandlerLeak") - private Handler mHandler = new Handler() { - @SuppressLint("HandlerLeak") - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - createCaptcha(); - break; - case 2: - showTip((String) msg.obj); - break; - case 3: - binding.tvRegisterTip.setVisibility(View.GONE); - break; - } - } - }; + private LoadingDialog dialog; + private Disposable disp; @Override protected void bindView() { @@ -71,164 +68,178 @@ public class RegisterActivity extends BaseActivity { getSupportActionBar().setTitle("注册"); } + @Override + protected void initData(Bundle savedInstanceState) { + dialog = new LoadingDialog(this, "正在注册", () -> { + if (disp != null) { + disp.dispose(); + } + }); + } + @Override protected void initWidget() { super.initWidget(); - mHandler.sendMessage(mHandler.obtainMessage(1)); + createCaptcha(); binding.etUsername.requestFocus(); - binding.etUsername.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - + binding.etUsername.getEditText().addTextChangedListener(new MyTextWatcher() { @Override public void afterTextChanged(Editable s) { StringUtils.isNotChinese(s); username = s.toString(); - if (username.length() < 6 || username.length() >14){ - mHandler.sendMessage(mHandler.obtainMessage(2, "用户名必须在6-14位之间")); - } else if(!username.substring(0, 1).matches("^[A-Za-z]$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, - "用户名只能以字母开头")); - }else if(!username.matches("^[A-Za-z0-9-_]+$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, - "用户名只能由数字、字母、下划线、减号组成")); - }else { - mHandler.sendMessage(mHandler.obtainMessage(3)); + if (username.length() < 6 || username.length() > 14) { + showTip("用户名必须在6-14位之间"); + } else if (!username.substring(0, 1).matches("^[A-Za-z]$")) { + showTip("用户名只能以字母开头"); + } else if (!username.matches("^[A-Za-z0-9-_]+$")) { + showTip("用户名只能由数字、字母、下划线、减号组成"); + } else { + binding.tvRegisterTip.setVisibility(View.GONE); } checkNotNone(); } }); - binding.etPassword.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - + binding.etPassword.getEditText().addTextChangedListener(new MyTextWatcher() { @Override public void afterTextChanged(Editable s) { password = s.toString(); - if (password.length() < 8 || password.length() > 16){ - mHandler.sendMessage(mHandler.obtainMessage(2, "密码必须在8-16位之间")); - } else if(password.matches("^\\d+$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, "密码不能是纯数字")); + if (password.length() < 8 || password.length() > 16) { + showTip("密码必须在8-16位之间"); + } else if (password.matches("^\\d+$")) { + showTip("密码不能是纯数字"); } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); + binding.tvRegisterTip.setVisibility(View.GONE); } checkNotNone(); } }); - binding.etRpPassword.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - + binding.etEmail.getEditText().addTextChangedListener(new MyTextWatcher() { @Override public void afterTextChanged(Editable s) { - rpPassword = s.toString(); - if (!rpPassword.equals(password)){ - mHandler.sendMessage(mHandler.obtainMessage(2, "两次输入的密码不一致")); + email = s.toString(); + if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$")) { + showTip("邮箱格式错误"); } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); + binding.tvRegisterTip.setVisibility(View.GONE); } checkNotNone(); } }); - binding.etCaptcha.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - + binding.etEmailCode.getEditText().addTextChangedListener(new MyTextWatcher() { @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - + public void afterTextChanged(Editable s) { + emailCode = s.toString().trim(); + checkNotNone(); } + }); + binding.etCaptcha.getEditText().addTextChangedListener(new MyTextWatcher() { @Override public void afterTextChanged(Editable s) { inputCode = s.toString().trim().toLowerCase(); - if (!inputCode.equals(code.toLowerCase())){ - mHandler.sendMessage(mHandler.obtainMessage(2, "验证码错误")); + if (!inputCode.equals(code.toLowerCase())) { + showTip("验证码错误"); } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); + binding.tvRegisterTip.setVisibility(View.GONE); } checkNotNone(); } }); - binding.tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); - + binding.cbAgreement.setMovementMethod(LinkMovementMethod.getInstance()); } @Override protected void initClick() { super.initClick(); - binding.ivCaptcha.setOnClickListener(v -> mHandler.sendMessage(mHandler.obtainMessage(1))); + binding.ivCaptcha.setOnClickListener(v -> createCaptcha()); + binding.tvGetEmailCode.setOnClickListener(v -> { + if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$")) { + ToastUtils.showWarring("请正确输入邮箱"); + return; + } + dialog.show(); + dialog.setmMessage("正在发送"); + UserService2.INSTANCE.sendEmail(email, "reg", keyc).subscribe(new MySingleObserver() { + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + disp = d; + } + + @Override + public void onSuccess(@NonNull Result result) { + if (result.getCode() == 106) { + ToastUtils.showSuccess("验证码发送成功"); + keyc = result.getResult().toString(); + timeDown(60); + } else { + ToastUtils.showWarring(result.getResult().toString()); + } + dialog.dismiss(); + } + + @Override + public void onError(Throwable e) { + ToastUtils.showError("验证码发送失败:\n" + e.getLocalizedMessage()); + dialog.dismiss(); + } + }); + }); binding.btRegister.setOnClickListener(v -> { - if (!username.matches("^[A-Za-z][A-Za-z0-9]{5,13}$")){ + if (!username.matches("^[A-Za-z][A-Za-z0-9]{5,13}$")) { DialogCreator.createTipDialog(this, "用户名格式错误", "用户名必须在6-14位之间\n用户名只能以字母开头\n用户名只能由数字、字母、下划线、减号组成"); - }else if(password.matches("^\\d+$") || !password.matches("^.{8,16}$")){ + } else if (password.matches("^\\d+$") || !password.matches("^.{8,16}$")) { DialogCreator.createTipDialog(this, "密码格式错误", "密码必须在8-16位之间\n密码不能是纯数字"); - }else if(!password.equals(rpPassword)){ - DialogCreator.createTipDialog(this, "重复密码错误", - "两次输入的密码不一致"); - }else if(!inputCode.trim().toLowerCase().equals(code.toLowerCase())){ + } else if (!email.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$")) { + DialogCreator.createTipDialog(this, "邮箱格式错误", + "电子邮箱的正确写法为:用户名@邮箱网站.com(.cn等)"); + } else if ("".equals(keyc)) { + DialogCreator.createTipDialog(this, "请先获取邮箱验证码"); + } else if (emailCode.length() < 6) { + DialogCreator.createTipDialog(this, "请输入6位邮箱验证码"); + } else if (!inputCode.trim().equalsIgnoreCase(code)) { DialogCreator.createTipDialog(this, "验证码错误"); - }else if(!binding.cbAgreement.isChecked()){ + } else if (!binding.cbAgreement.isChecked()) { DialogCreator.createTipDialog(this, "请勾选同意《用户服务协议》"); - }else { - ProgressUtils.show(this, "正在注册..."); - Map userRegisterInfo = new HashMap<>(); - userRegisterInfo.put("username", username); - userRegisterInfo.put("password", password); - UserService.register(userRegisterInfo, new ResultCallback() { + } else { + dialog.show(); + dialog.setmMessage("正在注册"); + User user = new User(username, CyptoUtils.encode(APPCONST.KEY, password), email); + UserService2.INSTANCE.register(user, emailCode, keyc).subscribe(new MySingleObserver() { @Override - public void onFinish(Object o, int code) { - String[] info = ((String) o).split(":"); - int result = Integer.parseInt(info[0].trim()); - if (result == 101){ - UserService.writeUsername(username); - ToastUtils.showSuccess(info[1]); + public void onSubscribe(Disposable d) { + addDisposable(d); + disp = d; + } + + @Override + public void onSuccess(@NonNull Result result) { + if (result.getCode() == 101) { + UserService2.INSTANCE.writeUsername(user.getUserName()); + ToastUtils.showSuccess(result.getResult().toString()); finish(); - }else { - ToastUtils.showWarring(info[1]); + } else { + ToastUtils.showWarring(result.getResult().toString()); } - ProgressUtils.dismiss(); + dialog.dismiss(); } + @Override - public void onError(Exception e) { + public void onError(Throwable e) { ToastUtils.showError("注册失败:\n" + e.getLocalizedMessage()); - ProgressUtils.dismiss(); + dialog.dismiss(); + createCaptcha(); } }); } - mHandler.sendMessage(mHandler.obtainMessage(1)); }); - } public void createCaptcha() { @@ -242,17 +253,29 @@ public class RegisterActivity extends BaseActivity { binding.tvRegisterTip.setText(tip); } - public void checkNotNone(){ - if ("".equals(username) || "".equals(password) || "".equals(rpPassword) || "".equals(inputCode)){ - binding.btRegister.setEnabled(false); - }else { - binding.btRegister.setEnabled(true); + private void timeDown(int time) { + if (time == 0) { + binding.tvGetEmailCode.setText(getString(R.string.re_get_email_code, "")); + binding.tvGetEmailCode.setEnabled(true); + } else { + binding.tvGetEmailCode.setEnabled(false); + String timeStr = "(" + time + ")"; + binding.tvGetEmailCode.setText(getString(R.string.re_get_email_code, timeStr)); + App.getHandler().postDelayed(() -> timeDown(time - 1), 1000); } } + public void checkNotNone() { + binding.btRegister.setEnabled(!"".equals(username) && + !"".equals(password) && + !"".equals(email) && + !"".equals(emailCode) && + !"".equals(inputCode)); + } + @Override protected void onDestroy() { + dialog.dismiss(); super.onDestroy(); - ProgressUtils.dismiss(); } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchWordActivity.kt b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchWordActivity.kt index 735aefc..85d2483 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchWordActivity.kt +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchWordActivity.kt @@ -165,7 +165,7 @@ class SearchWordActivity : BaseActivity() { private fun search() { val keyword = binding.etSearchKey.text.toString() - if (keyword.isNotEmpty() && this.keyword != keyword) { + if (keyword.isNotEmpty() && (this.keyword != keyword || adapter.itemSize == 0)) { this.keyword = keyword adapter.clear() binding.fabSearchStop.visibility = View.VISIBLE diff --git a/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java b/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java index a8ef231..fd88ff9 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java @@ -2,7 +2,6 @@ package xyz.fycz.myreader.ui.fragment; import android.annotation.SuppressLint; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -13,12 +12,12 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import com.kongzue.dialogx.dialogs.BottomMenu; import org.jetbrains.annotations.NotNull; +import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -37,30 +36,29 @@ import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.databinding.FragmentMineBinding; import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.greendao.entity.Book; -import xyz.fycz.myreader.greendao.entity.ReadRecord; import xyz.fycz.myreader.greendao.service.BookService; -import xyz.fycz.myreader.model.backup.UserService; -import xyz.fycz.myreader.model.storage.Backup; +import xyz.fycz.myreader.model.user.Result; +import xyz.fycz.myreader.model.user.User; +import xyz.fycz.myreader.model.user.UserService; import xyz.fycz.myreader.model.storage.BackupRestoreUi; -import xyz.fycz.myreader.model.storage.BackupRestoreUiKt; import xyz.fycz.myreader.model.storage.Restore; import xyz.fycz.myreader.model.storage.WebDavHelp; +import xyz.fycz.myreader.model.user.UserService2; import xyz.fycz.myreader.ui.activity.AboutActivity; import xyz.fycz.myreader.ui.activity.AdSettingActivity; import xyz.fycz.myreader.ui.activity.BookSourceActivity; import xyz.fycz.myreader.ui.activity.DonateActivity; import xyz.fycz.myreader.ui.activity.FeedbackActivity; +import xyz.fycz.myreader.ui.activity.LoginActivity; import xyz.fycz.myreader.ui.activity.MainActivity; import xyz.fycz.myreader.ui.activity.MoreSettingActivity; import xyz.fycz.myreader.ui.activity.ReadRecordActivity; import xyz.fycz.myreader.ui.dialog.DialogCreator; +import xyz.fycz.myreader.ui.dialog.LoadingDialog; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.util.SharedPreUtils; import xyz.fycz.myreader.util.ToastUtils; -import xyz.fycz.myreader.util.utils.GsonExtensionsKt; -import xyz.fycz.myreader.util.utils.ImageLoader; import xyz.fycz.myreader.util.utils.NetworkUtils; -import xyz.fycz.myreader.util.utils.StoragePermissionUtils; import xyz.fycz.myreader.webapi.ResultCallback; import static android.app.Activity.RESULT_OK; @@ -73,20 +71,23 @@ public class MineFragment extends BaseFragment { private FragmentMineBinding binding; - //private boolean isLogin; + private boolean isLogin; private Setting mSetting; - // private String[] webSynMenu; + private String[] webSynMenu; private String[] backupMenu; // private AlertDialog themeModeDia; private int themeMode; private String[] themeModeArr; + private User user; + private Disposable disp; + private LoadingDialog dialog; @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @Override public void handleMessage(@NonNull Message msg) { switch (msg.what) { case 1: - //binding.tvUser.setText("登录/注册"); + binding.tvUser.setText("登录/注册"); break; case 2: backup(); @@ -110,34 +111,40 @@ public class MineFragment extends BaseFragment { @Override protected void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); - //isLogin = UserService.isLogin(); + user = UserService2.INSTANCE.readConfig(); + isLogin = user != null && !TextUtils.isEmpty(user.getUserName()); mSetting = SysManager.getSetting(); - /*webSynMenu = new String[]{ + webSynMenu = new String[]{ App.getmContext().getString(R.string.menu_backup_webBackup), App.getmContext().getString(R.string.menu_backup_webRestore), App.getmContext().getString(R.string.menu_backup_autoSyn) - };*/ + }; backupMenu = new String[]{ App.getmContext().getResources().getString(R.string.menu_backup_backup), App.getmContext().getResources().getString(R.string.menu_backup_restore), }; themeMode = App.getApplication().isNightFS() ? 0 : mSetting.isDayStyle() ? 1 : 2; themeModeArr = getResources().getStringArray(R.array.theme_mode_arr); + dialog = new LoadingDialog(getContext(), "正在同步", (LoadingDialog.OnCancelListener) () -> { + if (disp != null) { + disp.dispose(); + } + }); } @Override protected void initWidget(Bundle savedInstanceState) { super.initWidget(savedInstanceState); - /*if (isLogin) { - binding.tvUser.setText(UserService.readUsername()); - }*/ + if (isLogin) { + binding.tvUser.setText(user.getUserName()); + } binding.tvThemeModeSelect.setText(themeModeArr[themeMode]); } @Override protected void initClick() { super.initClick(); - /*binding.mineRlUser.setOnClickListener(v -> { + binding.mineRlUser.setOnClickListener(v -> { if (isLogin) { DialogCreator.createCommonDialog(getActivity(), "退出登录", "确定要退出登录吗?" , true, (dialog, which) -> { @@ -156,7 +163,7 @@ public class MineFragment extends BaseFragment { Intent intent = new Intent(getActivity(), LoginActivity.class); getActivity().startActivityForResult(intent, APPCONST.REQUEST_LOGIN); } - });*/ + }); binding.mineRlWebdav.setOnClickListener(v -> { Intent intent = new Intent(getActivity(), MoreSettingActivity.class); @@ -164,7 +171,7 @@ public class MineFragment extends BaseFragment { startActivity(intent); }); - binding.mineRlSyn.setOnClickListener(v -> { + /*binding.mineRlSyn.setOnClickListener(v -> { String account = SharedPreUtils.getInstance().getString("webdavAccount"); String password = SharedPreUtils.getInstance().getString("webdavPassword"); if (TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) { @@ -182,6 +189,7 @@ public class MineFragment extends BaseFragment { public void onSubscribe(Disposable d) { addDisposable(d); } + @Override public void onSuccess(ArrayList strings) { if (!WebDavHelp.INSTANCE.showRestoreDialog(strings, new Restore.CallBack() { @@ -204,7 +212,7 @@ public class MineFragment extends BaseFragment { } } }); - }); + });*/ binding.mineRlBookSource.setOnClickListener(v -> { startActivity(new Intent(getContext(), BookSourceActivity.class)); }); @@ -239,8 +247,8 @@ public class MineFragment extends BaseFragment { return false; }).setCancelButton(R.string.cancel); }); - /*binding.mineRlSyn.setOnClickListener(v -> { - if (!UserService.isLogin()) { + binding.mineRlSyn.setOnClickListener(v -> { + if (!isLogin) { ToastUtils.showWarring("请先登录!"); Intent loginIntent = new Intent(getActivity(), LoginActivity.class); getActivity().startActivityForResult(loginIntent, APPCONST.REQUEST_LOGIN); @@ -278,7 +286,7 @@ public class MineFragment extends BaseFragment { .setNegativeButton(null, null) .setPositiveButton(null, null) .show(); - });*/ + }); binding.mineRlReadRecord.setOnClickListener(v -> { startActivity(new Intent(getContext(), ReadRecordActivity.class)); @@ -470,10 +478,17 @@ public class MineFragment extends BaseFragment { SharedPreUtils spb = SharedPreUtils.getInstance(); String synTime = spb.getString(getString(R.string.synTime)); if (!nowTimeStr.equals(synTime) || !isAutoSyn) { - UserService.webBackup(new ResultCallback() { + dialog.show(); + UserService2.INSTANCE.webBackup(user).subscribe(new MySingleObserver() { + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + disp = d; + } + @Override - public void onFinish(Object o, int code) { - if ((boolean) o) { + public void onSuccess(@NonNull Result result) { + if (result.getCode() == 104) { spb.putString(getString(R.string.synTime), nowTimeStr); if (!isAutoSyn) { DialogCreator.createTipDialog(getContext(), "成功将书架同步至网络!"); @@ -483,16 +498,19 @@ public class MineFragment extends BaseFragment { DialogCreator.createTipDialog(getContext(), "同步失败,请重试!"); } } + dialog.dismiss(); } @Override - public void onError(Exception e) { + public void onError(Throwable e) { if (!isAutoSyn) { DialogCreator.createTipDialog(getContext(), "同步失败,请重试!\n" + e.getLocalizedMessage()); } + dialog.dismiss(); } }); } + } /** @@ -516,10 +534,17 @@ public class MineFragment extends BaseFragment { } else { DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!"); }*/ - UserService.webRestore(new ResultCallback() { + dialog.show(); + UserService2.INSTANCE.webRestore(user).subscribe(new MySingleObserver() { @Override - public void onFinish(Object o, int code) { - if ((boolean) o) { + public void onSubscribe(Disposable d) { + addDisposable(d); + disp = d; + } + + @Override + public void onSuccess(@NonNull Result result) { + if (result.getCode() < 200) { mHandler.sendMessage(mHandler.obtainMessage(7)); // DialogCreator.createTipDialog(mMainActivity, // "恢复成功!\n注意:本功能属于实验功能,书架恢复后,书籍初次加载时可能加载失败,返回重新加载即可!");、 @@ -532,10 +557,12 @@ public class MineFragment extends BaseFragment { } else { DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!"); } + dialog.dismiss(); } @Override - public void onError(Exception e) { + public void onError(Throwable e) { + DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!\n" + e.getLocalizedMessage()); DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!\n" + e.getLocalizedMessage()); } }); @@ -547,13 +574,14 @@ public class MineFragment extends BaseFragment { public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { - /*case APPCONST.REQUEST_LOGIN: + case APPCONST.REQUEST_LOGIN: assert data != null; isLogin = data.getBooleanExtra("isLogin", false); - if (isLogin) { - binding.tvUser.setText(UserService.readUsername()); + user = UserService2.INSTANCE.readConfig(); + if (isLogin && user != null) { + binding.tvUser.setText(user.getUserName()); } - break;*/ + break; } } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java b/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java index 27270db..8969c24 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java @@ -6,23 +6,19 @@ import android.app.Notification; import android.app.PendingIntent; import android.content.*; import android.graphics.BitmapFactory; -import android.os.Build; import android.os.Handler; import android.os.Message; -import android.text.TextUtils; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.PopupMenu; -import androidx.core.app.ActivityCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import com.hjq.permissions.OnPermissionCallback; -import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.kongzue.dialogx.dialogs.BottomMenu; @@ -31,7 +27,6 @@ import org.jetbrains.annotations.NotNull; import java.text.Collator; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; @@ -39,7 +34,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import io.reactivex.Observable; -import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import xyz.fycz.myreader.R; @@ -55,12 +49,11 @@ import xyz.fycz.myreader.webapi.ResultCallback; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.greendao.entity.BookGroup; import xyz.fycz.myreader.greendao.service.BookGroupService; -import xyz.fycz.myreader.model.backup.UserService; +import xyz.fycz.myreader.model.user.UserService; import xyz.fycz.myreader.ui.activity.*; import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; import xyz.fycz.myreader.webapi.crawler.ReadCrawlerUtil; import xyz.fycz.myreader.ui.dialog.DialogCreator; -import xyz.fycz.myreader.widget.custom.DragSortGridView; import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.enums.BookcaseStyle; import xyz.fycz.myreader.greendao.entity.Book; diff --git a/app/src/main/java/xyz/fycz/myreader/util/help/StringHelper.java b/app/src/main/java/xyz/fycz/myreader/util/help/StringHelper.java index b962a85..fe20f7f 100644 --- a/app/src/main/java/xyz/fycz/myreader/util/help/StringHelper.java +++ b/app/src/main/java/xyz/fycz/myreader/util/help/StringHelper.java @@ -88,7 +88,7 @@ public class StringHelper { //生成随机数字和字母, public static String getStringRandom(int length) { - String val = ""; + StringBuilder val = new StringBuilder(); Random random = new Random(); //参数length,表示生成几位随机数 @@ -98,12 +98,12 @@ public class StringHelper { if( "char".equalsIgnoreCase(charOrNum) ) { //输出是大写字母还是小写字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; - val += (char)(random.nextInt(26) + temp); + val.append((char) (random.nextInt(26) + temp)); } else if( "num".equalsIgnoreCase(charOrNum) ) { - val += String.valueOf(random.nextInt(10)); + val.append(String.valueOf(random.nextInt(10))); } } - return val; + return val.toString(); } public static String jidToUsername(String jid){ diff --git a/app/src/main/java/xyz/fycz/myreader/util/utils/AdUtils.java b/app/src/main/java/xyz/fycz/myreader/util/utils/AdUtils.java index fbb5448..06d2905 100644 --- a/app/src/main/java/xyz/fycz/myreader/util/utils/AdUtils.java +++ b/app/src/main/java/xyz/fycz/myreader/util/utils/AdUtils.java @@ -13,7 +13,7 @@ import okhttp3.MediaType; import okhttp3.RequestBody; import xyz.fycz.myreader.base.observer.MySingleObserver; import xyz.fycz.myreader.common.URLCONST; -import xyz.fycz.myreader.model.backup.UserService; +import xyz.fycz.myreader.model.user.UserService; import xyz.fycz.myreader.util.SharedPreUtils; import xyz.fycz.myreader.util.help.DateHelper; diff --git a/app/src/main/java/xyz/fycz/myreader/util/utils/FileUtils.java b/app/src/main/java/xyz/fycz/myreader/util/utils/FileUtils.java index f452f77..9097de5 100644 --- a/app/src/main/java/xyz/fycz/myreader/util/utils/FileUtils.java +++ b/app/src/main/java/xyz/fycz/myreader/util/utils/FileUtils.java @@ -316,12 +316,10 @@ public class FileUtils { public static void write(Context context, String fileName, String content) { if (content == null) content = ""; - try { FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); fos.write(content.getBytes()); - fos.close(); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/res/color/selector_get_emali_code.xml b/app/src/main/res/color/selector_get_emali_code.xml new file mode 100644 index 0000000..91a4ed5 --- /dev/null +++ b/app/src/main/res/color/selector_get_emali_code.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/bg_login.jpg b/app/src/main/res/drawable-xhdpi/bg_login.jpg deleted file mode 100644 index 212b2c12d0b129fdf0938b6f928875d6d5920328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137521 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

FTvZqUL-gQ!}DkB+b_BgBg755nt*VRj- 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 - + diff --git a/app/src/main/res/layout/activity_auth_email.xml b/app/src/main/res/layout/activity_auth_email.xml new file mode 100644 index 0000000..ce17a5e --- /dev/null +++ b/app/src/main/res/layout/activity_auth_email.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +