Skip to content

Commit

Permalink
feat: bind moduleを使用するようにした
Browse files Browse the repository at this point in the history
  • Loading branch information
pantasystem committed Dec 20, 2023
1 parent 35ec1f9 commit 73c635b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,17 @@ package net.pantasystem.milktea.data.di.module

import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.components.SingletonComponent
import net.pantasystem.milktea.app_store.messaging.MessagePagingStore
import net.pantasystem.milktea.data.infrastructure.messaging.*
import net.pantasystem.milktea.model.account.AccountRepository
import net.pantasystem.milktea.model.messaging.MessageObserver
import net.pantasystem.milktea.model.messaging.MessageRepository
import net.pantasystem.milktea.model.messaging.MessagingRepository
import net.pantasystem.milktea.model.messaging.UnReadMessages
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object MessagingModule {

@Provides
@Singleton
fun inMemoryMessageDataSource(accountRepository: AccountRepository): InMemoryMessageDataSource {
return InMemoryMessageDataSource(accountRepository)
}

@Provides
@Singleton
fun unreadMessages(inMem: InMemoryMessageDataSource): UnReadMessages {
return inMem
}

@Provides
@Singleton
fun messageDataSource(inMem: InMemoryMessageDataSource): MessageDataSource {
return inMem
}
}

@Module
@InstallIn(SingletonComponent::class)
abstract class MessagingBindsModule {
Expand All @@ -59,6 +34,20 @@ abstract class MessagingBindsModule {
abstract fun messagingRepository(
impl: MessagingRepositoryImpl
) : MessagingRepository

@Binds
@Singleton
abstract fun bindMessageDataSource(
impl: InMemoryMessageDataSource
) : MessageDataSource

@Binds
@Singleton
abstract fun bindUnreadMessages(
impl: InMemoryMessageDataSource
) : UnReadMessages


}

@Module
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,19 @@
package net.pantasystem.milktea.data.di.module

import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.coroutines.CoroutineDispatcher
import net.pantasystem.milktea.common_android.hilt.IODispatcher
import net.pantasystem.milktea.data.infrastructure.user.UserNicknameDAO
import net.pantasystem.milktea.data.infrastructure.user.UserNicknameRepositoryOnMemoryImpl
import net.pantasystem.milktea.data.infrastructure.user.UserNicknameRepositorySQLiteImpl
import net.pantasystem.milktea.model.user.nickname.UserNicknameRepository
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object UserNicknameModule {
abstract class UserNicknameModule {

@Provides
@Binds
@Singleton
fun provideUserNicknameRepository(@IODispatcher ioDispatcher: CoroutineDispatcher, userNicknameDAO: UserNicknameDAO): UserNicknameRepository {
return UserNicknameRepositorySQLiteImpl(
userNicknameDAO,
UserNicknameRepositoryOnMemoryImpl(),
ioDispatcher
)
}
abstract fun bindUserNicknameRepository(userNicknameRepositorySQLiteImpl: UserNicknameRepositorySQLiteImpl): UserNicknameRepository

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import net.pantasystem.milktea.model.account.AccountRepository
import net.pantasystem.milktea.model.messaging.Message
import net.pantasystem.milktea.model.messaging.MessagingId
import net.pantasystem.milktea.model.messaging.UnReadMessages
import javax.inject.Inject

interface MessageDataSource {
suspend fun add(message: Message): Result<AddResult>
Expand All @@ -23,7 +24,7 @@ interface MessageDataSource {
suspend fun readAllMessages(accountId: Long): Result<Unit>
}

class InMemoryMessageDataSource(
class InMemoryMessageDataSource @Inject constructor(
private val accountRepository: AccountRepository
) : MessageDataSource, UnReadMessages {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package net.pantasystem.milktea.data.infrastructure.user

import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import net.pantasystem.milktea.model.user.nickname.UserNickname
import net.pantasystem.milktea.model.user.nickname.UserNicknameNotFoundException
import net.pantasystem.milktea.model.user.nickname.UserNicknameRepository
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class UserNicknameRepositoryOnMemoryImpl :
UserNicknameRepository {
class UserNicknameRepositoryOnMemoryImpl @Inject constructor() : UserNicknameRepository {

val lock = Mutex()
val map = mutableMapOf<UserNickname.Id, UserNickname>()


override suspend fun findOne(id: UserNickname.Id): UserNickname {
return map[id]?: throw UserNicknameNotFoundException()
return map[id] ?: throw UserNicknameNotFoundException()
}

override suspend fun save(nickname: UserNickname) {
Expand Down

0 comments on commit 73c635b

Please sign in to comment.