import android.content.Context
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
class PreferenceManager @Inject constructor(
@ApplicationContext context: Context
) {
private val prefs = context.getSharedPreferences("user_prefs", Context.MODE_PRIVATE)
companion object {
private const val KEY_PLATFORM = "LOGIN_PLATFORM"
private const val KEY_USER_ID = "USER_ID"
private const val KEY_ACCESS_TOKEN = "ACCESS_TOKEN"
private const val KEY_IS_LOGGED_IN = "IS_LOGGED_IN"
}
/* 로그인 정보 저장 */
fun saveLoginInfo(platform: String, userId: String, accessToken: String? = null) {
with(prefs.edit()) {
putString(KEY_PLATFORM, platform)
putString(KEY_USER_ID, userId)
putBoolean(KEY_IS_LOGGED_IN, true)
accessToken?.let { putString(KEY_ACCESS_TOKEN, it) }
apply()
}
}
/* 토큰만 따로 저장 */
fun saveToken(token: String) {
prefs.edit().putString(KEY_ACCESS_TOKEN, token).apply()
}
/* 로그인 여부 확인 */
fun isLoggedIn(): Boolean {
return prefs.getBoolean(KEY_IS_LOGGED_IN, false)
}
/* 로그인한 플랫폼 (kakao, google, naver) */
fun getLoginPlatform(): String? {
return prefs.getString(KEY_PLATFORM, null)
}
/* 사용자 ID */
fun getUserId(): String? {
return prefs.getString(KEY_USER_ID, null)
}
/* 액세스 토큰 */
fun getToken(): String? {
return prefs.getString(KEY_ACCESS_TOKEN, null)
}
/* 모든 로그인 정보 제거 */
fun clearLoginInfo() {
prefs.edit().clear().apply()
}
}
이클래스를 주입받아 사용하면된다.