Refactor project data to allow server handling.

This commit is contained in:
Thomas Andres Gomez 2025-02-22 12:54:19 +01:00
parent 3c8eecdab5
commit 1e5f0d88ae
58 changed files with 742 additions and 469 deletions

View file

@ -1,21 +1,24 @@
package com.pixelized.desktop.lwa
import com.pixelized.desktop.lwa.business.CharacterSheetUseCase
import com.pixelized.desktop.lwa.business.ExpressionUseCase
import com.pixelized.desktop.lwa.business.RollUseCase
import com.pixelized.desktop.lwa.business.SettingsUseCase
import com.pixelized.desktop.lwa.business.SkillStepUseCase
import com.pixelized.desktop.lwa.business.ExpressionUseCase
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetJsonFactory
import com.pixelized.desktop.lwa.parser.dice.DiceParser
import com.pixelized.desktop.lwa.parser.expression.ExpressionParser
import com.pixelized.desktop.lwa.parser.word.WordParser
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
import com.pixelized.desktop.lwa.repository.alteration.AlterationStore
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetStore
import com.pixelized.desktop.lwa.repository.characterSheet.SkillDescriptionFactory
import com.pixelized.desktop.lwa.repository.network.NetworkRepository
import com.pixelized.desktop.lwa.repository.roll_history.RollHistoryRepository
import com.pixelized.desktop.lwa.repository.settings.SettingsFactory
import com.pixelized.desktop.lwa.repository.settings.SettingsRepository
import com.pixelized.desktop.lwa.repository.alteration.AlterationStore
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
import com.pixelized.desktop.lwa.repository.settings.SettingsStore
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDiminishedViewModel
import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.PlayerRibbonViewModel
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetFactory
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetViewModel
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.CharacterSheetEditFactory
@ -26,32 +29,48 @@ import com.pixelized.desktop.lwa.ui.screen.network.NetworkFactory
import com.pixelized.desktop.lwa.ui.screen.network.NetworkViewModel
import com.pixelized.desktop.lwa.ui.screen.roll.RollViewModel
import com.pixelized.desktop.lwa.ui.screen.rollhistory.RollHistoryViewModel
import com.pixelized.desktop.lwa.parser.dice.DiceParser
import com.pixelized.desktop.lwa.parser.word.WordParser
import com.pixelized.desktop.lwa.parser.expression.ExpressionParser
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDiminishedViewModel
import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.PlayerRibbonViewModel
import kotlinx.serialization.json.Json
import com.pixelized.shared.lwa.model.campaign.CampaignRepository
import com.pixelized.shared.lwa.model.campaign.model.CampaignFactory
import com.pixelized.shared.lwa.usecase.CharacterSheetUseCase
import io.ktor.client.HttpClient
import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.okhttp.OkHttp
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.websocket.WebSockets
import io.ktor.serialization.kotlinx.json.json
import org.koin.core.module.dsl.factoryOf
import org.koin.core.module.dsl.singleOf
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module
val moduleDependencies
val appModuleDependencies
get() = listOf(
toolsDependencies,
parserDependencies,
factoryDependencies,
useCaseDependencies,
storeDependencies,
repositoryDependencies,
viewModelDependencies,
toolsDependencies,
)
val toolsDependencies
get() = module {
factory { Json { explicitNulls = false } }
single<HttpClientEngine> {
OkHttp.create()
}
single {
HttpClient(
engine = get()
) {
install(WebSockets) {
pingIntervalMillis = 20_000
}
install(ContentNegotiation) {
json(get())
}
}
}
}
val storeDependencies
@ -68,17 +87,17 @@ val repositoryDependencies
singleOf(::RollHistoryRepository)
singleOf(::SettingsRepository)
singleOf(::AlterationRepository)
singleOf(::CampaignRepository)
}
val factoryDependencies
get() = module {
factoryOf(::CharacterSheetFactory)
factoryOf(::CharacterSheetEditFactory)
factoryOf(::CharacterSheetJsonFactory)
factoryOf(::NetworkFactory)
factoryOf(::SkillFieldFactory)
factoryOf(::SkillDescriptionFactory)
factoryOf(::SettingsFactory)
factoryOf(::CampaignFactory)
}
val viewModelDependencies
@ -106,6 +125,6 @@ val useCaseDependencies
factoryOf(::SkillStepUseCase)
factoryOf(::RollUseCase)
factoryOf(::ExpressionUseCase)
factoryOf(::CharacterSheetUseCase)
factoryOf(::SettingsUseCase)
factoryOf(::CharacterSheetUseCase)
}