From 2b4fe9a9a99f5445d779e89fd4deb2d8e4887fc6 Mon Sep 17 00:00:00 2001 From: kangyein9892 Date: Fri, 15 Nov 2024 00:12:44 +0900 Subject: [PATCH] =?UTF-8?q?feat/#8:=20UserDatasource,=20UserRepository=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/build.gradle.kts | 1 + .../and/data/datasource/UserDataSource.kt | 30 +++++++++++++++++++ .../org/sopt/and/data/di/DataSourceModule.kt | 21 +++++++++++++ .../org/sopt/and/data/di/RepositoryModule.kt | 16 ++++++++++ .../and/data/repository/UserRepositoryImpl.kt | 23 ++++++++++++++ .../main/java/org/sopt/and/domain/MyClass.kt | 4 --- .../and/domain/repository/UserRepository.kt | 7 +++++ 7 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 data/src/main/java/org/sopt/and/data/datasource/UserDataSource.kt create mode 100644 data/src/main/java/org/sopt/and/data/di/DataSourceModule.kt create mode 100644 data/src/main/java/org/sopt/and/data/di/RepositoryModule.kt create mode 100644 data/src/main/java/org/sopt/and/data/repository/UserRepositoryImpl.kt delete mode 100644 domain/src/main/java/org/sopt/and/domain/MyClass.kt create mode 100644 domain/src/main/java/org/sopt/and/domain/repository/UserRepository.kt diff --git a/data/build.gradle.kts b/data/build.gradle.kts index b458b79..5c96ca2 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -42,6 +42,7 @@ dependencies { implementation(libs.material) implementation(libs.hilt) + implementation(project(":domain")) ksp(libs.hilt.compiler) implementation(libs.kotlinx.serialization.json) diff --git a/data/src/main/java/org/sopt/and/data/datasource/UserDataSource.kt b/data/src/main/java/org/sopt/and/data/datasource/UserDataSource.kt new file mode 100644 index 0000000..accefce --- /dev/null +++ b/data/src/main/java/org/sopt/and/data/datasource/UserDataSource.kt @@ -0,0 +1,30 @@ +package org.sopt.and.data.datasource + +import android.content.SharedPreferences +import jakarta.inject.Inject +import org.sopt.and.data.di.UserSharedPreference + +internal class UserDataSource @Inject constructor( + @UserSharedPreference private val userSharedPreference: SharedPreferences +) { + + var id: String + get() = userSharedPreference.getString(ID, "").toString() + set(value) = userSharedPreference.edit().putString(ID, value).apply() + + var password: String + get() = userSharedPreference.getString(PASSWORD, "").toString() + set(value) = userSharedPreference.edit().putString(PASSWORD, value).apply() + + fun clearIdPassword() { + id = DEFAULT_STRING + password = DEFAULT_STRING + userSharedPreference.edit().clear().apply() + } + + companion object { + private const val ID = "id" + private const val PASSWORD = "password" + private const val DEFAULT_STRING = "" + } +} \ No newline at end of file diff --git a/data/src/main/java/org/sopt/and/data/di/DataSourceModule.kt b/data/src/main/java/org/sopt/and/data/di/DataSourceModule.kt new file mode 100644 index 0000000..0e50f22 --- /dev/null +++ b/data/src/main/java/org/sopt/and/data/di/DataSourceModule.kt @@ -0,0 +1,21 @@ +package org.sopt.and.data.di + +import android.content.SharedPreferences +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import org.sopt.and.data.datasource.UserDataSource +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal object DataSourceModule { + + @Singleton + @Provides + fun provideUserDataSource( + @UserSharedPreference userSharedPreference: SharedPreferences + ): UserDataSource = UserDataSource(userSharedPreference) + +} \ No newline at end of file diff --git a/data/src/main/java/org/sopt/and/data/di/RepositoryModule.kt b/data/src/main/java/org/sopt/and/data/di/RepositoryModule.kt new file mode 100644 index 0000000..cfaa130 --- /dev/null +++ b/data/src/main/java/org/sopt/and/data/di/RepositoryModule.kt @@ -0,0 +1,16 @@ +package org.sopt.and.data.di + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import org.sopt.and.data.repository.UserRepositoryImpl +import org.sopt.and.domain.repository.UserRepository + +@Module +@InstallIn(SingletonComponent::class) +internal interface RepositoryModule { + + @Binds + fun bindUserRepository(userRepositoryImpl: UserRepositoryImpl): UserRepository +} \ No newline at end of file diff --git a/data/src/main/java/org/sopt/and/data/repository/UserRepositoryImpl.kt b/data/src/main/java/org/sopt/and/data/repository/UserRepositoryImpl.kt new file mode 100644 index 0000000..5c49eec --- /dev/null +++ b/data/src/main/java/org/sopt/and/data/repository/UserRepositoryImpl.kt @@ -0,0 +1,23 @@ +package org.sopt.and.data.repository + +import jakarta.inject.Inject +import org.sopt.and.data.datasource.UserDataSource +import org.sopt.and.domain.repository.UserRepository + +internal class UserRepositoryImpl @Inject constructor( + private val userDataSource: UserDataSource +): UserRepository { + override fun saveUser(id: String, password: String) { + userDataSource.id = id + userDataSource.password = password + } + + override fun clearIdPassword() { + userDataSource.clearIdPassword() + } + + override fun getId(): String { + return userDataSource.id + } + +} \ No newline at end of file diff --git a/domain/src/main/java/org/sopt/and/domain/MyClass.kt b/domain/src/main/java/org/sopt/and/domain/MyClass.kt deleted file mode 100644 index e546607..0000000 --- a/domain/src/main/java/org/sopt/and/domain/MyClass.kt +++ /dev/null @@ -1,4 +0,0 @@ -package org.sopt.and.domain - -class MyClass { -} \ No newline at end of file diff --git a/domain/src/main/java/org/sopt/and/domain/repository/UserRepository.kt b/domain/src/main/java/org/sopt/and/domain/repository/UserRepository.kt new file mode 100644 index 0000000..848d2d8 --- /dev/null +++ b/domain/src/main/java/org/sopt/and/domain/repository/UserRepository.kt @@ -0,0 +1,7 @@ +package org.sopt.and.domain.repository + +interface UserRepository { + fun saveUser(id: String, password: String) + fun clearIdPassword() + fun getId(): String +} \ No newline at end of file