diff --git a/Yattee/Localizable.xcstrings b/Yattee/Localizable.xcstrings index 4945988a..8927338b 100644 --- a/Yattee/Localizable.xcstrings +++ b/Yattee/Localizable.xcstrings @@ -256,6 +256,17 @@ } } }, + "accounts.empty.openSources" : { + "comment" : "tvOS button on the empty Accounts screen that opens the Sources list", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Sources" + } + } + } + }, "accounts.empty.title" : { "localizations" : { "en" : { diff --git a/Yattee/Views/Settings/AccountsListView.swift b/Yattee/Views/Settings/AccountsListView.swift index 9d50cf8f..d5ebdba6 100644 --- a/Yattee/Views/Settings/AccountsListView.swift +++ b/Yattee/Views/Settings/AccountsListView.swift @@ -158,6 +158,17 @@ struct AccountsListView: View { Label(String(localized: "accounts.empty.title"), systemImage: "person.crop.circle") } description: { Text(String(localized: "accounts.empty.description")) + } actions: { + #if os(tvOS) + // Without a focusable element the focus engine has nowhere to + // land, and the remote can no longer reach the sidebar either. + // Sources is also where an account is actually signed in. + NavigationLink { + SourcesListView() + } label: { + Label(String(localized: "accounts.empty.openSources"), systemImage: "server.rack") + } + #endif } .frame(maxWidth: .infinity, maxHeight: .infinity) }