TokenPreference.kt
package com.gyleedev.data.preference
import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import com.gyleedev.data.R
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
interface TokenPreference {
fun getString(): String
fun setString(str: String)
fun isKeyExist(): Boolean
fun deleteKey()
}
// 구현체
class TokenPreferenceImpl @Inject constructor(
@ApplicationContext context: Context,
) : TokenPreference {
private val prefFileName = context.getString(R.string.preference_file_key)
private val prefTokenKey = context.getString(R.string.token_key)
private val accessPref: SharedPreferences =
context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE)
override fun getString(): String = accessPref.getString(prefTokenKey, "") as String
override fun setString(str: String) {
accessPref.edit { putString(prefTokenKey, str) }
}
// 키 값이 null/empty 가 아니면(존재하면) true
override fun isKeyExist(): Boolean {
val key = accessPref.getString(prefTokenKey, "")
return !key.isNullOrEmpty()
}
override fun deleteKey() {
setString(str = "")
}
}