diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/CheckInCheckOutRepo.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/CheckInCheckOutRepo.kt new file mode 100644 index 0000000..48869a7 --- /dev/null +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/CheckInCheckOutRepo.kt @@ -0,0 +1,86 @@ +package `in`.sminnovations.attendanceapp.screens.home.data + +import android.content.Context +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.stringPreferencesKey +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 +import javax.inject.Singleton + +private const val DATASTORE_NAME = "check_in_check_out_prefs" +private val Context.dataStore by preferencesDataStore(name = DATASTORE_NAME) + +@Singleton +class CheckInCheckOutDataStore @Inject constructor(@ApplicationContext context: Context) { + + private val dataStore = context.dataStore + + private val CHECK_IN_KEY = stringPreferencesKey("check_in_id") + private val CHECK_OUT_KEY = stringPreferencesKey("check_out_id") + private val CHECK_IN_Date = stringPreferencesKey("check_in_date_id") + private val IS_CHECK_IN = booleanPreferencesKey("is_checked_in_id") + private val IS_CHECK_OUT = booleanPreferencesKey("is_checked_in_id") + + + val checkInId: Flow = dataStore.data.map { preferences -> + preferences[CHECK_IN_KEY] ?: "" + } + + val checkOutId: Flow = dataStore.data.map { preferences -> + preferences[CHECK_OUT_KEY] ?: "" + } + + val checkInDate: Flow = dataStore.data.map { preferences -> + preferences[CHECK_IN_Date] ?: "" + } + + val isCheckedIn : Flow = dataStore.data.map { preferences -> + preferences[IS_CHECK_IN] ?: false + } + + val isCheckedOut : Flow = dataStore.data.map { preferences -> + preferences[IS_CHECK_OUT] ?: false + } + + suspend fun saveLoginData(checkIn: String, checkOut: String) { + dataStore.edit { preferences -> + preferences[CHECK_IN_KEY] = checkIn + preferences[CHECK_OUT_KEY] = checkOut + } + } + + + suspend fun saveLoginDate(checkDate: String) { + dataStore.edit { preferences -> + preferences[CHECK_IN_Date] = checkDate + } + } + + suspend fun saveIsLogIn(isCheckIn: Boolean) { + dataStore.edit { preferences -> + preferences[IS_CHECK_IN] = isCheckIn + } + } + + suspend fun saveIsLogOut(isCheckOut: Boolean) { + dataStore.edit { preferences -> + preferences[IS_CHECK_OUT] = isCheckOut + } + } + + suspend fun clearLoginData() { + dataStore.edit { preferences -> + preferences.remove(CHECK_IN_Date) + preferences.remove(IS_CHECK_OUT) + preferences.remove(IS_CHECK_IN) + preferences.remove(CHECK_IN_KEY) + preferences.remove(CHECK_OUT_KEY) + } + } + + +} diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/EmployeeData.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/EmployeeData.kt deleted file mode 100644 index c550d8f..0000000 --- a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/data/EmployeeData.kt +++ /dev/null @@ -1,3 +0,0 @@ -package `in`.sminnovations.attendanceapp.screens.home.data - -class EmployeeData \ No newline at end of file