From b2c7d5e34ea914f54b454935c67c2c1a815ac3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BE=9C=E5=A3=B0=E4=B8=96=E7=BA=AA?= <> Date: Mon, 29 Dec 2025 09:01:07 +0800 Subject: [PATCH] =?UTF-8?q?1.0.4=E6=8F=90=E5=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReaderHive.xcodeproj/project.pbxproj | 4 +-- .../Base/Networking/API/NRNovelAPI.swift | 28 +++++++++++-------- .../VC/Read/NRNovelReaderViewController.swift | 2 +- .../Novel/VM/NRNovelReadViewModel+Data.swift | 14 ++++++---- .../Class/Novel/VM/NRNovelReadViewModel.swift | 4 +-- .../NovelTool/NRNovelReadSetManager.swift | 7 +++++ 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/ReaderHive.xcodeproj/project.pbxproj b/ReaderHive.xcodeproj/project.pbxproj index 12b04bd..54b826a 100644 --- a/ReaderHive.xcodeproj/project.pbxproj +++ b/ReaderHive.xcodeproj/project.pbxproj @@ -3041,7 +3041,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3086,7 +3086,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/ReaderHive/Base/Networking/API/NRNovelAPI.swift b/ReaderHive/Base/Networking/API/NRNovelAPI.swift index 7627019..ba3f0bf 100644 --- a/ReaderHive/Base/Networking/API/NRNovelAPI.swift +++ b/ReaderHive/Base/Networking/API/NRNovelAPI.swift @@ -50,18 +50,24 @@ struct NRNovelAPI { } ///上报阅读记录 - static func requestUploadRecord(_ id: String, chapterId: String) { -// var param = NRNetwork.Parameters(path: "/novel/watchProgressReport") - var param = NRNetwork.Parameters(path: "/createHistory") - param.isToast = false - param.parameters = [ - "short_play_id" : id, -// "short_play_video_id" : chapterId - "video_id" : chapterId - ] - - NRNetwork.request(parameters: param) { (response: NRNetwork.Response) in + static func requestUploadRecord(_ id: String, chapterId: String) async -> Bool { + await withCheckedContinuation { continuation in + // var param = NRNetwork.Parameters(path: "/novel/watchProgressReport") + var param = NRNetwork.Parameters(path: "/createHistory") + param.isToast = false + param.parameters = [ + "short_play_id" : id, + // "short_play_video_id" : chapterId + "video_id" : chapterId + ] + NRNetwork.request(parameters: param) { (response: NRNetwork.Response) in + if response.isSuccess { + continuation.resume(returning: true) + } else { + continuation.resume(returning: false) + } + } } } diff --git a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift index eed7c2a..bf6356d 100644 --- a/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift +++ b/ReaderHive/Class/Novel/VC/Read/NRNovelReaderViewController.swift @@ -39,7 +39,7 @@ class NRNovelReaderViewController: NRViewController { } } - let oldBrightness: CGFloat = UIScreen.main.brightness + var oldBrightness: CGFloat = UIScreen.main.brightness private(set) lazy var viewModel: NRNovelReadViewModel = { let vm = NRNovelReadViewModel() diff --git a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift index 84b07fe..c401a16 100644 --- a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift +++ b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel+Data.swift @@ -171,12 +171,14 @@ extension NRNovelReadViewModel { model.page = pageModel.page?.intValue NRKeyedArchiver.archiver(folderName: kNRReadRecordFolderName, fileName: novelId, object: model) - let lastTime = uploadRecordDate?.timeIntervalSince1970 ?? 0 - let nowTime = Date().timeIntervalSince1970 - - if lastTime == 0 || nowTime - lastTime > 1 {//间隔5秒才能上传一次记录 - uploadRecordDate = Date() - NRNovelAPI.requestUploadRecord(novelId, chapterId: catalogModel.id ?? "") + if self.lastUploadCatalogId == nil || self.lastUploadCatalogId != catalogModel.id { + self.lastUploadCatalogId = catalogModel.id + Task { + let result = await NRNovelAPI.requestUploadRecord(novelId, chapterId: catalogModel.id ?? "") + if !result { + self.lastUploadCatalogId = nil + } + } } } diff --git a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift index f2d4a48..3b6f52c 100644 --- a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift +++ b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift @@ -44,8 +44,8 @@ class NRNovelReadViewModel: NSObject { return tap }() - ///用来记录上报历史记录的时间 - var uploadRecordDate: Date? + ///上报历史记录用,用来记录上次上报的目录id(用来控制每个章节只上报一次) + var lastUploadCatalogId: String? weak var popView: UIView? diff --git a/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift b/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift index 4fe414e..af6bd18 100644 --- a/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift +++ b/ReaderHive/Libs/NovelTool/NRNovelReadSetManager.swift @@ -14,6 +14,11 @@ class NRNovelReadSetManager: NSObject { private(set) var readSet: NRNovelReadSet = UserDefaults.nr_object(forKey: kNRNovelReadSetDefaultsKey, as: NRNovelReadSet.self) ?? NRNovelReadSet() + override init() { + super.init() +// NotificationCenter.default.addObserver(self, selector: #selector(willEnterForegroundNotification), name: UIApplication.willEnterForegroundNotification, object: nil) + } + ///动画时间 let animateDuration = 0.2 @@ -26,6 +31,8 @@ class NRNovelReadSetManager: NSObject { return .init(x: 16, y: 0, width: UIScreen.width - 32, height: UIScreen.height - contentTopViewHeight - contentBottomViewHeight) } + var systemBrightness: CGFloat = UIScreen.main.brightness + var currentTheme: NRReadTheme { if isNight { return nightTheme