[tvOS] Fix First Login Crash (#1481)

* Update UserSignInView.swift

Fix Crash

* Update UserSignInView.swift

Restore unnecessarily removed items

* Update UserSignInView.swift

Remove unnecessary formatting changes.

* Use `MainActor` instead

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
This commit is contained in:
Joe Kribs 2025-04-06 15:41:42 -06:00 committed by GitHub
parent 26ec19982e
commit df89832647
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 23 additions and 15 deletions

View File

@ -66,6 +66,25 @@ struct UserSignInView: View {
self._viewModel = StateObject(wrappedValue: UserSignInViewModel(server: server)) self._viewModel = StateObject(wrappedValue: UserSignInViewModel(server: server))
} }
// MARK: - Handle Sign In
@MainActor
private func handleSignIn(_ event: UserSignInViewModel.Event) {
switch event {
case let .duplicateUser(duplicateUser):
self.duplicateUser = duplicateUser
isPresentingDuplicateUser = true
case let .error(eventError):
error = eventError
case let .signedIn(user):
router.dismissCoordinator()
Defaults[.lastSignedInUserID] = .signedIn(userID: user.id)
Container.shared.currentUserSession.reset()
Notifications[.didSignIn].post()
}
}
// MARK: - Sign In Section // MARK: - Sign In Section
@ViewBuilder @ViewBuilder
@ -172,21 +191,10 @@ struct UserSignInView: View {
} trailingContentView: { } trailingContentView: {
publicUsersSection publicUsersSection
} }
.onReceive(viewModel.events) { event in .onReceive(
switch event { viewModel.events,
case let .duplicateUser(duplicateUser): perform: handleSignIn
self.duplicateUser = duplicateUser )
isPresentingDuplicateUser = true
case let .error(eventError):
error = eventError
case let .signedIn(user):
router.dismissCoordinator()
Defaults[.lastSignedInUserID] = .signedIn(userID: user.id)
Container.shared.currentUserSession.reset()
Notifications[.didSignIn].post()
}
}
.onFirstAppear { .onFirstAppear {
focusedField = .username focusedField = .username
viewModel.send(.getPublicData) viewModel.send(.getPublicData)