-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
👍 セッションのリフレッシュ処理を追加 #103
👍 セッションのリフレッシュ処理を追加 #103
Conversation
Walkthrough認証状態の監視に関連するクラスとプロパティが更新されました。 Changes
TipsChat with CodeRabbit Bot (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 1
Configuration used: CodeRabbit UI
Files selected for processing (26)
- app/ios-combined/src/iosTest/kotlin/club/nito/ios/combined/EntryPointTest.kt (3 hunks)
- app/ios/Modules/Sources/Auth/ComposeLoginScreen.swift (1 hunks)
- app/ios/Modules/Sources/Auth/LoginStateMachine.swift (2 hunks)
- app/ios/Modules/Sources/KmpContainer/AuthStatusStreamUseCaseProvider.swift (1 hunks)
- app/ios/Modules/Sources/Navigation/RootStateMachine.swift (2 hunks)
- app/ios/Modules/Sources/Settings/ComposeSettingsScreen.swift (1 hunks)
- app/shared/src/commonMain/kotlin/club/nito/app/shared/NitoAppStateMachine.kt (2 hunks)
- app/shared/src/commonMain/kotlin/club/nito/app/shared/NitoNavHost.kt (1 hunks)
- app/shared/src/commonMain/kotlin/club/nito/app/shared/di/AppModule.kt (1 hunks)
- core/data/src/commonMain/kotlin/club/nito/core/data/AuthRepository.kt (2 hunks)
- core/data/src/commonMain/kotlin/club/nito/core/data/DefaultAuthRepository.kt (1 hunks)
- core/domain/src/commonMain/kotlin/club/nito/core/domain/AuthStatusStreamUseCase.kt (1 hunks)
- core/domain/src/commonMain/kotlin/club/nito/core/domain/di/UseCaseModule.kt (3 hunks)
- core/model/src/commonMain/kotlin/club/nito/core/model/AuthState.kt (1 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/NetworkService.kt (1 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/auth/AuthRemoteDataSource.kt (1 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/auth/FakeAuthRemoteDataSource.kt (4 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/auth/SupabaseAuthRemoteDataSource.kt (2 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/di/RemoteDataSourceModule.kt (2 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/participation/SupabaseParticipantRemoteDataSource.kt (1 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/schedule/SupabaseScheduleRemoteDataSource.kt (3 hunks)
- core/network/src/commonMain/kotlin/club/nito/core/network/user/SupabaseUserRemoteDataSource.kt (2 hunks)
- feature/auth/src/commonMain/kotlin/club/nito/feature/auth/LoginScreenStateMachine.kt (4 hunks)
- feature/auth/src/commonMain/kotlin/club/nito/feature/auth/di/AuthFeatureModule.kt (1 hunks)
- feature/settings/src/commonMain/kotlin/club/nito/feature/settings/SettingsScreenStateMachine.kt (4 hunks)
- feature/settings/src/commonMain/kotlin/club/nito/feature/settings/di/SettingsFeatureModule.kt (1 hunks)
Files skipped from review due to trivial changes (1)
- app/shared/src/commonMain/kotlin/club/nito/app/shared/NitoNavHost.kt
Additional comments: 48
app/ios-combined/src/iosTest/kotlin/club/nito/ios/combined/EntryPointTest.kt (3)
8-8:
AuthStatusStreamUseCase
の導入は、要約に記載されている通りです。これにより、認証ステータスのストリーミングが新しい方法で行われるようになります。16-16:
GoTrue
がAuth
に名前変更されたことが確認できます。これは要約に記載されている変更と一致しています。5-19: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [5-41]
セッションのリフレッシュ機能に関する記述は見当たりませんが、認証ステータスの取り扱いに関する変更が含まれている可能性があります。プルリクエストの目的と変更内容が一致しているか確認してください。
app/ios/Modules/Sources/Auth/ComposeLoginScreen.swift (1)
- 15-21: 変更は適切に行われており、
LoginScreenStateMachine
の初期化にAuthStatusStreamUseCase
が使用されていることを確認してください。また、この変更により、LoginScreenStateMachine
内の認証ステータスの観察と処理に関連するロジックが影響を受ける可能性があります。app/ios/Modules/Sources/Auth/LoginStateMachine.swift (5)
18-24: The replacement of
observeAuthStatusUseCase
withauthStatusStream
is confirmed. Ensure that all dependent code has been updated to use the newauthStatusStream
property and its methods.18-24: The
LoginViewUIState
structure now includes anauthStatus
property of typeLoadingState<AuthStatusAuthenticated>
. This change should be reflected in the summary to provide a complete overview of the changes made to theLoginStateMachine
class.40-46: The
load
function now usesauthStatusStream.execute()
to setcachedAuthStatus
. This change in the handling of authentication status should be included in the summary to accurately describe the behavioral changes in theLoginStateMachine
class.40-46: The error handling within the
load
function has been updated to setself.state.authStatus
to.failed(error)
. This change should be documented in the summary to provide a complete picture of the error handling improvements.40-46: The
applyAuthStatusToState
method now sets theevent
to.onLoginSuccess
and updatesstate.authStatus
based oncachedAuthStatus
. This change should be included in the summary to accurately describe the behavioral changes in theLoginStateMachine
class.app/ios/Modules/Sources/KmpContainer/AuthStatusStreamUseCaseProvider.swift (1)
- 4-27: この
AuthStatusStreamUseCaseProvider
構造体の実装は、セッションリフレッシュ機能を追加する目的に沿っているようです。app/ios/Modules/Sources/Navigation/RootStateMachine.swift (2)
24-30: 変更された依存関係プロパティ名と、
authStatusStream
のメソッド使用方法がPRの目的と一致しています。また、loadTask
ブロック内のロジックが簡素化され、authStatus
をcachedAuthStatus
に直接割り当て、authStatus
を出力するように変更されています。これらの変更は、セッション管理の改善に関連しているため、承認されます。49-57:
loadTask
のロジックが変更され、authStatusStream.execute()
からのauthStatus
をcachedAuthStatus
に直接割り当てています。これは、セッションのリフレッシュ機能を追加するというPRの目的に沿っています。また、エラーが発生した場合には、state.authStatus
を.failed
に設定しています。これにより、エラーハンドリングも適切に行われていることが確認できます。app/ios/Modules/Sources/Settings/ComposeSettingsScreen.swift (1)
- 11-17: 変更はPRの目的と一致しており、
SettingsScreenStateMachine
の初期化におけるobserveAuthStatus
パラメータがauthStatusStream
に置き換えられています。これにより、設定画面内での認証ステータスの監視方法が変更された可能性があります。この変更により、SettingsScreenStateMachine
を初期化する他のコードも更新する必要があるか確認してください。app/shared/src/commonMain/kotlin/club/nito/app/shared/NitoAppStateMachine.kt (1)
- 12-33: コードはPRの目的と一致しており、
ObserveAuthStatusUseCase
からAuthStatusStreamUseCase
への変更、およびFetchSingleResult
からAuthStatus
への変更が適切に反映されています。ただし、AuthStatus.NetworkError
のハンドリングがNitoAppUiState.Loading
を返している点については、TODOコメントがあるため、後で適切な処理を追加する必要があります。app/shared/src/commonMain/kotlin/club/nito/app/shared/di/AppModule.kt (1)
- 6-11: 変更はPRの目的と提供された要約と一致しており、
NitoAppStateMachine
のインスタンス化においてobserveAuthStatus
からauthStatusStream
へのパラメータの変更が適切に行われています。依存するコードが新しいシグネチャに合わせて更新される必要があります。core/data/src/commonMain/kotlin/club/nito/core/data/AuthRepository.kt (1)
- 11-14: 変更された
authStatus
プロパティの型が、PRの目的と要約に記載されている内容と一致しています。この変更により、依存するコードが新しいシグネチャに適合するように更新される必要があります。core/data/src/commonMain/kotlin/club/nito/core/data/DefaultAuthRepository.kt (1)
- 11-11: 変更された
authStatus
プロパティの型は、セッションリフレッシュ機能の追加というプルリクエストの目的に合致しています。この変更により、認証ステータスの扱いが直接的になり、結果型でラップする必要がなくなりました。依存するコードが新しいシグネチャに適合するように更新される必要があります。core/domain/src/commonMain/kotlin/club/nito/core/domain/AuthStatusStreamUseCase.kt (1)
- 1-18: この変更は、認証状態のストリーミングを行う新しいメカニズムを導入しており、PRの目的と一致しています。
AuthStatusStreamUseCase
とAuthStatusStreamExecutor
の実装は、コードベースの効率と保守性を向上させる可能性があります。依存する他のコンポーネントが新しいシグネチャと動作に適合するように更新される必要があります。core/domain/src/commonMain/kotlin/club/nito/core/domain/di/UseCaseModule.kt (4)
22-26: 変更はPRの目的に沿っており、
AuthStatusStreamUseCase
の導入によりセッション管理が強化されています。1-7: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [1-26]
コードの構文やロジックに明らかな問題はありません。
3-4: インポート文の追加は、要約に記載されている内容と一致しています。
23-23:
useCaseModule
のバインディングの変更は、要約に記載されている内容と一致しています。core/model/src/commonMain/kotlin/club/nito/core/model/AuthState.kt (1)
- 3-11: 変更はPRの目的と提供された要約と一致しており、
AuthStatus
インターフェースにLoading
とNetworkError
の状態が追加されたことは、依存するコンポーネントに影響を与える重要な変更です。これらの新しい状態を処理するために、関連する関数やコンポーネントの更新が必要になる可能性があります。core/network/src/commonMain/kotlin/club/nito/core/network/NetworkService.kt (1)
- 12-38: The
NetworkService
class and its functionality align with the PR objective of enhancing session management and abstracting network operations. The implementation of theinvoke
function and thetoNitoError
extension function are correctly handling authentication and exception mapping, respectively.core/network/src/commonMain/kotlin/club/nito/core/network/auth/AuthRemoteDataSource.kt (1)
- 7-14: 変更点はPRの目的と要約に沿っており、
AuthRemoteDataSource
インターフェースのauthStatus
プロパティの戻り値の型がFlow<FetchSingleResult<AuthStatus>>
からFlow<AuthStatus>
に変更され、新しいメソッドauthIfNeeded
が追加されています。これらの変更は、認証状態の取り扱いを直接的に行うようにするためのもので、問題は見受けられません。core/network/src/commonMain/kotlin/club/nito/core/network/auth/FakeAuthRemoteDataSource.kt (3)
15-29: 変更された
_authStatus
とauthStatus
の型は、PRの目的と提供された要約と一致しています。これにより、認証ステータスのストリーミングが直接行われるようになりました。61-67:
login
およびlogout
関数がAuthStatus
を直接発行するように変更されたことは、PRの目的と要約に記載されている内容と一致しています。75-77: 新しく追加された
authIfNeeded
関数は現在何も操作を行わないプレースホルダーとして存在しています。将来的な実装が予定されている場合は、その旨をコメントに記載すると良いでしょう。core/network/src/commonMain/kotlin/club/nito/core/network/auth/SupabaseAuthRemoteDataSource.kt (2)
3-37: 変更された
authStatus
プロパティの戻り値の型は、PRの目的と要約に一致しています。これにより、認証ステータスの直接的なストリームが可能になり、コードの効率と保守性が向上する可能性があります。51-57: 新しく追加された
authIfNeeded
メソッドは、セッションの有効期限が切れている場合にセッションを更新する機能を提供します。これはセッションリフレッシュ機能を追加するというPRの目的に沿っています。core/network/src/commonMain/kotlin/club/nito/core/network/di/RemoteDataSourceModule.kt (3)
3-3: コードに
NetworkService
のインポートが追加されました。これはセッション管理の強化に関連しているため、変更は適切です。22-24:
NetworkService
のインスタンスがremoteDataSourceModule
に追加されています。これは新しいネットワーク操作に必要ですので、変更は適切です。27-42:
SupabaseScheduleRemoteDataSource
、SupabaseParticipantRemoteDataSource
、およびSupabaseUserRemoteDataSource
の初期化にnetworkService
パラメータが追加されています。これはPRの目的と要約に一致しており、変更は適切です。core/network/src/commonMain/kotlin/club/nito/core/network/participation/SupabaseParticipantRemoteDataSource.kt (1)
- 12-54: コードレビューを行いましたが、提供されたコード断片には問題は見つかりませんでした。ただし、プルリクエストの目的として「セッションリフレッシュ機能の追加」とされているにも関わらず、このコード断片にはそのような機能に関する記述が含まれていません。この点については、他のコード断片やコミットで対応されている可能性がありますので、全体のコンテキストを確認することをお勧めします。
core/network/src/commonMain/kotlin/club/nito/core/network/schedule/SupabaseScheduleRemoteDataSource.kt (3)
44-48:
getSchedule
関数の戻り値の型が変更されたとの記述がありますが、hunkにはそのような変更は見受けられません。この点について確認が必要です。18-21:
SupabaseScheduleRemoteDataSource
クラスが新たにNetworkService
インスタンスを要求するようになりました。これは、セッションのリフレッシュ機能を追加するというPRの目的と一致しています。26-42:
getScheduleList
関数がNetworkService
を使用するようにリファクタリングされました。これは、セッションのリフレッシュ機能を追加するというPRの目的と一致しています。core/network/src/commonMain/kotlin/club/nito/core/network/user/SupabaseUserRemoteDataSource.kt (2)
- 1-18: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [15-25]
コードレビューを行いましたが、
getProfile
メソッドの変更点に問題は見つかりませんでした。NetworkService
を使用してネットワーク操作を行い、ドメインモデルに適切にマッピングしています。
- 24-31: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [27-34]
getProfiles
メソッドもレビューしましたが、こちらもNetworkService
を使用しており、リストを適切にデコードしてドメインモデルにマッピングしているため、問題はありません。feature/auth/src/commonMain/kotlin/club/nito/feature/auth/LoginScreenStateMachine.kt (4)
3-3: インポートの変更は、PRの目的と要約に一致しています。
AuthStatusStreamUseCase
の使用に更新されていることを確認してください。29-32:
authStatus
変数の初期化がAuthStatus.Loading
に変更されていることを確認してください。これは、セッションのリフレッシュ機能を追加するというPRの目的に沿っています。52-55:
authStatus
の条件ロジックがAuthStatus.Authenticated
に変更されていることを確認してください。これは、認証ステータスのストリーミングを新しい方法で扱うための変更です。18-35: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [1-57]
ファイル全体を確認しましたが、PRの目的に関連する他の変更は見つかりませんでした。
feature/auth/src/commonMain/kotlin/club/nito/feature/auth/di/AuthFeatureModule.kt (1)
- 9-13: 変更は、
LoginScreenStateMachine
のファクトリ初期化において、パラメータ名observeAuthStatusUseCase
をauthStatusStream
に変更することで、認証ステータスの観察または取得に関連するロジックの変更を反映しています。この変更は、PRの目的と提供された要約と一致しています。feature/settings/src/commonMain/kotlin/club/nito/feature/settings/SettingsScreenStateMachine.kt (3)
- 20-36: > Note: This review was outside the patches, so it was mapped to the patch with the greatest overlap. Original lines [3-34]
コードレビューにおいて、
SettingsScreenStateMachine
クラスのコンストラクタがAuthStatusStreamUseCase
を受け取るように変更され、authStatus
の初期値がAuthStatus.Loading
に設定されていることを確認しました。これはプルリクエストの目的であるセッションリフレッシュ機能の追加に関連しており、問題は見受けられません。
50-55:
uiState
のビルダーがAuthStatus.Loading
を使用してisSignOuting
状態を設定するように変更されていることを確認しました。これは、FetchSingleResult.Loading
からAuthStatus.Loading
への変更を反映しており、プルリクエストの目的に沿っています。61-67:
init
ブロック内で、authStatus
がAuthStatus.NotAuthenticated
の場合にSignedOut
イベントを発行するように変更されていることを確認しました。これは、イベント発行条件がAuthStatus.NotAuthenticated
のみをチェックするように単純化されたことを反映しており、プルリクエストの目的に適合しています。feature/settings/src/commonMain/kotlin/club/nito/feature/settings/di/SettingsFeatureModule.kt (1)
- 7-13: この変更は、
SettingsScreenStateMachine
のコンストラクター呼び出しでobserveAuthStatus
からauthStatusStream
へのパラメータ名の変更を反映しています。これは、セッション管理を改善し、古いユースケースを新しいストリーミングアプローチに置き換えるためのより大きなリファクタリングの一部であることをPRの目的と変更の概要が示しています。この変更がコードベース全体で一貫していることを確認してください。
private static var observeAuthStatusUseCase: AuthStatusStreamUseCase { | ||
Container.shared.get(type: AuthStatusStreamUseCase.self) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
プロパティの名前が誤解を招く可能性があります。observeAuthStatusUseCase
はAuthStatusStreamUseCase
のインスタンスを参照しているため、名前をauthStatusStreamUseCase
に変更することを検討してください。
- private static var observeAuthStatusUseCase: AuthStatusStreamUseCase {
+ private static var authStatusStreamUseCase: AuthStatusStreamUseCase {
Committable suggestion
❗ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
private static var observeAuthStatusUseCase: AuthStatusStreamUseCase { | |
Container.shared.get(type: AuthStatusStreamUseCase.self) | |
private static var authStatusStreamUseCase: AuthStatusStreamUseCase { | |
Container.shared.get(type: AuthStatusStreamUseCase.self) |
Issue
概要
セッションのリフレッシュ処理を追加します。
レビュー観点
特になし
レビューレベル
レビュー優先度
参考リンク
スクリーンショット
Summary by CodeRabbit
新機能
バグ修正
ドキュメント
リファクタ
AuthStatusStreamUseCase
に変更しました。スタイル
テスト
チョア
リバート