From 9bf3fa9b0f42d59dccdc0b37d00001ff8be3c756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B9=96=E5=8C=97=E7=A7=A6=E4=B9=9D?= Date: Tue, 13 Jan 2026 18:26:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=BD=E7=95=99=E5=BC=B9=E7=AA=97=E5=BC=80?= =?UTF-8?q?=E5=8F=91=20=201.0.5=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fableon.xcodeproj/project.pbxproj | 4 +- .../Player/VM/FAShortDetailViewModel.swift | 5 ++ .../Object/Libs/Alert/FAPayRetainAlert.swift | 50 ++++++++++++++----- .../Object/Libs/FAIap/FAPayDataRequest.swift | 4 ++ 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/Fableon.xcodeproj/project.pbxproj b/Fableon.xcodeproj/project.pbxproj index 54e7634..0ee7f7b 100644 --- a/Fableon.xcodeproj/project.pbxproj +++ b/Fableon.xcodeproj/project.pbxproj @@ -2755,7 +2755,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -2797,7 +2797,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.hn.qinjiu.fableon; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/Fableon/Object/Class/Player/VM/FAShortDetailViewModel.swift b/Fableon/Object/Class/Player/VM/FAShortDetailViewModel.swift index 7224de4..a11ed6d 100644 --- a/Fableon/Object/Class/Player/VM/FAShortDetailViewModel.swift +++ b/Fableon/Object/Class/Player/VM/FAShortDetailViewModel.swift @@ -245,6 +245,11 @@ extension FAShortDetailViewModel { let view = FAPayRetainAlert() view.model = model + view.videoInfo = videoInfo + view.buyFinishHandle = { [weak self] in + guard let self = self else { return } + self.requestDetailData(indexPath: self.currentIndexPath, completer: nil) + } view.show(in: FATool.keyWindow) } diff --git a/Fableon/Object/Libs/Alert/FAPayRetainAlert.swift b/Fableon/Object/Libs/Alert/FAPayRetainAlert.swift index 1a34f8d..2ee9d75 100644 --- a/Fableon/Object/Libs/Alert/FAPayRetainAlert.swift +++ b/Fableon/Object/Libs/Alert/FAPayRetainAlert.swift @@ -10,6 +10,8 @@ import SnapKit import YYText class FAPayRetainAlert: FABaseAlert { + + var buyFinishHandle: (() -> Void)? var model: FAPayDateModel? { didSet { @@ -20,6 +22,12 @@ class FAPayRetainAlert: FABaseAlert { bonusTagView.update(text: model?.retrieve_lang?.subtitle ?? "") } } + + var videoInfo: FAVideoInfoModel? { + didSet { + + } + } private var selectedIndex = FAPayRetainAlertData.defaultSelectedIndex @@ -152,6 +160,17 @@ extension FAPayRetainAlert: UICollectionViewDataSource, UICollectionViewDelegate func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { selectedIndex = indexPath.item collectionView.reloadData() + + guard let item = self.model?.list_coins?[indexPath.row] else { return } + + FAIapManager.manager.start(model: item, shortPlayId: self.videoInfo?.short_play_id, videoId: self.videoInfo?.short_play_video_id) { [weak self] finish in + guard let self = self else { return } + if finish { + FALogin.manager.requestUserInfo(completer: nil) + self.dismiss() + self.buyFinishHandle?() + } + } } } @@ -169,6 +188,18 @@ extension FAPayRetainAlert { private static let countdownEndTimeKey = "FAPayRetainCountdownEndTime" private var countdownTimer: Timer? private var remainingSeconds: Int = 0 + + private lazy var resolveEndTime: TimeInterval = { + let defaults = UserDefaults.standard + let now = Date().timeIntervalSince1970 + let storedEndTime = defaults.double(forKey: Self.countdownEndTimeKey) + if storedEndTime > now { + return storedEndTime + } + let newEndTime = now + TimeInterval(Self.defaultCountdownSeconds) + defaults.set(newEndTime, forKey: Self.countdownEndTimeKey) + return newEndTime + }() private let prefixLabel = UILabel() private let suffixLabel = UILabel() @@ -253,7 +284,7 @@ extension FAPayRetainAlert { // 每次展示时从 4 小时开始倒计时 private func startCountdown() { stopCountdown() - let endTime = resolveEndTime() + let endTime = self.resolveEndTime remainingSeconds = max(0, Int(endTime - Date().timeIntervalSince1970)) updateTimeLabels() guard remainingSeconds > 0 else { @@ -281,19 +312,14 @@ extension FAPayRetainAlert { updateTimeLabels() } - private func resolveEndTime() -> TimeInterval { - let defaults = UserDefaults.standard - let now = Date().timeIntervalSince1970 - let storedEndTime = defaults.double(forKey: Self.countdownEndTimeKey) - if storedEndTime > now { - return storedEndTime - } - let newEndTime = now + TimeInterval(Self.defaultCountdownSeconds) - defaults.set(newEndTime, forKey: Self.countdownEndTimeKey) - return newEndTime - } + private func updateTimeLabels() { + if remainingSeconds <= 0 { + self.isHidden = true + self.stopCountdown() + return + } let hours = remainingSeconds / 3600 let minutes = (remainingSeconds % 3600) / 60 let seconds = remainingSeconds % 60 diff --git a/Fableon/Object/Libs/FAIap/FAPayDataRequest.swift b/Fableon/Object/Libs/FAIap/FAPayDataRequest.swift index 70f6270..c832d6b 100644 --- a/Fableon/Object/Libs/FAIap/FAPayDataRequest.swift +++ b/Fableon/Object/Libs/FAIap/FAPayDataRequest.swift @@ -107,10 +107,14 @@ class FAPayDataRequest: NSObject { func requestPayRetainInfo(completer: ((_ model: FAPayDateModel?) -> Void)?) { self.payRetainBlock = completer + self.isLoding = true + self.isToast = true + FAHUD.show() FAStoreAPI.requestPayRetainInfo { [weak self] model in guard let self = self else { return } guard let model = model else { + FAHUD.dismiss() self.payRetainBlock?(nil) return }