parent
							
								
									54cbc6d26c
								
							
						
					
					
						commit
						3e9a432a09
					
				| @ -0,0 +1,105 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  *  FYReader is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU General Public License as published by | ||||
|  *  the Free Software Foundation, either version 3 of the License, or | ||||
|  *  (at your option) any later version. | ||||
|  * | ||||
|  *  FYReader is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  *  GNU General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU General Public License | ||||
|  *  along with FYReader.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  *  Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic.fix | ||||
| 
 | ||||
| import android.text.TextUtils | ||||
| import me.fycz.maple.MapleBridge | ||||
| import me.fycz.maple.MapleUtils | ||||
| import me.fycz.maple.MethodReplacement | ||||
| import xyz.fycz.myreader.common.APPCONST | ||||
| import xyz.fycz.myreader.greendao.entity.Book | ||||
| import xyz.fycz.myreader.greendao.entity.Chapter | ||||
| import xyz.fycz.myreader.greendao.service.ChapterService | ||||
| import xyz.fycz.myreader.ui.adapter.BookcaseAdapter | ||||
| import xyz.fycz.myreader.util.utils.FileUtils | ||||
| import java.io.* | ||||
| 
 | ||||
| /** | ||||
|  * @author fengyue | ||||
|  * @date 2022/4/25 23:00 | ||||
|  */ | ||||
| @AppFix([243, 244], ["修复书籍无法导出缓存的问题"], "2022-04-25") | ||||
| class App244Fix: AppFixHandle { | ||||
|     override fun onFix(key: String): BooleanArray { | ||||
|         var fx = false | ||||
|         try { | ||||
|             fixUnionChapterCathe() | ||||
|             fx = true | ||||
|             fixResult(key, "unionChapterCathe", true) | ||||
|         } catch (e: Exception) { | ||||
|             MapleUtils.log(e) | ||||
|             fixResult(key, "getAllNoLocalSource", false) | ||||
|         } | ||||
|         return booleanArrayOf(fx) | ||||
|     } | ||||
| 
 | ||||
|     private fun fixUnionChapterCathe() { | ||||
|         MapleUtils.findAndHookMethod( | ||||
|             BookcaseAdapter::class.java, | ||||
|             "unionChapterCathe", | ||||
|             Book::class.java, | ||||
|             object : MethodReplacement() { | ||||
|                 override fun replaceHookedMethod(param: MapleBridge.MethodHookParam): Any { | ||||
|                     return unionChapterCathe(param.args[0] as Book) | ||||
|                 } | ||||
|             } | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|     @Throws(IOException::class) | ||||
|     fun unionChapterCathe(book: Book): Boolean { | ||||
|         val chapters = ChapterService.getInstance().findBookAllChapterByBookId(book.id) as ArrayList<Chapter> | ||||
|         if (chapters.size == 0) { | ||||
|             return false | ||||
|         } | ||||
|         val bookFile = File(APPCONST.BOOK_CACHE_PATH + book.id) | ||||
|         if (!bookFile.exists()) { | ||||
|             return false | ||||
|         } | ||||
|         var br: BufferedReader? | ||||
|         val bw: BufferedWriter? | ||||
|         val filePath = | ||||
|             APPCONST.TXT_BOOK_DIR + book.name + (if (book.author.isNullOrEmpty()) "" else " 作者:" + book.author) + ".txt" | ||||
|         bw = BufferedWriter(FileWriter(FileUtils.getFile(filePath))) | ||||
|         bw.write("《${book.name}》") | ||||
|         if (!book.author.isNullOrEmpty()) { | ||||
|             bw.write("作者:${book.author}") | ||||
|         } | ||||
|         if (!book.desc.isNullOrEmpty()) { | ||||
|             bw.write("简介:${book.desc}") | ||||
|         } | ||||
|         bw.newLine() | ||||
|         for (chapter in chapters) { | ||||
|             if (ChapterService.isChapterCached(chapter)) { | ||||
|                 bw.write("\t" + chapter.title) | ||||
|                 bw.newLine() | ||||
|                 br = BufferedReader(FileReader(ChapterService.getChapterFile(chapter))) | ||||
|                 var line: String? | ||||
|                 while (br.readLine().also { line = it } != null) { | ||||
|                     bw.write(line) | ||||
|                     bw.newLine() | ||||
|                 } | ||||
|                 br.close() | ||||
|             } | ||||
|         } | ||||
|         bw.flush() | ||||
|         bw.close() | ||||
|         return true | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,29 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  *  FYReader is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU General Public License as published by | ||||
|  *  the Free Software Foundation, either version 3 of the License, or | ||||
|  *  (at your option) any later version. | ||||
|  * | ||||
|  *  FYReader is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  *  GNU General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU General Public License | ||||
|  *  along with FYReader.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  *  Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic.fix | ||||
| 
 | ||||
| /** | ||||
|  * @author fengyue | ||||
|  * @date 2022/4/25 22:05 | ||||
|  */ | ||||
| annotation class AppFix( | ||||
|     val version: IntArray = [], | ||||
|     val fixLog: Array<String> = [], | ||||
|     val date: String = "" | ||||
| ) | ||||
| @ -0,0 +1,49 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  *  FYReader is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU General Public License as published by | ||||
|  *  the Free Software Foundation, either version 3 of the License, or | ||||
|  *  (at your option) any later version. | ||||
|  * | ||||
|  *  FYReader is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  *  GNU General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU General Public License | ||||
|  *  along with FYReader.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  *  Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic.fix | ||||
| 
 | ||||
| import android.app.AlertDialog | ||||
| import android.content.Context | ||||
| import android.os.Bundle | ||||
| import me.fycz.maple.MapleBridge | ||||
| import me.fycz.maple.MapleUtils | ||||
| import me.fycz.maple.MethodHook | ||||
| import xyz.fycz.dynamic.AppLoadImpl.Companion.spu | ||||
| import xyz.fycz.myreader.ui.activity.MainActivity | ||||
| import xyz.fycz.myreader.util.utils.AdUtils | ||||
| 
 | ||||
| /** | ||||
|  * @author fengyue | ||||
|  * @date 2022/4/25 21:49 | ||||
|  */ | ||||
| interface AppFixHandle { | ||||
|      | ||||
|     fun onFix(key: String): BooleanArray | ||||
| 
 | ||||
|     fun fixResult(key: String, name: String, success: Boolean) { | ||||
|         val res = if (success) "Success" else "Failed" | ||||
|         if (!spu.getBoolean("$key-$name-$res", false)) { | ||||
|             AdUtils.adRecord(name, "fx$res") | ||||
|             spu.edit().run { | ||||
|                 putBoolean("$key-$name-$res", true) | ||||
|                 apply() | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue