Label the local context by where its data actually lives

"Yattee (iCloud)" was hardcoded for the local data context even with
iCloud sync disabled, when the data is purely on-device. The name now
comes from DataContextValidator.localContextName, which checks
iCloudSyncEnabled and falls back to "Yattee (This Device)".
This commit is contained in:
Arkadiusz Fal
2026-09-15 09:02:18 +02:00
parent 50e32dbe5a
commit 753cda9661
3 changed files with 22 additions and 3 deletions

View File

@@ -18439,6 +18439,16 @@
}
}
},
"subscriptions.account.local.device" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Yattee (This Device)"
}
}
}
},
"subscriptions.account.pipedInstance %@" : {
"localizations" : {
"en" : {

View File

@@ -259,16 +259,25 @@ final class DataContextValidator {
func displayName(for context: DataContext) -> String {
switch context {
case .local:
return String(localized: "subscriptions.account.local")
return localContextName
case let .account(id):
guard let account = accountsManager.account(id: id) else {
return String(localized: "subscriptions.account.local")
return localContextName
}
return displayName(for: account)
}
}
/// "(iCloud)" only when the data actually syncs; otherwise it lives on
/// this device alone and the label says so.
var localContextName: String {
if appEnvironment?.settingsManager.iCloudSyncEnabled == true {
return String(localized: "subscriptions.account.local")
}
return String(localized: "subscriptions.account.local.device")
}
/// User-set label, else whatever the account falls back to.
func displayName(for account: Account) -> String {
if let name = account.displayName, !name.isEmpty { return name }

View File

@@ -99,7 +99,7 @@ enum DataContextSwitcherLabels {
/// The context's name, plus whatever the user needs to tell it apart.
@MainActor
static func title(for context: DataContext, in appEnvironment: AppEnvironment?) -> String {
guard let appEnvironment else { return String(localized: "subscriptions.account.local") }
guard let appEnvironment else { return String(localized: "subscriptions.account.local.device") }
return title(
for: context,