mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
Fixes button titles flashing when scrolling into view
This commit is contained in:
@@ -254,83 +254,85 @@ extension AppBannerView
|
||||
buttonAction = .open
|
||||
}
|
||||
|
||||
switch buttonAction
|
||||
{
|
||||
case .open:
|
||||
let buttonTitle = NSLocalizedString("Open", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Open %@", comment: ""), values.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .update:
|
||||
let buttonTitle = NSLocalizedString("Update", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Update %@", comment: ""), values.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .custom(let buttonTitle):
|
||||
self.button.setTitle(buttonTitle, for: .normal)
|
||||
self.button.accessibilityLabel = buttonTitle
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .install:
|
||||
if let storeApp = app.storeApp, storeApp.isPledgeRequired
|
||||
UIView.performWithoutAnimation {
|
||||
switch buttonAction
|
||||
{
|
||||
// Pledge required
|
||||
case .open:
|
||||
let buttonTitle = NSLocalizedString("Open", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Open %@", comment: ""), values.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
if storeApp.isPledged
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .update:
|
||||
let buttonTitle = NSLocalizedString("Update", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Update %@", comment: ""), values.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .custom(let buttonTitle):
|
||||
self.button.setTitle(buttonTitle, for: .normal)
|
||||
self.button.accessibilityLabel = buttonTitle
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
|
||||
self.button.countdownDate = nil
|
||||
|
||||
case .install:
|
||||
if let storeApp = app.storeApp, storeApp.isPledgeRequired
|
||||
{
|
||||
let buttonTitle = NSLocalizedString("Install", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Install %@", comment: ""), app.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
}
|
||||
else if let amount = storeApp.pledgeAmount, let currencyCode = storeApp.pledgeCurrency, #available(iOS 15, *)
|
||||
{
|
||||
let price = amount.formatted(.currency(code: currencyCode).presentation(.narrow).precision(.fractionLength(0...2)))
|
||||
// Pledge required
|
||||
|
||||
let buttonTitle = String(format: NSLocalizedString("%@/mo", comment: ""), price)
|
||||
self.button.setTitle(buttonTitle, for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Pledge %@ a month", comment: ""), price)
|
||||
self.button.accessibilityValue = String(format: NSLocalizedString("%@ a month", comment: ""), price)
|
||||
if storeApp.isPledged
|
||||
{
|
||||
let buttonTitle = NSLocalizedString("Install", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Install %@", comment: ""), app.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
}
|
||||
else if let amount = storeApp.pledgeAmount, let currencyCode = storeApp.pledgeCurrency, #available(iOS 15, *)
|
||||
{
|
||||
let price = amount.formatted(.currency(code: currencyCode).presentation(.narrow).precision(.fractionLength(0...2)))
|
||||
|
||||
let buttonTitle = String(format: NSLocalizedString("%@/mo", comment: ""), price)
|
||||
self.button.setTitle(buttonTitle, for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Pledge %@ a month", comment: ""), price)
|
||||
self.button.accessibilityValue = String(format: NSLocalizedString("%@ a month", comment: ""), price)
|
||||
}
|
||||
else
|
||||
{
|
||||
let buttonTitle = NSLocalizedString("Pledge", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = buttonTitle
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
let buttonTitle = NSLocalizedString("Pledge", comment: "")
|
||||
// Free app
|
||||
|
||||
let buttonTitle = NSLocalizedString("Free", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = buttonTitle
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Download %@", comment: ""), app.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Free app
|
||||
|
||||
let buttonTitle = NSLocalizedString("Free", comment: "")
|
||||
self.button.setTitle(buttonTitle.uppercased(), for: .normal)
|
||||
self.button.accessibilityLabel = String(format: NSLocalizedString("Download %@", comment: ""), app.name)
|
||||
self.button.accessibilityValue = buttonTitle
|
||||
if let versionDate = app.storeApp?.latestSupportedVersion?.date, versionDate > Date()
|
||||
{
|
||||
self.button.countdownDate = versionDate
|
||||
}
|
||||
else
|
||||
{
|
||||
self.button.countdownDate = nil
|
||||
}
|
||||
}
|
||||
|
||||
if let versionDate = app.storeApp?.latestSupportedVersion?.date, versionDate > Date()
|
||||
{
|
||||
self.button.countdownDate = versionDate
|
||||
}
|
||||
else
|
||||
{
|
||||
self.button.countdownDate = nil
|
||||
}
|
||||
// Ensure PillButton is correct size before assigning progress.
|
||||
self.layoutIfNeeded()
|
||||
}
|
||||
|
||||
// Ensure PillButton is correct size before assigning progress.
|
||||
self.layoutIfNeeded()
|
||||
|
||||
if let progress = AppManager.shared.installationProgress(for: app), progress.fractionCompleted < 1.0
|
||||
{
|
||||
self.button.progress = progress
|
||||
|
||||
Reference in New Issue
Block a user