diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 675dd431a..56c65048c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -214,6 +214,9 @@ dependencies { //data store (with flow) implementation(libs.androidx.datastore.preferences) + // EncryptedSharedPreferences + implementation(libs.androidx.security.crypto) + // naver maps implementation (libs.map.sdk) diff --git a/app/src/main/java/com/eatssu/android/App.kt b/app/src/main/java/com/eatssu/android/App.kt index 9e81af294..118d63d22 100644 --- a/app/src/main/java/com/eatssu/android/App.kt +++ b/app/src/main/java/com/eatssu/android/App.kt @@ -1,7 +1,6 @@ package com.eatssu.android import android.app.Application -import android.content.Context import androidx.hilt.work.HiltWorkerFactory import androidx.work.Configuration import com.eatssu.android.domain.model.TokenState @@ -23,9 +22,6 @@ import javax.inject.Inject /** App: 앱이 살아있는 동안 공통 리소스 관리를 위한 클래스 */ @HiltAndroidApp class App : Application(), Configuration.Provider { - companion object{ - lateinit var appContext: Context //todo 이거 빼기 - } /** 앱 전체에서 사용할 수 있는 CoroutineScope(독립적인 공간을 만들어 안정성 높임) * 자식 CoroutineScope가 취소되더라도 부모 CoroutineScope는 취소되지 않음 @@ -39,7 +35,6 @@ class App : Application(), Configuration.Provider { super.onCreate() FirebaseApp.initializeApp(this) - appContext = this KakaoSdk.init(this,BuildConfig.KAKAO_NATIVE_APP_KEY) if (BuildConfig.DEBUG) { diff --git a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt b/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt deleted file mode 100644 index 0a437e14f..000000000 --- a/app/src/main/java/com/eatssu/android/data/MySharedPreferences.kt +++ /dev/null @@ -1,149 +0,0 @@ -package com.eatssu.android.data - - -import android.content.Context -import android.content.SharedPreferences -import com.eatssu.android.domain.model.College -import com.eatssu.android.domain.model.Department - -//자동 로그인을 위한 SharedPreferences - -// TODO MySharedPreferences 자체에서 context를 주입받 받아야 하는데, 현재는 각 UseCase에서 context를 주입받아 사용하고 있음 -object MySharedPreferences { - private val MY_ACCOUNT: String = "account" - - fun setUserEmail(context: Context, input: String) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putString("MY_EMAIL", input) - editor.commit() - } - - fun getUserEmail(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("MY_EMAIL", "").toString() - } - - fun setUserPlatform(context: Context, input: String) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putString("MY_PLATFORM", input) - editor.commit() - } - - fun getUserPlatform(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("MY_PLATFORM", "").toString() - } - - fun setUserName(context: Context, input: String) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putString("MY_NAME", input) - editor.commit() - } - - fun getUserName(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("MY_NAME", "").toString() - } - - fun setUserCollege(context: Context, input: College) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putInt("MY_COLLEGE_ID", input.collegeId) - editor.putString("MY_COLLEGE", input.collegeName) - editor.commit() - } - - fun getUserCollegeId(context: Context): Int { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getInt("MY_COLLEGE_ID", -1) - } - - fun getUserCollegeName(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("MY_COLLEGE", "").toString() - } - - fun setUserDepartment(context: Context, input: Department) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putInt("MY_DEPARTMENT_ID", input.departmentId) - editor.putString("MY_DEPARTMENT", input.departmentName) - editor.commit() - } - - fun getUserDepartmentId(context: Context): Int { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getInt("MY_DEPARTMENT_ID", -1) - } - - fun getUserDepartmentName(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("MY_DEPARTMENT", "").toString() - } - - fun setAccessToken(context: Context, input: String) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putString("ACCESS_TOKEN", input) - editor.commit() - } - - fun getAccessToken(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("ACCESS_TOKEN", "").toString() - } - - fun setRefreshToken(context: Context, input: String) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.putString("REFRESH_TOKEN", input) - editor.apply() - } - - fun getRefreshToken(context: Context): String { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getString("REFRESH_TOKEN", "").toString() - } - - fun clearUser(context: Context) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - editor.clear() - editor.apply() - } - - fun setDailyNotification(context: Context, input: Boolean) { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - val editor: SharedPreferences.Editor = prefs.edit() - - editor.putBoolean("ALARM_ON", input) - editor.apply() - } - - fun getDailyNotification(context: Context): Boolean { - val prefs: SharedPreferences = - context.getSharedPreferences(MY_ACCOUNT, Context.MODE_PRIVATE) - return prefs.getBoolean("ALARM_ON", false) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ChangePwRequest.kt b/app/src/main/java/com/eatssu/android/data/dto/request/ChangePwRequest.kt deleted file mode 100644 index b32d49b5a..000000000 --- a/app/src/main/java/com/eatssu/android/data/dto/request/ChangePwRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.eatssu.android.data.dto.request - -data class ChangePwRequest( - val pwd: String, -) \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/data/local/AccountDataStore.kt b/app/src/main/java/com/eatssu/android/data/local/AccountDataStore.kt new file mode 100644 index 000000000..747c65543 --- /dev/null +++ b/app/src/main/java/com/eatssu/android/data/local/AccountDataStore.kt @@ -0,0 +1,60 @@ +package com.eatssu.android.data.local + +import android.content.Context +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.intPreferencesKey +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore +import com.eatssu.android.domain.model.College +import com.eatssu.android.domain.model.Department +import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import javax.inject.Inject +import javax.inject.Singleton + +private val Context.accountDataStore by preferencesDataStore(name = "account") + +@Singleton +class AccountDataStore @Inject constructor( + @ApplicationContext private val context: Context +) { + companion object Keys { + val EMAIL = stringPreferencesKey("MY_EMAIL") + val NAME = stringPreferencesKey("MY_NAME") + val COLLEGE_ID = intPreferencesKey("MY_COLLEGE_ID") + val COLLEGE_NAME = stringPreferencesKey("MY_COLLEGE") + val DEPT_ID = intPreferencesKey("MY_DEPARTMENT_ID") + val DEPT_NAME = stringPreferencesKey("MY_DEPARTMENT") + } + + val email: Flow = context.accountDataStore.data.map { it[EMAIL].orEmpty() } + suspend fun setEmail(v: String) = context.accountDataStore.edit { it[EMAIL] = v } + + val name: Flow = context.accountDataStore.data.map { it[NAME].orEmpty() } + suspend fun setName(v: String) = context.accountDataStore.edit { it[NAME] = v } + + val college: Flow = context.accountDataStore.data.map { + val id = it[COLLEGE_ID] ?: -1 + val name = it[COLLEGE_NAME] + if (id >= 0 && !name.isNullOrBlank()) College(id, name) else null + } + + suspend fun setCollege(v: College) = context.accountDataStore.edit { + it[COLLEGE_ID] = v.collegeId + it[COLLEGE_NAME] = v.collegeName + } + + val department: Flow = context.accountDataStore.data.map { + val id = it[DEPT_ID] ?: -1 + val name = it[DEPT_NAME] + if (id >= 0 && !name.isNullOrBlank()) Department(id, name) else null + } + + suspend fun setDepartment(v: Department) = context.accountDataStore.edit { + it[DEPT_ID] = v.departmentId + it[DEPT_NAME] = v.departmentName + } + + suspend fun clear() = context.accountDataStore.edit { it.clear() } +} diff --git a/app/src/main/java/com/eatssu/android/data/repository/PreferencesRepository.kt b/app/src/main/java/com/eatssu/android/data/local/SettingDataStore.kt similarity index 58% rename from app/src/main/java/com/eatssu/android/data/repository/PreferencesRepository.kt rename to app/src/main/java/com/eatssu/android/data/local/SettingDataStore.kt index de5b771b0..5d65d520f 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/PreferencesRepository.kt +++ b/app/src/main/java/com/eatssu/android/data/local/SettingDataStore.kt @@ -1,5 +1,4 @@ -// PreferencesRepository.kt -package com.eatssu.android.data.repository +package com.eatssu.android.data.local import android.content.Context import androidx.datastore.core.DataStore @@ -7,25 +6,31 @@ import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.preferencesDataStore +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import javax.inject.Inject -class PreferencesRepository(private val context: Context) { +private val Context.settingDataStore: DataStore by preferencesDataStore(name = "settings") - private val Context.dataStore: DataStore by preferencesDataStore(name = "settings") +class SettingDataStore @Inject constructor( + @ApplicationContext private val context: Context +) { companion object { private val DAILY_NOTIFICATION_KEY = booleanPreferencesKey("daily_notification") } - val dailyNotificationStatus: Flow = context.dataStore.data + val dailyNotificationStatus: Flow = context.settingDataStore.data .map { preferences -> preferences[DAILY_NOTIFICATION_KEY] ?: false // Default value is false } suspend fun setDailyNotificationStatus(status: Boolean) { - context.dataStore.edit { preferences -> + context.settingDataStore.edit { preferences -> preferences[DAILY_NOTIFICATION_KEY] = status } } + + suspend fun clear() = context.settingDataStore.edit { it.clear() } } diff --git a/app/src/main/java/com/eatssu/android/data/local/TokenStore.kt b/app/src/main/java/com/eatssu/android/data/local/TokenStore.kt new file mode 100644 index 000000000..8f485619a --- /dev/null +++ b/app/src/main/java/com/eatssu/android/data/local/TokenStore.kt @@ -0,0 +1,26 @@ +package com.eatssu.android.data.local + +import android.content.SharedPreferences +import androidx.core.content.edit +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class TokenStore @Inject constructor( + private val securePrefs: SharedPreferences +) { + private companion object { + const val KEY_ACCESS = "ACCESS_TOKEN" + const val KEY_REFRESH = "REFRESH_TOKEN" + } + + var accessToken: String + get() = securePrefs.getString(KEY_ACCESS, "").orEmpty() + set(v) = securePrefs.edit { putString(KEY_ACCESS, v) } + + var refreshToken: String + get() = securePrefs.getString(KEY_REFRESH, "").orEmpty() + set(v) = securePrefs.edit { putString(KEY_REFRESH, v) } + + fun clear() = securePrefs.edit { remove(KEY_ACCESS); remove(KEY_REFRESH) } +} diff --git a/app/src/main/java/com/eatssu/android/data/repository/WidgetPreferencesRepository.kt b/app/src/main/java/com/eatssu/android/data/local/WidgetDataStore.kt similarity index 81% rename from app/src/main/java/com/eatssu/android/data/repository/WidgetPreferencesRepository.kt rename to app/src/main/java/com/eatssu/android/data/local/WidgetDataStore.kt index e68578bbc..8d2c5845f 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/WidgetPreferencesRepository.kt +++ b/app/src/main/java/com/eatssu/android/data/local/WidgetDataStore.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.local import android.content.Context import androidx.datastore.core.DataStore @@ -7,16 +7,18 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.preferencesDataStore import com.eatssu.common.enums.Restaurant +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.first import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton +private val Context.widgetPrefsDataStore: DataStore by preferencesDataStore(name = "widget_prefs") + @Singleton -class WidgetPreferencesRepository @Inject constructor( - private val context: Context, +class WidgetDataStore @Inject constructor( + @ApplicationContext private val context: Context, ) { - private val Context.widgetPrefsDataStore: DataStore by preferencesDataStore(name = "widget_prefs") private fun fileKeyRestaurantKey(fileKey: String) = stringPreferencesKey("widget_restaurant_by_fileKey_$fileKey") diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ChangeNicknameRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ChangeNicknameRequest.kt similarity index 54% rename from app/src/main/java/com/eatssu/android/data/dto/request/ChangeNicknameRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/ChangeNicknameRequest.kt index 830849b27..d2c05eb49 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/ChangeNicknameRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ChangeNicknameRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request data class ChangeNicknameRequest( val nickname: String, diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/CheckValidTokenRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/CheckValidTokenRequest.kt similarity index 54% rename from app/src/main/java/com/eatssu/android/data/dto/request/CheckValidTokenRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/CheckValidTokenRequest.kt index 050892516..6ac07d306 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/CheckValidTokenRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/CheckValidTokenRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request data class CheckValidTokenRequest( val token: String, diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/LoginWithKakaoRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt similarity index 79% rename from app/src/main/java/com/eatssu/android/data/dto/request/LoginWithKakaoRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt index 98fd2977c..7ef17d219 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/LoginWithKakaoRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ModifyReviewRequest.kt similarity index 86% rename from app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/ModifyReviewRequest.kt index 4fc581aa9..26cbae6e0 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/ModifyReviewRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ModifyReviewRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ReportRequest.kt similarity index 83% rename from app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/ReportRequest.kt index 30d5ab84b..18d013e74 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/ReportRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/ReportRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/UserDepartmentRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/UserDepartmentRequest.kt similarity index 55% rename from app/src/main/java/com/eatssu/android/data/dto/request/UserDepartmentRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/UserDepartmentRequest.kt index 4e0493576..5fd3ec56c 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/UserDepartmentRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/UserDepartmentRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request data class UserDepartmentRequest( val departmentId: Int diff --git a/app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/WriteReviewRequest.kt similarity index 88% rename from app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/request/WriteReviewRequest.kt index 1042fd6ce..a6dabadae 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/request/WriteReviewRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/WriteReviewRequest.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.request +package com.eatssu.android.data.remote.dto.request import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/BaseResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/BaseResponse.kt similarity index 85% rename from app/src/main/java/com/eatssu/android/data/dto/response/BaseResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/BaseResponse.kt index ab22282e1..dc1dff8f0 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/BaseResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/BaseResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/CollegeResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/CollegeResponse.kt similarity index 87% rename from app/src/main/java/com/eatssu/android/data/dto/response/CollegeResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/CollegeResponse.kt index 065405325..11b2a5a7d 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/CollegeResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/CollegeResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.College import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/DepartmentResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/DepartmentResponse.kt similarity index 88% rename from app/src/main/java/com/eatssu/android/data/dto/response/DepartmentResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/DepartmentResponse.kt index ad0b5582f..108a9bcf8 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/DepartmentResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/DepartmentResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Department import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/ImageResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/ImageResponse.kt similarity index 71% rename from app/src/main/java/com/eatssu/android/data/dto/response/ImageResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/ImageResponse.kt index 062b47b34..c394db0f8 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/ImageResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/ImageResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MealResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MealResponse.kt similarity index 95% rename from app/src/main/java/com/eatssu/android/data/dto/response/MealResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MealResponse.kt index 6b18c17c0..b113fd4b5 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MealResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MealResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Menu import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MealReviewInfoResponse.kt similarity index 96% rename from app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MealReviewInfoResponse.kt index b58c0b51a..919326dcf 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MealReviewInfoResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MealReviewInfoResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.ReviewInfo import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MenuOfMealResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuOfMealResponse.kt similarity index 91% rename from app/src/main/java/com/eatssu/android/data/dto/response/MenuOfMealResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuOfMealResponse.kt index 78d69a721..c9020d5bb 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MenuOfMealResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuOfMealResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.MenuMini import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MenuResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuResponse.kt similarity index 96% rename from app/src/main/java/com/eatssu/android/data/dto/response/MenuResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuResponse.kt index 4c882f709..1b6479c55 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MenuResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Menu import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MenuReviewInfoResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuReviewInfoResponse.kt similarity index 96% rename from app/src/main/java/com/eatssu/android/data/dto/response/MenuReviewInfoResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuReviewInfoResponse.kt index 6489dabad..e4f38dff8 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MenuReviewInfoResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MenuReviewInfoResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.ReviewInfo import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MyNickNameResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MyNickNameResponse.kt similarity index 79% rename from app/src/main/java/com/eatssu/android/data/dto/response/MyNickNameResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MyNickNameResponse.kt index 461369cc5..b4bf93915 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MyNickNameResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MyNickNameResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/MyReviewResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MyReviewResponse.kt similarity index 96% rename from app/src/main/java/com/eatssu/android/data/dto/response/MyReviewResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/MyReviewResponse.kt index 574917526..d2c9c0d79 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/MyReviewResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/MyReviewResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Review import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/PartnershipResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipResponse.kt similarity index 97% rename from app/src/main/java/com/eatssu/android/data/dto/response/PartnershipResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipResponse.kt index 191d91ba9..247681e63 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/PartnershipResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Partnership import com.eatssu.android.domain.model.RestaurantType diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/PartnershipRestaurantResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipRestaurantResponse.kt similarity index 97% rename from app/src/main/java/com/eatssu/android/data/dto/response/PartnershipRestaurantResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipRestaurantResponse.kt index 895e66775..1f021d350 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/PartnershipRestaurantResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/PartnershipRestaurantResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.PartnershipRestaurant import com.eatssu.android.domain.model.RestaurantType diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/ReviewListResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/ReviewListResponse.kt similarity index 96% rename from app/src/main/java/com/eatssu/android/data/dto/response/ReviewListResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/ReviewListResponse.kt index 165b7adb1..ba8139590 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/ReviewListResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/ReviewListResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.Review import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/TokenResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/TokenResponse.kt similarity index 86% rename from app/src/main/java/com/eatssu/android/data/dto/response/TokenResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/TokenResponse.kt index 11f689dc7..e54bcc643 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/TokenResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/TokenResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/eatssu/android/data/dto/response/UserCollegeDepartmentResponse.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/response/UserCollegeDepartmentResponse.kt similarity index 94% rename from app/src/main/java/com/eatssu/android/data/dto/response/UserCollegeDepartmentResponse.kt rename to app/src/main/java/com/eatssu/android/data/remote/dto/response/UserCollegeDepartmentResponse.kt index 84e5936aa..dcb51d5a7 100644 --- a/app/src/main/java/com/eatssu/android/data/dto/response/UserCollegeDepartmentResponse.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/response/UserCollegeDepartmentResponse.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.dto.response +package com.eatssu.android.data.remote.dto.response import com.eatssu.android.domain.model.College import com.eatssu.android.domain.model.Department diff --git a/app/src/main/java/com/eatssu/android/data/repository/FirebaseRemoteConfigRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/FirebaseRemoteConfigRepositoryImpl.kt similarity index 98% rename from app/src/main/java/com/eatssu/android/data/repository/FirebaseRemoteConfigRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/FirebaseRemoteConfigRepositoryImpl.kt index cfe5e24ea..b546c9949 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/FirebaseRemoteConfigRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/FirebaseRemoteConfigRepositoryImpl.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository import com.eatssu.android.R import com.eatssu.android.domain.model.RestaurantInfo diff --git a/app/src/main/java/com/eatssu/android/data/repository/HealthCheckRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt similarity index 77% rename from app/src/main/java/com/eatssu/android/data/repository/HealthCheckRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt index 06ff6c7d5..7c7957c47 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/HealthCheckRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/HealthCheckRepositoryImpl.kt @@ -1,7 +1,7 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository import com.eatssu.android.data.model.isSuccess -import com.eatssu.android.data.service.HealthCheckService +import com.eatssu.android.data.remote.service.HealthCheckService import com.eatssu.android.domain.repository.HealthCheckRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/data/repository/MealRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/MealRepositoryImpl.kt similarity index 78% rename from app/src/main/java/com/eatssu/android/data/repository/MealRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/MealRepositoryImpl.kt index a514316f9..3ad0352cf 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/MealRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/MealRepositoryImpl.kt @@ -1,11 +1,11 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.response.MenusInformation -import com.eatssu.android.data.dto.response.mapTodayMenuResponseToMenu -import com.eatssu.android.data.dto.response.toDomain import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orEmptyList -import com.eatssu.android.data.service.MealService +import com.eatssu.android.data.remote.dto.response.MenusInformation +import com.eatssu.android.data.remote.dto.response.mapTodayMenuResponseToMenu +import com.eatssu.android.data.remote.dto.response.toDomain +import com.eatssu.android.data.remote.service.MealService import com.eatssu.android.domain.model.Menu import com.eatssu.android.domain.repository.MealRepository import com.eatssu.common.enums.Restaurant diff --git a/app/src/main/java/com/eatssu/android/data/repository/MenuRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/MenuRepositoryImpl.kt similarity index 76% rename from app/src/main/java/com/eatssu/android/data/repository/MenuRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/MenuRepositoryImpl.kt index 6c9072436..0f87682f4 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/MenuRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/MenuRepositoryImpl.kt @@ -1,9 +1,9 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.response.mapFixedMenuResponseToMenu import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orEmptyList -import com.eatssu.android.data.service.MenuService +import com.eatssu.android.data.remote.dto.response.mapFixedMenuResponseToMenu +import com.eatssu.android.data.remote.service.MenuService import com.eatssu.android.domain.model.Menu import com.eatssu.android.domain.repository.MenuRepository import com.eatssu.common.enums.Restaurant diff --git a/app/src/main/java/com/eatssu/android/data/repository/OauthRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt similarity index 71% rename from app/src/main/java/com/eatssu/android/data/repository/OauthRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt index e6bd3c6e5..87ff4f21e 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/OauthRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt @@ -1,12 +1,12 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.request.CheckValidTokenRequest -import com.eatssu.android.data.dto.request.LoginWithKakaoRequest -import com.eatssu.android.data.dto.response.toDomain import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orElse import com.eatssu.android.data.model.orNull -import com.eatssu.android.data.service.OauthService +import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest +import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest +import com.eatssu.android.data.remote.dto.response.toDomain +import com.eatssu.android.data.remote.service.OauthService import com.eatssu.android.domain.model.Token import com.eatssu.android.domain.repository.OauthRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/data/repository/PartnershipRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/PartnershipRepositoryImpl.kt similarity index 84% rename from app/src/main/java/com/eatssu/android/data/repository/PartnershipRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/PartnershipRepositoryImpl.kt index 6411e4717..994db912a 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/PartnershipRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/PartnershipRepositoryImpl.kt @@ -1,11 +1,11 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.response.toDomain import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orEmptyList import com.eatssu.android.data.model.orNull -import com.eatssu.android.data.service.PartnershipService -import com.eatssu.android.data.service.UserService +import com.eatssu.android.data.remote.dto.response.toDomain +import com.eatssu.android.data.remote.service.PartnershipService +import com.eatssu.android.data.remote.service.UserService import com.eatssu.android.domain.model.Partnership import com.eatssu.android.domain.model.PartnershipRestaurant import com.eatssu.android.domain.repository.PartnershipRepository diff --git a/app/src/main/java/com/eatssu/android/data/repository/ReportRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/ReportRepositoryImpl.kt similarity index 68% rename from app/src/main/java/com/eatssu/android/data/repository/ReportRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/ReportRepositoryImpl.kt index 8db91263f..9b15b6860 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/ReportRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/ReportRepositoryImpl.kt @@ -1,8 +1,8 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.request.ReportRequest import com.eatssu.android.data.model.isSuccess -import com.eatssu.android.data.service.ReportService +import com.eatssu.android.data.remote.dto.request.ReportRequest +import com.eatssu.android.data.remote.service.ReportService import com.eatssu.android.domain.repository.ReportRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/data/repository/ReviewRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImpl.kt similarity index 78% rename from app/src/main/java/com/eatssu/android/data/repository/ReviewRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImpl.kt index 22bfe5bd5..64c0282a7 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/ReviewRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImpl.kt @@ -1,16 +1,16 @@ -package com.eatssu.android.data.repository - -import com.eatssu.android.data.dto.request.ModifyReviewRequest -import com.eatssu.android.data.dto.request.WriteReviewRequest -import com.eatssu.android.data.dto.response.GetMealReviewInfoResponse -import com.eatssu.android.data.dto.response.GetMenuReviewInfoResponse -import com.eatssu.android.data.dto.response.ImageResponse -import com.eatssu.android.data.dto.response.toReviewList +package com.eatssu.android.data.remote.repository + import com.eatssu.android.data.model.isSuccess import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orEmptyList import com.eatssu.android.data.model.orNull -import com.eatssu.android.data.service.ReviewService +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.response.GetMealReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.GetMenuReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.ImageResponse +import com.eatssu.android.data.remote.dto.response.toReviewList +import com.eatssu.android.data.remote.service.ReviewService import com.eatssu.android.domain.model.Review import com.eatssu.android.domain.repository.ReviewRepository import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/eatssu/android/data/repository/UserRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/UserRepositoryImpl.kt similarity index 84% rename from app/src/main/java/com/eatssu/android/data/repository/UserRepositoryImpl.kt rename to app/src/main/java/com/eatssu/android/data/remote/repository/UserRepositoryImpl.kt index cc94cd65b..c2017bb41 100644 --- a/app/src/main/java/com/eatssu/android/data/repository/UserRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/UserRepositoryImpl.kt @@ -1,25 +1,25 @@ -package com.eatssu.android.data.repository +package com.eatssu.android.data.remote.repository -import com.eatssu.android.data.dto.request.ChangeNicknameRequest -import com.eatssu.android.data.dto.request.UserDepartmentRequest -import com.eatssu.android.data.dto.response.toDomain -import com.eatssu.android.data.dto.response.toReviewList import com.eatssu.android.data.model.ApiResult import com.eatssu.android.data.model.isSuccess import com.eatssu.android.data.model.map import com.eatssu.android.data.model.orElse import com.eatssu.android.data.model.orEmptyList import com.eatssu.android.data.model.orNull -import com.eatssu.android.data.service.UserService +import com.eatssu.android.data.remote.dto.request.ChangeNicknameRequest +import com.eatssu.android.data.remote.dto.request.UserDepartmentRequest +import com.eatssu.android.data.remote.dto.response.toDomain +import com.eatssu.android.data.remote.dto.response.toReviewList +import com.eatssu.android.data.remote.service.UserService import com.eatssu.android.domain.model.College import com.eatssu.android.domain.model.Department import com.eatssu.android.domain.model.Review import com.eatssu.android.domain.repository.UserRepository -import timber.log.Timber import javax.inject.Inject -class UserRepositoryImpl @Inject constructor(private val userService: UserService) : - UserRepository { +class UserRepositoryImpl @Inject constructor( + private val userService: UserService +) : UserRepository { override suspend fun updateUserName(body: ChangeNicknameRequest): Result = when (val result = userService.changeNickname(body)) { diff --git a/app/src/main/java/com/eatssu/android/data/service/HealthCheckService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt similarity index 92% rename from app/src/main/java/com/eatssu/android/data/service/HealthCheckService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt index d1599dec2..6f484c661 100644 --- a/app/src/main/java/com/eatssu/android/data/service/HealthCheckService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/HealthCheckService.kt @@ -1,4 +1,4 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service import com.eatssu.android.data.model.ApiResult import retrofit2.http.GET diff --git a/app/src/main/java/com/eatssu/android/data/service/MealService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/MealService.kt similarity index 62% rename from app/src/main/java/com/eatssu/android/data/service/MealService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/MealService.kt index 1e3f33be0..d43708ade 100644 --- a/app/src/main/java/com/eatssu/android/data/service/MealService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/MealService.kt @@ -1,13 +1,16 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.response.GetMealResponse -import com.eatssu.android.data.dto.response.MenuOfMealResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.GetMealResponse +import com.eatssu.android.data.remote.dto.response.MenuOfMealResponse import retrofit2.http.GET import retrofit2.http.Path import retrofit2.http.Query interface MealService { + /** + * 변동메뉴 식단 리스트 조회 By 식당 + */ @GET("meals") suspend fun getTodayMeal( @Query("date") date: String, @@ -15,6 +18,9 @@ interface MealService { @Query("time") time: String, ): ApiResult> + /** + * 메뉴 정보 리스트 조회 + */ @GET("meals/{mealId}/menus-info") suspend fun getMenuInfoByMealId( @Path("mealId") mealId: Long, diff --git a/app/src/main/java/com/eatssu/android/data/service/MenuService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/MenuService.kt similarity index 72% rename from app/src/main/java/com/eatssu/android/data/service/MenuService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/MenuService.kt index 8c44ba4b6..4a24d73cc 100644 --- a/app/src/main/java/com/eatssu/android/data/service/MenuService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/MenuService.kt @@ -1,7 +1,7 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.response.GetFixedMenuResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.GetFixedMenuResponse import retrofit2.http.GET import retrofit2.http.Query diff --git a/app/src/main/java/com/eatssu/android/data/service/OauthService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt similarity index 74% rename from app/src/main/java/com/eatssu/android/data/service/OauthService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt index ab3f8c1f6..df68de88f 100644 --- a/app/src/main/java/com/eatssu/android/data/service/OauthService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt @@ -1,9 +1,9 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.request.CheckValidTokenRequest -import com.eatssu.android.data.dto.request.LoginWithKakaoRequest -import com.eatssu.android.data.dto.response.TokenResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest +import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest +import com.eatssu.android.data.remote.dto.response.TokenResponse import retrofit2.http.Body import retrofit2.http.Header import retrofit2.http.POST diff --git a/app/src/main/java/com/eatssu/android/data/service/PartnershipService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/PartnershipService.kt similarity index 74% rename from app/src/main/java/com/eatssu/android/data/service/PartnershipService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/PartnershipService.kt index c25101d32..5fafb25f1 100644 --- a/app/src/main/java/com/eatssu/android/data/service/PartnershipService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/PartnershipService.kt @@ -1,8 +1,8 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.response.PartnershipResponse -import com.eatssu.android.data.dto.response.PartnershipRestaurantResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.PartnershipResponse +import com.eatssu.android.data.remote.dto.response.PartnershipRestaurantResponse import retrofit2.http.GET interface PartnershipService{ diff --git a/app/src/main/java/com/eatssu/android/data/service/ReportService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/ReportService.kt similarity index 70% rename from app/src/main/java/com/eatssu/android/data/service/ReportService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/ReportService.kt index 6f9c4fc0e..8c265f85a 100644 --- a/app/src/main/java/com/eatssu/android/data/service/ReportService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/ReportService.kt @@ -1,6 +1,6 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.request.ReportRequest +import com.eatssu.android.data.remote.dto.request.ReportRequest import com.eatssu.android.data.model.ApiResult import retrofit2.http.Body import retrofit2.http.POST diff --git a/app/src/main/java/com/eatssu/android/data/service/ReviewService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/ReviewService.kt similarity index 80% rename from app/src/main/java/com/eatssu/android/data/service/ReviewService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/ReviewService.kt index 352b1be55..2950a7657 100644 --- a/app/src/main/java/com/eatssu/android/data/service/ReviewService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/ReviewService.kt @@ -1,13 +1,13 @@ -package com.eatssu.android.data.service +package com.eatssu.android.data.remote.service -import com.eatssu.android.data.dto.request.ModifyReviewRequest -import com.eatssu.android.data.dto.request.WriteReviewRequest -import com.eatssu.android.data.dto.response.GetMealReviewInfoResponse -import com.eatssu.android.data.dto.response.GetMenuReviewInfoResponse -import com.eatssu.android.data.dto.response.GetReviewListResponse -import com.eatssu.android.data.dto.response.ImageResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.response.GetMealReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.GetMenuReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.GetReviewListResponse +import com.eatssu.android.data.remote.dto.response.ImageResponse import okhttp3.MultipartBody import retrofit2.http.Body import retrofit2.http.DELETE diff --git a/app/src/main/java/com/eatssu/android/data/service/UserService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/UserService.kt similarity index 73% rename from app/src/main/java/com/eatssu/android/data/service/UserService.kt rename to app/src/main/java/com/eatssu/android/data/remote/service/UserService.kt index e61baee79..f68516aa8 100644 --- a/app/src/main/java/com/eatssu/android/data/service/UserService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/UserService.kt @@ -1,14 +1,14 @@ -package com.eatssu.android.data.service - -import com.eatssu.android.data.dto.request.ChangeNicknameRequest -import com.eatssu.android.data.dto.request.UserDepartmentRequest -import com.eatssu.android.data.dto.response.CollegeResponse -import com.eatssu.android.data.dto.response.DepartmentResponse -import com.eatssu.android.data.dto.response.MyNickNameResponse -import com.eatssu.android.data.dto.response.MyReviewResponse -import com.eatssu.android.data.dto.response.PartnershipResponse -import com.eatssu.android.data.dto.response.UserCollegeDepartmentResponse +package com.eatssu.android.data.remote.service + import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.request.ChangeNicknameRequest +import com.eatssu.android.data.remote.dto.request.UserDepartmentRequest +import com.eatssu.android.data.remote.dto.response.CollegeResponse +import com.eatssu.android.data.remote.dto.response.DepartmentResponse +import com.eatssu.android.data.remote.dto.response.MyNickNameResponse +import com.eatssu.android.data.remote.dto.response.MyReviewResponse +import com.eatssu.android.data.remote.dto.response.PartnershipResponse +import com.eatssu.android.data.remote.dto.response.UserCollegeDepartmentResponse import retrofit2.http.Body import retrofit2.http.DELETE import retrofit2.http.GET diff --git a/app/src/main/java/com/eatssu/android/di/AppModule.kt b/app/src/main/java/com/eatssu/android/di/AppModule.kt index 2e27278c9..90a3b0bbe 100644 --- a/app/src/main/java/com/eatssu/android/di/AppModule.kt +++ b/app/src/main/java/com/eatssu/android/di/AppModule.kt @@ -2,12 +2,9 @@ package com.eatssu.android.di import android.app.Application import android.content.Context -import com.eatssu.android.data.repository.PreferencesRepository -import com.eatssu.android.data.repository.WidgetPreferencesRepository import dagger.Module import dagger.Provides import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @@ -20,17 +17,4 @@ object AppModule { fun provideContext(application: Application): Context { return application.applicationContext } - - @Provides - @Singleton - fun providePreferencesRepository(@ApplicationContext context: Context): PreferencesRepository { - return PreferencesRepository(context) - } - - - @Provides - @Singleton - fun provideWidgetPreferencesRepository(@ApplicationContext context: Context): WidgetPreferencesRepository { - return WidgetPreferencesRepository(context) - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/di/DataModule.kt b/app/src/main/java/com/eatssu/android/di/DataModule.kt index d6d29ce8a..7f295c26f 100644 --- a/app/src/main/java/com/eatssu/android/di/DataModule.kt +++ b/app/src/main/java/com/eatssu/android/di/DataModule.kt @@ -1,14 +1,15 @@ package com.eatssu.android.di -import com.eatssu.android.data.repository.FirebaseRemoteConfigRepositoryImpl -import com.eatssu.android.data.repository.HealthCheckRepositoryImpl -import com.eatssu.android.data.repository.MealRepositoryImpl -import com.eatssu.android.data.repository.MenuRepositoryImpl -import com.eatssu.android.data.repository.OauthRepositoryImpl -import com.eatssu.android.data.repository.PartnershipRepositoryImpl -import com.eatssu.android.data.repository.ReportRepositoryImpl -import com.eatssu.android.data.repository.UserRepositoryImpl +import com.eatssu.android.data.remote.repository.FirebaseRemoteConfigRepositoryImpl +import com.eatssu.android.data.remote.repository.HealthCheckRepositoryImpl +import com.eatssu.android.data.remote.repository.MealRepositoryImpl +import com.eatssu.android.data.remote.repository.MenuRepositoryImpl +import com.eatssu.android.data.remote.repository.OauthRepositoryImpl +import com.eatssu.android.data.remote.repository.PartnershipRepositoryImpl +import com.eatssu.android.data.remote.repository.ReportRepositoryImpl +import com.eatssu.android.data.remote.repository.ReviewRepositoryImpl +import com.eatssu.android.data.remote.repository.UserRepositoryImpl import com.eatssu.android.domain.repository.FirebaseRemoteConfigRepository import com.eatssu.android.domain.repository.HealthCheckRepository import com.eatssu.android.domain.repository.MealRepository @@ -22,7 +23,6 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import com.eatssu.android.data.repository.ReviewRepositoryImpl as ReviewRepositoryImpl1 @Module @InstallIn(SingletonComponent::class) @@ -45,7 +45,7 @@ abstract class DataModule { @Binds internal abstract fun bindsReviewRepository( - reviewRepositoryImpl: ReviewRepositoryImpl1, + reviewRepositoryImpl: ReviewRepositoryImpl, ): ReviewRepository @Binds @@ -72,4 +72,4 @@ abstract class DataModule { internal abstract fun bindsFirebaseRemoteConfigRepository( firebaseRemoteConfigRepositoryImpl: FirebaseRemoteConfigRepositoryImpl, ): FirebaseRemoteConfigRepository -} \ No newline at end of file +} diff --git a/app/src/main/java/com/eatssu/android/di/SecurePrefsModule.kt b/app/src/main/java/com/eatssu/android/di/SecurePrefsModule.kt new file mode 100644 index 000000000..826168f55 --- /dev/null +++ b/app/src/main/java/com/eatssu/android/di/SecurePrefsModule.kt @@ -0,0 +1,31 @@ +package com.eatssu.android.di + +import android.content.Context +import android.content.SharedPreferences +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object SecurePrefsModule { + + @Provides + @Singleton + fun provideSecurePrefs(@ApplicationContext context: Context): SharedPreferences { + val masterKey = androidx.security.crypto.MasterKey.Builder(context) + .setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme.AES256_GCM) + .build() + return androidx.security.crypto.EncryptedSharedPreferences.create( + context, + "secure_prefs", + masterKey, + androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } + +} diff --git a/app/src/main/java/com/eatssu/android/di/ServiceModule.kt b/app/src/main/java/com/eatssu/android/di/ServiceModule.kt index cf054f515..764bf3d71 100644 --- a/app/src/main/java/com/eatssu/android/di/ServiceModule.kt +++ b/app/src/main/java/com/eatssu/android/di/ServiceModule.kt @@ -1,13 +1,13 @@ package com.eatssu.android.di -import com.eatssu.android.data.service.HealthCheckService -import com.eatssu.android.data.service.MealService -import com.eatssu.android.data.service.MenuService -import com.eatssu.android.data.service.OauthService -import com.eatssu.android.data.service.PartnershipService -import com.eatssu.android.data.service.ReportService -import com.eatssu.android.data.service.ReviewService -import com.eatssu.android.data.service.UserService +import com.eatssu.android.data.remote.service.HealthCheckService +import com.eatssu.android.data.remote.service.MealService +import com.eatssu.android.data.remote.service.MenuService +import com.eatssu.android.data.remote.service.OauthService +import com.eatssu.android.data.remote.service.PartnershipService +import com.eatssu.android.data.remote.service.ReportService +import com.eatssu.android.data.remote.service.ReviewService +import com.eatssu.android.data.remote.service.UserService import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/eatssu/android/di/network/ApiResultCall.kt b/app/src/main/java/com/eatssu/android/di/network/ApiResultCall.kt index c0c5a46be..b9b644e05 100644 --- a/app/src/main/java/com/eatssu/android/di/network/ApiResultCall.kt +++ b/app/src/main/java/com/eatssu/android/di/network/ApiResultCall.kt @@ -1,10 +1,9 @@ package com.eatssu.android.di.network -import com.eatssu.android.data.dto.response.BaseResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.BaseResponse import com.eatssu.android.presentation.base.NetworkErrorEventBus import com.google.gson.Gson -import com.google.gson.JsonParser import okhttp3.Request import okio.Timeout import retrofit2.Call diff --git a/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapter.kt b/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapter.kt index 27efc609c..5077b50a8 100644 --- a/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapter.kt +++ b/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapter.kt @@ -1,7 +1,7 @@ package com.eatssu.android.di.network -import com.eatssu.android.data.dto.response.BaseResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.BaseResponse import retrofit2.Call import retrofit2.CallAdapter import java.lang.reflect.Type diff --git a/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapterFactory.kt b/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapterFactory.kt index b4044421b..67d048691 100644 --- a/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapterFactory.kt +++ b/app/src/main/java/com/eatssu/android/di/network/ApiResultCallAdapterFactory.kt @@ -1,7 +1,7 @@ package com.eatssu.android.di.network -import com.eatssu.android.data.dto.response.BaseResponse import com.eatssu.android.data.model.ApiResult +import com.eatssu.android.data.remote.dto.response.BaseResponse import retrofit2.Call import retrofit2.CallAdapter import retrofit2.Retrofit diff --git a/app/src/main/java/com/eatssu/android/domain/repository/MealRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/MealRepository.kt index 60764dc69..60ffd516c 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/MealRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/MealRepository.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.repository -import com.eatssu.android.data.dto.response.MenusInformation +import com.eatssu.android.data.remote.dto.response.MenusInformation import com.eatssu.android.domain.model.Menu import com.eatssu.common.enums.Restaurant import com.eatssu.common.enums.Time diff --git a/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt index 9b99426a4..70aef7f1e 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt @@ -1,7 +1,7 @@ package com.eatssu.android.domain.repository -import com.eatssu.android.data.dto.request.CheckValidTokenRequest -import com.eatssu.android.data.dto.request.LoginWithKakaoRequest +import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest +import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.Token interface OauthRepository { diff --git a/app/src/main/java/com/eatssu/android/domain/repository/ReportRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/ReportRepository.kt index da7ea591e..df7ebd8b4 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/ReportRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/ReportRepository.kt @@ -1,6 +1,7 @@ package com.eatssu.android.domain.repository -import com.eatssu.android.data.dto.request.ReportRequest +import com.eatssu.android.data.remote.dto.request.ReportRequest +import kotlinx.coroutines.flow.Flow interface ReportRepository { suspend fun reportReview( diff --git a/app/src/main/java/com/eatssu/android/domain/repository/ReviewRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/ReviewRepository.kt index 56f5d1393..af34fe1ac 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/ReviewRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/ReviewRepository.kt @@ -1,10 +1,10 @@ package com.eatssu.android.domain.repository -import com.eatssu.android.data.dto.request.ModifyReviewRequest -import com.eatssu.android.data.dto.request.WriteReviewRequest -import com.eatssu.android.data.dto.response.GetMealReviewInfoResponse -import com.eatssu.android.data.dto.response.GetMenuReviewInfoResponse -import com.eatssu.android.data.dto.response.ImageResponse +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.response.GetMealReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.GetMenuReviewInfoResponse +import com.eatssu.android.data.remote.dto.response.ImageResponse import com.eatssu.android.domain.model.Review import java.io.File diff --git a/app/src/main/java/com/eatssu/android/domain/repository/UserRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/UserRepository.kt index d83cb97c4..17f687854 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/UserRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/UserRepository.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.repository -import com.eatssu.android.data.dto.request.ChangeNicknameRequest +import com.eatssu.android.data.remote.dto.request.ChangeNicknameRequest import com.eatssu.android.domain.model.College import com.eatssu.android.domain.model.Department import com.eatssu.android.domain.model.Review diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/AlarmUsecase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/AlarmUsecase.kt index 17bcffc2a..254357aa7 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/AlarmUsecase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/AlarmUsecase.kt @@ -5,10 +5,13 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import com.eatssu.android.alarm.NotificationReceiver +import dagger.hilt.android.qualifiers.ApplicationContext import java.util.Calendar import javax.inject.Inject -class AlarmUseCase @Inject constructor(private val context: Context) { +class AlarmUseCase @Inject constructor( + @ApplicationContext private val context: Context, +) { fun scheduleAlarm() { val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/GetDailyNotificationStatusUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/GetDailyNotificationStatusUseCase.kt index 890228666..c2347b1cb 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/GetDailyNotificationStatusUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/GetDailyNotificationStatusUseCase.kt @@ -1,13 +1,13 @@ package com.eatssu.android.domain.usecase.alarm -import com.eatssu.android.data.repository.PreferencesRepository +import com.eatssu.android.data.local.SettingDataStore import kotlinx.coroutines.flow.Flow import javax.inject.Inject class GetDailyNotificationStatusUseCase @Inject constructor( - private val preferencesRepository: PreferencesRepository + private val settingDataStore: SettingDataStore ) { operator fun invoke(): Flow { - return preferencesRepository.dailyNotificationStatus + return settingDataStore.dailyNotificationStatus } } diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/SetDailyNotificationStatusUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/SetDailyNotificationStatusUseCase.kt index bc6801aee..16ee0722f 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/alarm/SetDailyNotificationStatusUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/alarm/SetDailyNotificationStatusUseCase.kt @@ -1,13 +1,13 @@ package com.eatssu.android.domain.usecase.alarm -import com.eatssu.android.data.repository.PreferencesRepository +import com.eatssu.android.data.local.SettingDataStore import javax.inject.Inject class SetDailyNotificationStatusUseCase @Inject constructor( - private val preferencesRepository: PreferencesRepository + private val settingDataStore: SettingDataStore ) { suspend operator fun invoke(status: Boolean) { - preferencesRepository.setDailyNotificationStatus(status) + settingDataStore.setDailyNotificationStatus(status) } } diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetAccessTokenUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetAccessTokenUseCase.kt index 0649cc903..cb68fb8dd 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetAccessTokenUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetAccessTokenUseCase.kt @@ -1,14 +1,12 @@ package com.eatssu.android.domain.usecase.auth -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.TokenStore import javax.inject.Inject class GetAccessTokenUseCase @Inject constructor( - @ApplicationContext private val context: Context + private val tokenStore: TokenStore, ) { - suspend operator fun invoke(): String { - return MySharedPreferences.getAccessToken(context) + operator fun invoke(): String { + return tokenStore.accessToken } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetIsAccessTokenValidUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetIsAccessTokenValidUseCase.kt index 6d4a8023e..6b8b0d872 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetIsAccessTokenValidUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetIsAccessTokenValidUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.auth -import com.eatssu.android.data.dto.request.CheckValidTokenRequest +import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest import com.eatssu.android.domain.repository.OauthRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetRefreshTokenUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetRefreshTokenUseCase.kt index 9229e2db0..4ff182ce2 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetRefreshTokenUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/GetRefreshTokenUseCase.kt @@ -1,15 +1,12 @@ package com.eatssu.android.domain.usecase.auth -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.TokenStore import javax.inject.Inject class GetRefreshTokenUseCase @Inject constructor( - @ApplicationContext private val context: Context -// private val preferencesRepository: PreferencesRepository, + private val tokenStore: TokenStore ) { - suspend operator fun invoke(): String { - return MySharedPreferences.getRefreshToken(context) + operator fun invoke(): String { + return tokenStore.refreshToken } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt index 8640d4220..24199432f 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.auth -import com.eatssu.android.data.dto.request.LoginWithKakaoRequest +import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.Token import com.eatssu.android.domain.repository.OauthRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LogoutUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LogoutUseCase.kt index 8d07fc65b..6edd9599c 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LogoutUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LogoutUseCase.kt @@ -1,14 +1,18 @@ package com.eatssu.android.domain.usecase.auth -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.AccountDataStore +import com.eatssu.android.data.local.SettingDataStore +import com.eatssu.android.data.local.TokenStore import javax.inject.Inject class LogoutUseCase @Inject constructor( - @ApplicationContext private val context: Context + private val accountDataStore: AccountDataStore, + private val tokenStore: TokenStore, + private val settingDataStore: SettingDataStore, ) { suspend operator fun invoke() { - MySharedPreferences.clearUser(context) + accountDataStore.clear() + tokenStore.clear() + settingDataStore.clear() } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetAccessTokenUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetAccessTokenUseCase.kt index 8b2b10262..45000d6e2 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetAccessTokenUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetAccessTokenUseCase.kt @@ -1,15 +1,12 @@ package com.eatssu.android.domain.usecase.auth -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.TokenStore import javax.inject.Inject class SetAccessTokenUseCase @Inject constructor( -// private val preferencesRepository: PreferencesRepository, - @ApplicationContext private val context: Context + private val tokenStore: TokenStore, ) { - suspend operator fun invoke(accessToken: String) { - MySharedPreferences.setAccessToken(context, accessToken) + operator fun invoke(accessToken: String) { + tokenStore.accessToken = accessToken } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetRefreshTokenUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetRefreshTokenUseCase.kt index fcef75eec..54147daab 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetRefreshTokenUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/SetRefreshTokenUseCase.kt @@ -1,15 +1,12 @@ package com.eatssu.android.domain.usecase.auth -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.TokenStore import javax.inject.Inject class SetRefreshTokenUseCase @Inject constructor( -// private val preferencesRepository: PreferencesRepository, - @ApplicationContext private val context: Context + private val tokenStore: TokenStore ) { - suspend operator fun invoke(refreshToken: String) { - MySharedPreferences.setRefreshToken(context, refreshToken) + operator fun invoke(refreshToken: String) { + tokenStore.refreshToken = refreshToken } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/menu/GetMenuNameListOfMealUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/menu/GetMenuNameListOfMealUseCase.kt index b4da52aba..1bc78eb64 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/menu/GetMenuNameListOfMealUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/menu/GetMenuNameListOfMealUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.menu -import com.eatssu.android.data.dto.response.MenusInformation +import com.eatssu.android.data.remote.dto.response.MenusInformation import com.eatssu.android.domain.repository.MealRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMealReviewInfoUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMealReviewInfoUseCase.kt index bda5973d9..819bbd9c6 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMealReviewInfoUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMealReviewInfoUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.review -import com.eatssu.android.data.dto.response.asReviewInfo +import com.eatssu.android.data.remote.dto.response.asReviewInfo import com.eatssu.android.domain.model.ReviewInfo import com.eatssu.android.domain.repository.ReviewRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMenuReviewInfoUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMenuReviewInfoUseCase.kt index 2ce5d18e4..90630489b 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMenuReviewInfoUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/review/GetMenuReviewInfoUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.review -import com.eatssu.android.data.dto.response.asReviewInfo +import com.eatssu.android.data.remote.dto.response.asReviewInfo import com.eatssu.android.domain.model.ReviewInfo import com.eatssu.android.domain.repository.ReviewRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/review/ModifyReviewUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/review/ModifyReviewUseCase.kt index e82104ee3..cbd098d65 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/review/ModifyReviewUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/review/ModifyReviewUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.review -import com.eatssu.android.data.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest import com.eatssu.android.domain.repository.ReviewRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/review/PostReportUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/review/PostReportUseCase.kt index 7e29cb4c0..c2ca75c01 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/review/PostReportUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/review/PostReportUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.review -import com.eatssu.android.data.dto.request.ReportRequest +import com.eatssu.android.data.remote.dto.request.ReportRequest import com.eatssu.android.domain.repository.ReportRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCase.kt index 97d472f7c..221f43f02 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCase.kt @@ -1,6 +1,6 @@ package com.eatssu.android.domain.usecase.review -import com.eatssu.android.data.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest import com.eatssu.android.domain.repository.ReviewRepository import javax.inject.Inject diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserCollegeDepartmentUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserCollegeDepartmentUseCase.kt index aa61101e6..0d6859602 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserCollegeDepartmentUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserCollegeDepartmentUseCase.kt @@ -1,22 +1,25 @@ package com.eatssu.android.domain.usecase.user -import android.content.Context -import com.eatssu.android.data.MySharedPreferences +import com.eatssu.android.data.local.AccountDataStore import com.eatssu.android.domain.model.College import com.eatssu.android.domain.model.Department import com.eatssu.android.domain.model.UserInfo -import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.flow.first import javax.inject.Inject class GetUserCollegeDepartmentUseCase @Inject constructor( - @ApplicationContext private val context: Context + private val accountDataStore: AccountDataStore ) { - operator fun invoke(): UserInfo { - val nickname = MySharedPreferences.getUserName(context) - val collegeId = MySharedPreferences.getUserCollegeId(context) - val collegeName = MySharedPreferences.getUserCollegeName(context) - val departmentId = MySharedPreferences.getUserDepartmentId(context) - val departmentName = MySharedPreferences.getUserDepartmentName(context) - return UserInfo(nickname, Department(departmentId, departmentName), College(collegeId, collegeName)) + suspend operator fun invoke(): UserInfo { + val nickname = accountDataStore.name.first() + val college = accountDataStore.college.first() ?: College( + collegeId = -1, + collegeName = "단과대" + ) + val department = accountDataStore.department.first() ?: Department( + departmentId = -1, + departmentName = "학과" + ) + return UserInfo(nickname, department, college) } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserEmailUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserEmailUseCase.kt deleted file mode 100644 index b5ecfc44f..000000000 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserEmailUseCase.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.eatssu.android.domain.usecase.user - -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject - -class GetUserEmailUseCase @Inject constructor( - @ApplicationContext private val context: Context -) { - suspend operator fun invoke(): String { - - return MySharedPreferences.getUserEmail(context) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserNickNameUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserNickNameUseCase.kt index 536cc45d3..0f35bcd46 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserNickNameUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/user/GetUserNickNameUseCase.kt @@ -1,18 +1,19 @@ package com.eatssu.android.domain.usecase.user -import android.content.Context -import com.eatssu.android.data.MySharedPreferences +import com.eatssu.android.data.local.AccountDataStore import com.eatssu.android.domain.repository.UserRepository +import kotlinx.coroutines.flow.first import javax.inject.Inject class GetUserNickNameUseCase @Inject constructor( private val userRepository: UserRepository, - private val context: Context // SharedPreferences 접근용 + private val accountDataStore: AccountDataStore ) { suspend operator fun invoke(): String { - return MySharedPreferences.getUserName(context).ifEmpty { + val localName = accountDataStore.name.first() // Flow에서 첫 값 가져오기 + return localName.ifEmpty { val remoteNickname = userRepository.getUserNickName() - MySharedPreferences.setUserName(context, remoteNickname) + accountDataStore.setName(remoteNickname) remoteNickname } } diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserCollegeDepartmentUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserCollegeDepartmentUseCase.kt index 7ca8fa1a3..a484d7fa8 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserCollegeDepartmentUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserCollegeDepartmentUseCase.kt @@ -1,17 +1,15 @@ package com.eatssu.android.domain.usecase.user -import android.content.Context -import com.eatssu.android.data.MySharedPreferences +import com.eatssu.android.data.local.AccountDataStore import com.eatssu.android.domain.model.College import com.eatssu.android.domain.model.Department -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class SetUserCollegeDepartmentUseCase @Inject constructor( - @ApplicationContext private val context: Context + private val accountDataStore: AccountDataStore ) { - operator fun invoke(college: College, department: Department) { - MySharedPreferences.setUserCollege(context,college) - MySharedPreferences.setUserDepartment(context, department) + suspend operator fun invoke(college: College, department: Department) { + accountDataStore.setCollege(college) + accountDataStore.setDepartment(department) } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserEmailUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserEmailUseCase.kt index b57d7541b..ab7eca148 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserEmailUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserEmailUseCase.kt @@ -1,14 +1,12 @@ package com.eatssu.android.domain.usecase.user -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import dagger.hilt.android.qualifiers.ApplicationContext +import com.eatssu.android.data.local.AccountDataStore import javax.inject.Inject class SetUserEmailUseCase @Inject constructor( - @ApplicationContext private val context: Context + private val accountDataStore: AccountDataStore, ) { suspend operator fun invoke(email: String) { - MySharedPreferences.setUserEmail(context, email) + accountDataStore.setEmail(email) } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserNicknameUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserNicknameUseCase.kt index 966e5e314..06c1fb916 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserNicknameUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/user/SetUserNicknameUseCase.kt @@ -1,10 +1,8 @@ package com.eatssu.android.domain.usecase.user -import android.content.Context -import com.eatssu.android.data.MySharedPreferences -import com.eatssu.android.data.dto.request.ChangeNicknameRequest +import com.eatssu.android.data.local.AccountDataStore +import com.eatssu.android.data.remote.dto.request.ChangeNicknameRequest import com.eatssu.android.domain.repository.UserRepository -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject //class SetUserNameUseCase @Inject constructor( @@ -21,11 +19,11 @@ import javax.inject.Inject class SetUserNicknameUseCase @Inject constructor( private val userRepository: UserRepository, - @ApplicationContext private val context: Context + private val accountDataStore: AccountDataStore ) { suspend operator fun invoke(nickname: String): Result { // 로컬 저장 - MySharedPreferences.setUserName(context, nickname) + accountDataStore.setName(nickname) return userRepository.updateUserName(ChangeNicknameRequest(nickname)) } } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/widget/LoadRestaurantByFileKeyUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/widget/LoadRestaurantByFileKeyUseCase.kt index e5ea1e391..8edc87dd8 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/widget/LoadRestaurantByFileKeyUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/widget/LoadRestaurantByFileKeyUseCase.kt @@ -1,11 +1,11 @@ package com.eatssu.android.domain.usecase.widget -import com.eatssu.android.data.repository.WidgetPreferencesRepository +import com.eatssu.android.data.local.WidgetDataStore import com.eatssu.common.enums.Restaurant import javax.inject.Inject class LoadRestaurantByFileKeyUseCase @Inject constructor( - private val widgetPrefsRepository: WidgetPreferencesRepository + private val widgetPrefsRepository: WidgetDataStore ) { suspend operator fun invoke(fileKey: String): Restaurant? { return widgetPrefsRepository.loadRestaurantByFileKey(fileKey) diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/widget/SaveRestaurantByFileKeyUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/widget/SaveRestaurantByFileKeyUseCase.kt index abb852f67..4b5999a71 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/widget/SaveRestaurantByFileKeyUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/widget/SaveRestaurantByFileKeyUseCase.kt @@ -1,11 +1,11 @@ package com.eatssu.android.domain.usecase.widget -import com.eatssu.android.data.repository.WidgetPreferencesRepository +import com.eatssu.android.data.local.WidgetDataStore import com.eatssu.common.enums.Restaurant import javax.inject.Inject class SaveRestaurantByFileKeyUseCase @Inject constructor( - private val widgetPrefsRepository: WidgetPreferencesRepository + private val widgetPrefsRepository: WidgetDataStore ) { suspend operator fun invoke(fileKey: String, restaurant: Restaurant) { widgetPrefsRepository.saveRestaurantByFileKey(fileKey, restaurant) diff --git a/app/src/main/java/com/eatssu/android/presentation/MainViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/MainViewModel.kt index 62a83b33d..a9c1e0878 100644 --- a/app/src/main/java/com/eatssu/android/presentation/MainViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/MainViewModel.kt @@ -6,7 +6,6 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.eatssu.android.R -import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.domain.repository.UserRepository import com.eatssu.android.domain.usecase.auth.LogoutUseCase import com.eatssu.android.domain.usecase.user.GetUserCollegeDepartmentUseCase @@ -34,28 +33,27 @@ class MainViewModel @Inject constructor( @ApplicationContext private val context: Context ) : ViewModel() { - private val _uiState: MutableStateFlow> = MutableStateFlow( - UiState.Success( - MainState.DepartmentState(MySharedPreferences.getUserDepartmentName(context)) - ) - ) + private val _uiState: MutableStateFlow> = MutableStateFlow(UiState.Init) val uiState: StateFlow> = _uiState.asStateFlow() private val _uiEvent = MutableSharedFlow() val uiEvent: SharedFlow = _uiEvent init { + loadStoredUserDepartment() getUserDepartment() fetchAndCheckNickname() } fun refreshUserDepartment() { - val userInfo = getUserCollegeDepartmentUseCase() - _uiState.value = UiState.Success( - MainState.DepartmentState( - departmentName = userInfo.userDepartment.departmentName + viewModelScope.launch { + val userInfo = getUserCollegeDepartmentUseCase() + _uiState.value = UiState.Success( + MainState.DepartmentState( + departmentName = userInfo.userDepartment.departmentName + ) ) - ) + } } private fun fetchAndCheckNickname() { @@ -97,13 +95,26 @@ class MainViewModel @Inject constructor( fun setData(dataToSend: LocalDate) { data.value = dataToSend - Timber.d("setdata", dataToSend.toString()) + Timber.d("setdata $dataToSend") } fun getData(): LiveData { return data } + private fun loadStoredUserDepartment() { + viewModelScope.launch { + val userInfo = getUserCollegeDepartmentUseCase() + _uiState.value = UiState.Success( + MainState.DepartmentState( + departmentName = userInfo.userDepartment.departmentName, + showUserDepartmentBottomSheet = + (userInfo.userCollege.collegeId == -1 || userInfo.userDepartment.departmentId == -1) + ) + ) + } + } + private fun getUserDepartment() { viewModelScope.launch { val (college, department) = userRepository.getUserCollegeDepartment() ?: run { @@ -131,7 +142,7 @@ sealed class MainState { data class NicknameExists(val nickname: String) : MainState() object LoggedOut : MainState() data class DepartmentState( - val departmentName: String = "", + val departmentName: String? = "", val showUserDepartmentBottomSheet: Boolean = false ) : MainState() } diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewActivity.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewActivity.kt index 82c14586f..207e0cefd 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyReviewActivity.kt @@ -3,7 +3,7 @@ package com.eatssu.android.presentation.cafeteria.review.modify import android.os.Bundle import androidx.activity.viewModels import androidx.lifecycle.lifecycleScope -import com.eatssu.android.data.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest import com.eatssu.android.databinding.ActivityFixMenuBinding import com.eatssu.android.presentation.base.BaseActivity import com.eatssu.android.presentation.util.showToast diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyViewModel.kt index 385543b9c..579c464f1 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/modify/ModifyViewModel.kt @@ -2,9 +2,7 @@ package com.eatssu.android.presentation.cafeteria.review.modify import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.eatssu.android.App -import com.eatssu.android.R -import com.eatssu.android.data.dto.request.ModifyReviewRequest +import com.eatssu.android.data.remote.dto.request.ModifyReviewRequest import com.eatssu.android.domain.usecase.review.ModifyReviewUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -36,7 +34,7 @@ class ModifyViewModel @Inject constructor( loading = false, error = true, isDone = false, - toastMessage = App.appContext.getString(R.string.modify_not) + toastMessage = "리뷰 수정이 실패하였습니다." ) } return@launch @@ -47,7 +45,7 @@ class ModifyViewModel @Inject constructor( loading = false, error = false, isDone = true, - toastMessage = App.appContext.getString(R.string.modify_done) + toastMessage = "리뷰가 수정되었습니다." ) } } diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/report/ReportViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/report/ReportViewModel.kt index a3c9ffcf2..d948f9f17 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/report/ReportViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/report/ReportViewModel.kt @@ -2,7 +2,7 @@ package com.eatssu.android.presentation.cafeteria.review.report import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.eatssu.android.data.dto.request.ReportRequest +import com.eatssu.android.data.remote.dto.request.ReportRequest import com.eatssu.android.domain.usecase.review.PostReportUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteRateActivity.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteRateActivity.kt index 53dc53a0b..9debbf55a 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteRateActivity.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteRateActivity.kt @@ -14,7 +14,7 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions -import com.eatssu.android.data.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest import com.eatssu.android.databinding.ActivityReviewWriteRateBinding import com.eatssu.android.presentation.UiEvent import com.eatssu.android.presentation.UiState diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteViewModel.kt index 9b888a6cd..46b7672ba 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/ReviewWriteViewModel.kt @@ -2,7 +2,7 @@ package com.eatssu.android.presentation.cafeteria.review.write import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.eatssu.android.data.dto.request.WriteReviewRequest +import com.eatssu.android.data.remote.dto.request.WriteReviewRequest import com.eatssu.android.domain.usecase.review.GetImageUrlUseCase import com.eatssu.android.domain.usecase.review.WriteReviewUseCase import com.eatssu.android.presentation.UiEvent diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/VariableMenuViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/VariableMenuViewModel.kt index 8696288a7..80f5bdfeb 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/VariableMenuViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/menu/VariableMenuViewModel.kt @@ -3,7 +3,7 @@ package com.eatssu.android.presentation.cafeteria.review.write.menu import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.eatssu.android.data.dto.response.toMenuMini +import com.eatssu.android.data.remote.dto.response.toMenuMini import com.eatssu.android.domain.model.MenuMini import com.eatssu.android.domain.usecase.menu.GetMenuNameListOfMealUseCase import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/app/src/main/java/com/eatssu/android/presentation/common/MyReviewBottomSheetFragment.kt b/app/src/main/java/com/eatssu/android/presentation/common/MyReviewBottomSheetFragment.kt index 2d4220c59..a53b5d30d 100644 --- a/app/src/main/java/com/eatssu/android/presentation/common/MyReviewBottomSheetFragment.kt +++ b/app/src/main/java/com/eatssu/android/presentation/common/MyReviewBottomSheetFragment.kt @@ -8,11 +8,10 @@ import android.view.ViewGroup import androidx.appcompat.app.AlertDialog import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope -import com.eatssu.android.App import com.eatssu.android.R import com.eatssu.android.databinding.FragmentBottomsheetMyReviewBinding -import com.eatssu.android.presentation.mypage.myreview.MyReviewViewModel import com.eatssu.android.presentation.cafeteria.review.modify.ModifyReviewActivity +import com.eatssu.android.presentation.mypage.myreview.MyReviewViewModel import com.eatssu.android.presentation.util.showToast import com.google.android.material.bottomsheet.BottomSheetDialogFragment import dagger.hilt.android.AndroidEntryPoint @@ -84,7 +83,7 @@ class MyReviewBottomSheetFragment : BottomSheetDialogFragment() { setTitle(R.string.delete) setMessage(R.string.delete_description) setNegativeButton("취소") { _, _ -> - activity?.showToast(App.appContext.getString(R.string.delete_undo)) + activity?.showToast("리뷰 삭제를 취소하시겠습니까?") } setPositiveButton("삭제") { _, _ -> viewModel.deleteReview(reviewId) diff --git a/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt index 7dae2b179..084878be4 100644 --- a/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt @@ -4,7 +4,7 @@ import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.eatssu.android.R -import com.eatssu.android.data.dto.request.LoginWithKakaoRequest +import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.TokenStateManager import com.eatssu.android.domain.usecase.auth.LoginUseCase import com.eatssu.android.domain.usecase.auth.SetAccessTokenUseCase diff --git a/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt b/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt index 8b7e820d1..52dc9032a 100644 --- a/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt +++ b/app/src/main/java/com/eatssu/android/presentation/map/MapFragmentView.kt @@ -346,7 +346,7 @@ fun MapFragmentComposeView( selectedFilter = next }, modifier = Modifier.padding(top = 12.dp), - departmentName = departmentName + departmentName = departmentName.toString() ) // 찜 기능 diff --git a/app/src/main/java/com/eatssu/android/presentation/map/MapViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/map/MapViewModel.kt index 3ac652cc7..6e2933166 100644 --- a/app/src/main/java/com/eatssu/android/presentation/map/MapViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/map/MapViewModel.kt @@ -1,9 +1,7 @@ package com.eatssu.android.presentation.map -import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.domain.model.Partnership import com.eatssu.android.domain.model.PartnershipRestaurant import com.eatssu.android.domain.repository.PartnershipRepository @@ -13,7 +11,6 @@ import com.eatssu.android.presentation.UiEvent import com.eatssu.android.presentation.UiState import com.eatssu.android.presentation.map.model.RestaurantInfo import dagger.hilt.android.lifecycle.HiltViewModel -import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow @@ -38,8 +35,7 @@ data class MapState( class MapViewModel @Inject constructor( private val partnershipRepository: PartnershipRepository, private val getPartnershipDetailUseCase: GetPartnershipDetailUseCase, - getUserCollegeDepartmentUseCase: GetUserCollegeDepartmentUseCase, - @ApplicationContext private val context: Context, + private val getUserCollegeDepartmentUseCase: GetUserCollegeDepartmentUseCase, ) : ViewModel() { private val _uiState: MutableStateFlow> = MutableStateFlow(UiState.Init) @@ -48,15 +44,25 @@ class MapViewModel @Inject constructor( private val _uiEvent = MutableSharedFlow() val uiEvent: SharedFlow = _uiEvent - private val userCollegeDepartment = getUserCollegeDepartmentUseCase() - val departmentId: Long = userCollegeDepartment.userDepartment.departmentId.toLong() - val collegeId: Long = userCollegeDepartment.userCollege.collegeId.toLong() + var departmentId: Long = -1 + private set + var collegeId: Long = -1 + private set init { - Timber.d("학과 정보 : ${MySharedPreferences.getUserDepartmentName(context)}") + fetchUserCollegeDepartment() loadPartnerships() } + private fun fetchUserCollegeDepartment() { + viewModelScope.launch { + val userCollegeDepartment = getUserCollegeDepartmentUseCase() + departmentId = userCollegeDepartment.userDepartment.departmentId.toLong() + collegeId = userCollegeDepartment.userCollege.collegeId.toLong() + Timber.d("학과 정보 : ${userCollegeDepartment.userDepartment.departmentName}") + } + } + // 제휴 정보 로딩 fun loadPartnerships() { viewModelScope.launch { diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageViewModel.kt index 0d4f506bd..fb56a6345 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/MyPageViewModel.kt @@ -1,18 +1,15 @@ package com.eatssu.android.presentation.mypage -import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.eatssu.android.BuildConfig -import com.eatssu.android.data.MySharedPreferences -import com.eatssu.android.data.repository.PreferencesRepository +import com.eatssu.android.data.local.SettingDataStore import com.eatssu.android.domain.usecase.alarm.AlarmUseCase import com.eatssu.android.domain.usecase.alarm.SetDailyNotificationStatusUseCase import com.eatssu.android.domain.usecase.user.GetUserNickNameUseCase import com.eatssu.android.presentation.UiEvent import com.eatssu.android.presentation.UiState import dagger.hilt.android.lifecycle.HiltViewModel -import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow @@ -30,8 +27,7 @@ class MyPageViewModel @Inject constructor( private val getUserNickNameUseCase: GetUserNickNameUseCase, private val setNotificationStatusUseCase: SetDailyNotificationStatusUseCase, private val alarmUseCase: AlarmUseCase, - private val preferencesRepository: PreferencesRepository, - @ApplicationContext private val context: Context + private val settingDataStore: SettingDataStore, ) : ViewModel() { // 내부는 항상 "값 그 자체"만 들고 있고, @@ -40,9 +36,6 @@ class MyPageViewModel @Inject constructor( private val _state = MutableStateFlow( MyPageState( appVersion = "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})", - nickname = MySharedPreferences.getUserName(context).takeIf { - it.isNotBlank() - } ) ) val uiState: StateFlow> = @@ -64,7 +57,7 @@ class MyPageViewModel @Inject constructor( private fun observeNotificationStatus() { viewModelScope.launch { - preferencesRepository.dailyNotificationStatus.collectLatest { isOn -> + settingDataStore.dailyNotificationStatus.collectLatest { isOn -> _state.update { it.copy(isAlarmOn = isOn) } } } diff --git a/app/src/main/java/com/eatssu/android/presentation/mypage/myreview/MyReviewAdapter.kt b/app/src/main/java/com/eatssu/android/presentation/mypage/myreview/MyReviewAdapter.kt index 418c72651..8118e1ce1 100644 --- a/app/src/main/java/com/eatssu/android/presentation/mypage/myreview/MyReviewAdapter.kt +++ b/app/src/main/java/com/eatssu/android/presentation/mypage/myreview/MyReviewAdapter.kt @@ -6,7 +6,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import com.bumptech.glide.Glide -import com.eatssu.android.data.MySharedPreferences import com.eatssu.android.databinding.ItemReviewBinding import com.eatssu.android.domain.model.Review import timber.log.Timber @@ -30,7 +29,7 @@ class MyReviewAdapter : androidx.recyclerview.widget.RecyclerView.ViewHolder(binding.root) { fun bind(data: Review) { - binding.tvWriterNickname.text = MySharedPreferences.getUserName(binding.root.context) + binding.tvWriterNickname.text = "" binding.tvReviewItemComment.text = data.content binding.tvReviewItemDate.text = data.writeDate binding.tvMenuName.text = data.menu diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1c3d7cc41..18f572da3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,6 +19,7 @@ naverMapLocation = "21.0.2" navigationUi = "2.8.9" playServicesLocation = "21.3.0" navigationFragment = "2.9.3" +securityCrypto = "1.1.0-alpha06" threetenabp = "1.4.4" material-calendarview = "1.4.3" recyclerview = "1.3.2" @@ -78,7 +79,6 @@ androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", ve androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragment" } androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } -androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } androidx-hilt-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "androidxHilt" } androidx-hilt-common = { group = "androidx.hilt", name = "hilt-common", version.ref = "androidxHilt" } androidx-hilt-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "androidxHilt" } @@ -105,6 +105,10 @@ androidx-glance-preview = { group = "androidx.glance", name = "glance-preview", androidx-glance-material3 = { group = "androidx.glance", name = "glance-material3", version.ref = "glanceAppwidget" } androidx-glance = { group = "androidx.glance", name = "glance", version.ref = "glanceAppwidget" } +# datastore +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } +androidx-security-crypto = { module = "androidx.security:security-crypto", version.ref = "securityCrypto" } + # glide glide = { group = "com.github.bumptech.glide", name = "glide", version.ref = "glide" } glide-compiler = { group = "com.github.bumptech.glide", name = "compiler", version.ref = "glide-compiler" }