Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class RoomAuthRepository(
private val tokenCommonDao: TokenCommonDao,
private val workspaceCommonDao: WorkspaceCommonDao
) : AuthRepository {
override suspend fun getUser(): WriteopiaUser = userDao.selectCurrentUser()
override suspend fun getUser(): WriteopiaUser = userDao.selectedCurrentUser()

override suspend fun isLoggedIn(): Boolean = getUser().id != WriteopiaUser.DISCONNECTED

Expand Down Expand Up @@ -47,6 +47,10 @@ class RoomAuthRepository(
}

override suspend fun unselectAllWorkspaces() {
workspaceCommonDao.unselectAllWorkspaces()
}

override suspend fun unselectAllUsers() {
userDao.unselectAllUsers()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@ interface AuthRepository : UserRepository {
suspend fun saveWorkspace(workspace: Workspace)

suspend fun unselectAllWorkspaces()

suspend fun unselectAllUsers()
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,13 @@ internal class SqlDelightAuthRepository(
}

override suspend fun saveUser(user: WriteopiaUser, selected: Boolean) {
writeopiaDb?.writeopiaUserEntityQueries?.run {
unselectAllUsers()
insertUser(
id = user.id,
name = user.name,
email = user.email,
selected = selected.toLong(),
tier = user.tier.tierName()
)
}
writeopiaDb?.writeopiaUserEntityQueries?.insertUser(
id = user.id,
name = user.name,
email = user.email,
selected = selected.toLong(),
tier = user.tier.tierName()
)
}

override suspend fun getAuthToken(): String? =
Expand Down Expand Up @@ -96,4 +93,8 @@ internal class SqlDelightAuthRepository(
override suspend fun unselectAllWorkspaces() {
writeopiaDb?.workspaceEntityQueries?.unselectAll()
}

override suspend fun unselectAllUsers() {
writeopiaDb?.writeopiaUserEntityQueries?.unselectAllUsers()
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package io.writeopia.persistence.room.data.daos

import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import io.writeopia.persistence.room.data.entities.TOKEN_ENTITY
import io.writeopia.persistence.room.data.entities.TokenEntity
Expand All @@ -11,6 +13,6 @@ interface TokenDao {
@Query("SELECT * FROM $TOKEN_ENTITY WHERE user_id = :userId")
suspend fun getTokenByUserId(userId: String): TokenEntity?

@Query("INSERT INTO $TOKEN_ENTITY (user_id, token) VALUES (:userId, :token)")
suspend fun insertToken(userId: String, token: String)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertToken(tokenEntity: TokenEntity)
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package io.writeopia.persistence.room.data.daos

import io.writeopia.common.utils.persistence.daos.TokenCommonDao
import io.writeopia.persistence.room.data.entities.TokenEntity

class TokenDaoDelegator(private val tokenDao: TokenDao): TokenCommonDao {
override suspend fun getTokenByUserId(userId: String): String? =
tokenDao.getTokenByUserId(userId)?.token

override suspend fun saveToken(token: String, userId: String) {
tokenDao.insertToken(userId, token)
tokenDao.insertToken(TokenEntity(userId, token))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ interface UserDao {

@Query("SELECT * FROM $USER_ENTITY WHERE selected = 1")
suspend fun getCurrentUser(): UserEntity?

@Query("UPDATE $USER_ENTITY SET selected = 0")
suspend fun unselectAllUsers()
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ class UserDaoDelegator(private val delegate: UserDao): UserCommonDao {
}
}

override suspend fun selectCurrentUser(): WriteopiaUser =
override suspend fun selectedCurrentUser(): WriteopiaUser =
delegate.getCurrentUser()?.toModel()?.first ?: WriteopiaUser.disconnectedUser()

override suspend fun unselectAllUsers() {
delegate.unselectAllUsers()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ interface WorkspaceDao {
suspend fun getWorkspaceById(id: String): WorkspaceEntity?

@Query("SELECT * FROM workspace_entity WHERE selected = 1 LIMIT 1")
suspend fun selectCurrentWorkspace(): WorkspaceEntity?
suspend fun currentWorkspace(): WorkspaceEntity?

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(workspace: WorkspaceEntity)

@Query("UPDATE workspace_entity SET selected = 0")
suspend fun unselectAllWorkspaces()
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@ class WorkspaceDaoDelegator(private val workspaceDao: WorkspaceDao): WorkspaceCo
}

override suspend fun selectCurrentWorkspace(): Workspace? =
workspaceDao.selectCurrentWorkspace()?.toDomain()
workspaceDao.currentWorkspace()?.toDomain()

override suspend fun unselectAllWorkspaces() {
workspaceDao.unselectAllWorkspaces()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ interface UserCommonDao {

suspend fun deleteUser(userId: String)

suspend fun selectCurrentUser(): WriteopiaUser
suspend fun selectedCurrentUser(): WriteopiaUser

suspend fun unselectAllUsers()
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ interface WorkspaceCommonDao {
suspend fun deleteWorkspace(workspaceId: String)

suspend fun selectCurrentWorkspace(): Workspace?

suspend fun unselectAllWorkspaces()
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class AuthMenuViewModel(
is ResultData.Complete -> {
val user = result.data.writeopiaUser.toModel()

authRepository.unselectAllUsers()
authRepository.saveUser(
user = user.copy(tier = Tier.PREMIUM),
selected = true
Expand Down