Skip to content

Commit

Permalink
[CHORE] #87 : ActivityComponent에 주입되는 모듈 분리 및 로직 분리
Browse files Browse the repository at this point in the history
  • Loading branch information
jeongjaino committed Jan 11, 2024
1 parent a8072cb commit 962d4c6
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.wap.wapp.core.data.repository.auth

interface SignInRepository {
suspend fun hasPendingResult(): Boolean

suspend fun signIn(email: String): Result<String>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.wap.wapp.core.data.repository.auth

import com.wap.wapp.core.network.source.auth.SignInDataSource
import javax.inject.Inject

class SignInRepositoryImpl @Inject constructor(
private val signInDataSource: SignInDataSource,
) : SignInRepository {
override suspend fun hasPendingResult(): Boolean = signInDataSource.hasPendingResult()

override suspend fun signIn(email: String): Result<String> = signInDataSource.signIn(email)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.wap.wapp.core.network.di

import com.wap.wapp.core.network.source.auth.AuthDataSource
import com.wap.wapp.core.network.source.auth.AuthDataSourceImpl
import com.wap.wapp.core.network.source.event.EventDataSource
import com.wap.wapp.core.network.source.event.EventDataSourceImpl
import com.wap.wapp.core.network.source.management.ManagementDataSource
Expand All @@ -20,6 +22,12 @@ import javax.inject.Singleton
@InstallIn(SingletonComponent::class)
abstract class NetworkModule {

@Binds
@Singleton
abstract fun bindsAuthDataSource(
authDataSourceImpl: AuthDataSourceImpl,
): AuthDataSource

@Binds
@Singleton
abstract fun bindsUserDataSource(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.wap.wapp.core.network.di

import com.wap.wapp.core.network.source.auth.AuthDataSource
import com.wap.wapp.core.network.source.auth.AuthDataSourceImpl
import com.wap.wapp.core.network.source.auth.SignInDataSource
import com.wap.wapp.core.network.source.auth.SignInDataSourceImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand All @@ -10,10 +10,10 @@ import dagger.hilt.android.scopes.ActivityScoped

@Module
@InstallIn(ActivityComponent::class)
abstract class AuthDataSourceModule {
abstract class SignInDataSourceModule {
@Binds
@ActivityScoped
abstract fun bindsAuthDataSource(
authDataSourceImpl: AuthDataSourceImpl,
): AuthDataSource
abstract fun bindsSignInDataSource(
signInDataSourceImpl: SignInDataSourceImpl,
): SignInDataSource
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.wap.wapp.core.network.source.auth

interface SignInDataSource {
suspend fun hasPendingResult(): Boolean

suspend fun signIn(email: String): Result<String>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.wap.wapp.core.network.source.auth

import android.app.Activity
import android.content.Context
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.OAuthProvider
import com.wap.wapp.core.network.utils.await
import dagger.hilt.android.qualifiers.ActivityContext
import javax.inject.Inject

class SignInDataSourceImpl @Inject constructor(
private val firebaseAuth: FirebaseAuth,
@ActivityContext private val context: Context,
) : SignInDataSource {
override suspend fun hasPendingResult(): Boolean {
return firebaseAuth.pendingAuthResult != null
}

override suspend fun signIn(email: String): Result<String> {
return runCatching {
val provider = OAuthProvider.newBuilder("github.com")
provider.addCustomParameter("login", email)

val activityContext = context as Activity

val result = firebaseAuth.startActivityForSignInWithProvider(
activityContext,
provider.build(),
).await()

val user = checkNotNull(result.user)
user.uid
}
}
}

0 comments on commit 962d4c6

Please sign in to comment.