Skip to content
Open
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
3 changes: 2 additions & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.zegreatrob.coupling.client.components

import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.contributor.ContributorMenu
import com.zegreatrob.coupling.model.party.PartyId
import com.zegreatrob.coupling.model.player.Player
Expand Down Expand Up @@ -34,7 +34,7 @@ external interface ContributionPopUpMenuProps : Props {
@Suppress("INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING")
var partyId: PartyId
var players: List<Player>
var dispatchFunc: DispatchFunc<SavePlayerCommand.Dispatcher>
var dispatchFunc: DispatchFunc<SavePartyCommand.Dispatcher>
var children: ((ReferenceElement, Player) -> Unit) -> ReactNode
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.zegreatrob.coupling.client.components.contribution

import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.ContributionPopUpMenu
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.client.components.graphing.ContributionWindow
Expand Down Expand Up @@ -38,7 +38,7 @@ external interface ContributionListContentProps : Props {
var window: ContributionWindow
var setWindow: (ContributionWindow) -> Unit
var players: List<Player>
var dispatchFunc: DispatchFunc<SavePlayerCommand.Dispatcher>
var dispatchFunc: DispatchFunc<SavePartyCommand.Dispatcher>
}

@ReactFunc
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.zegreatrob.coupling.client.components.contribution

import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.ContributionPopUpMenu
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.model.Contribution
Expand All @@ -23,7 +23,7 @@ external interface ContributionOverviewContentProps : Props {
var party: PartyDetails
var contributions: List<Contribution>
var players: List<Player>
var dispatchFunc: DispatchFunc<SavePlayerCommand.Dispatcher>
var dispatchFunc: DispatchFunc<SavePartyCommand.Dispatcher>
}

@ReactFunc
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.zegreatrob.coupling.client.components.contributor

import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.player.fire
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.action.party.fire
import com.zegreatrob.coupling.client.components.CouplingButton
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.client.components.Paths.playerConfigPath
Expand All @@ -27,7 +27,7 @@ external interface ContributorMenuProps : Props {

@Suppress("INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING")
var partyId: PartyId
var dispatchFunc: DispatchFunc<SavePlayerCommand.Dispatcher>
var dispatchFunc: DispatchFunc<SavePartyCommand.Dispatcher>
}

@ReactFunc
Expand All @@ -36,12 +36,12 @@ val ContributorMenu by nfc<ContributorMenuProps> { props ->
val navigate = useNavigate()

val createPlayer = dispatchFunc {
fire(SavePlayerCommand(partyId, contributor))
fire(SavePartyCommand(partyId = partyId, players = listOf(contributor)))
}
val addEmailToExistingPlayer = { player: Player ->
fun(_: MouseEvent<HTMLButtonElement, *>) {
val updatedPlayer = player.copy(additionalEmails = player.additionalEmails + contributor.email)
dispatchFunc { fire(SavePlayerCommand(partyId, updatedPlayer)) }()
dispatchFunc { fire(SavePartyCommand(partyId = partyId, players = listOf(updatedPlayer))) }()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.zegreatrob.coupling.client.components.pin

import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.action.party.fire
import com.zegreatrob.coupling.action.pin.DeletePinCommand
import com.zegreatrob.coupling.action.pin.SavePinCommand
import com.zegreatrob.coupling.action.pin.fire
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.client.components.Paths.pinListPath
Expand All @@ -24,7 +25,7 @@ import react.router.dom.usePrompt
import react.useState
import kotlin.js.Json

external interface PinConfigProps<D> : Props where D : DeletePinCommand.Dispatcher, D : SavePinCommand.Dispatcher {
external interface PinConfigProps<D> : Props where D : DeletePinCommand.Dispatcher, D : SavePartyCommand.Dispatcher {
var party: PartyDetails
var boost: Boost?
var pin: Pin
Expand All @@ -41,7 +42,7 @@ val PinConfig by nfc<PinConfigProps<*>> { props ->
val updatedPin = values.fromJsonDynamic<GqlPinSnapshot>().toModel()
val (redirectUrl, setRedirectUrl) = useState<String?>(null)
val onSubmit = dispatchFunc {
fire(SavePinCommand(party.id, updatedPin))
fire(SavePartyCommand(partyId = party.id, pins = listOf(updatedPin)))
reload()
}
val onRemove = if (!pinList.contains(pin)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.zegreatrob.coupling.client.components.player

import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.action.party.fire
import com.zegreatrob.coupling.action.player.DeletePlayerCommand
import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.player.fire
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.client.components.Paths.currentPairsPath
Expand All @@ -26,7 +27,7 @@ import react.useState
import kotlin.js.Json

external interface PlayerConfigProps<P> : Props
where P : SavePlayerCommand.Dispatcher, P : DeletePlayerCommand.Dispatcher {
where P : SavePartyCommand.Dispatcher, P : DeletePlayerCommand.Dispatcher {
var party: PartyDetails
var boost: Boost?
var player: Player
Expand All @@ -51,10 +52,12 @@ val PlayerConfig by nfc<PlayerConfigProps<*>> { props ->
)
val onSubmit = dispatchFunc {
fire(
SavePlayerCommand(
SavePartyCommand(
partyId = party.id,
player = updatedPlayer.copy(
additionalEmails = updatedPlayer.additionalEmails.filterNot(String::isBlank).toSet(),
players = listOf(
updatedPlayer.copy(
additionalEmails = updatedPlayer.additionalEmails.filterNot(String::isBlank).toSet(),
),
),
),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.zegreatrob.coupling.client.components.player

import com.zegreatrob.coupling.action.VoidResult
import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.model.player.Player
import com.zegreatrob.minreact.ReactFunc
Expand All @@ -13,7 +13,7 @@ import react.Props
import react.ReactNode
import react.useState

external interface UpdatingPlayerListProps<D> : Props where D : SavePlayerCommand.Dispatcher {
external interface UpdatingPlayerListProps<D> : Props where D : SavePartyCommand.Dispatcher {
var players: List<Player>
var dispatchFunc: DispatchFunc<D>
var children: (List<Player>, DispatchFunc<D>) -> ReactNode
Expand Down Expand Up @@ -62,8 +62,8 @@ private class SecretCannon(
) {
val unwrappedAction = action.unwrap()
@Suppress("USELESS_IS_CHECK")
if (unwrappedAction is SavePlayerCommand && result == VoidResult.Accepted) {
addPlayer(unwrappedAction.player)
if (unwrappedAction is SavePartyCommand && result == VoidResult.Accepted) {
unwrappedAction.players.forEach(addPlayer)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.zegreatrob.coupling.client.components.contributor

import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.Paths.playerConfigPath
import com.zegreatrob.coupling.client.components.StubDispatcher
import com.zegreatrob.coupling.client.components.TestRouter
Expand Down Expand Up @@ -84,17 +84,21 @@ class ContributorMenuTest {
} verify {
stubDispatcher.receivedActions
.map {
if (it !is SavePlayerCommand) {
if (it !is SavePartyCommand) {
it
} else {
it.copy(player = it.player.copy(id = PlayerId("generated".toNotBlankString().getOrThrow())))
it.copy(
players = it.players.map { player ->
player.copy(id = PlayerId("generated".toNotBlankString().getOrThrow()))
},
)
}
}
.assertIsEqualTo(
listOf(
SavePlayerCommand(
partyId,
contributor.copy(id = PlayerId("generated".toNotBlankString().getOrThrow())),
SavePartyCommand(
partyId = partyId,
players = listOf(contributor.copy(id = PlayerId("generated".toNotBlankString().getOrThrow()))),
),
),
)
Expand Down Expand Up @@ -122,9 +126,11 @@ class ContributorMenuTest {
stubDispatcher.receivedActions
.assertIsEqualTo(
listOf(
SavePlayerCommand(
SavePartyCommand(
partyId = partyId,
player = targetPlayer.copy(additionalEmails = targetPlayer.additionalEmails + contributor.email),
players = listOf(
targetPlayer.copy(additionalEmails = targetPlayer.additionalEmails + contributor.email),
),
),
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,11 @@ class PartyConfigTest {
stubDispatcher.receivedActions
.filterIsInstance<SavePartyCommand>()
.first()
.party.id.value.toString().run {
.party
?.id
?.value
.toString()
.run {
assertIsNotEqualTo("")
assertIsEqualTo(automatedPartyId)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.zegreatrob.coupling.client.components.pin

import com.zegreatrob.coupling.action.pin.SavePinCommand
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.client.components.DispatchFunc
import com.zegreatrob.coupling.client.components.StubDispatcher
import com.zegreatrob.coupling.client.components.assertNotNull
Expand Down Expand Up @@ -100,6 +100,8 @@ class PinConfigEditorTest {
act { fireEvent.submit(screen.getByRole("form")) }
} verify {
stubDispatcher.receivedActions
.assertIsEqualTo(listOf(SavePinCommand(party.id, pin.copy(name = newName, icon = newIcon))))
.assertIsEqualTo(
listOf(SavePartyCommand(partyId = party.id, pins = listOf(pin.copy(name = newName, icon = newIcon)))),
)
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.zegreatrob.coupling.client.components.player

import com.zegreatrob.coupling.action.VoidResult
import com.zegreatrob.coupling.action.party.SavePartyCommand
import com.zegreatrob.coupling.action.player.DeletePlayerCommand
import com.zegreatrob.coupling.action.player.SavePlayerCommand
import com.zegreatrob.coupling.client.components.StubDispatcher
import com.zegreatrob.coupling.client.components.TestRouter
import com.zegreatrob.coupling.client.components.assertNotNull
Expand Down Expand Up @@ -71,9 +71,9 @@ class PlayerConfigTest {
} exercise {
act { actor.click(screen.getByRole("button", RoleOptions(name = "Save"))) }
} verify {
val expectedCommand = SavePlayerCommand(
val expectedCommand = SavePartyCommand(
partyId = party.id,
player = player.copy(avatarType = AvatarType.DicebearAdventurer),
players = listOf(player.copy(avatarType = AvatarType.DicebearAdventurer)),
)
stubDispatcher.receivedActions
.assertIsEqualTo(listOf(expectedCommand))
Expand Down Expand Up @@ -105,9 +105,9 @@ class PlayerConfigTest {
actor.click(screen.getByRole("button", RoleOptions(name = "Save")))
}
} verify {
val expectedCommand = SavePlayerCommand(
val expectedCommand = SavePartyCommand(
partyId = party.id,
player = player.copy(avatarType = null),
players = listOf(player.copy(avatarType = null)),
)
stubDispatcher.receivedActions
.assertIsEqualTo(listOf(expectedCommand))
Expand Down Expand Up @@ -195,9 +195,9 @@ class PlayerConfigTest {
} exercise {
actor.click(screen.getByRole("button", RoleOptions(name = "Save")))
} verify {
val expectedCommand = SavePlayerCommand(
val expectedCommand = SavePartyCommand(
partyId = party.id,
player = player.copy(additionalEmails = setOf(secondEmail)),
players = listOf(player.copy(additionalEmails = setOf(secondEmail))),
)
stubDispatcher.receivedActions
.assertIsEqualTo(listOf(expectedCommand))
Expand Down Expand Up @@ -228,7 +228,7 @@ class PlayerConfigTest {
act { actor.click(screen.getByRole("button", RoleOptions(name = "Save"))) }
} verify {
stubDispatcher.receivedActions
.assertIsEqualTo(listOf(SavePlayerCommand(partyId = party.id, player = player)))
.assertIsEqualTo(listOf(SavePartyCommand(partyId = party.id, players = listOf(player))))
}

@Test
Expand Down Expand Up @@ -282,7 +282,7 @@ class PlayerConfigTest {
fireEvent.submit(screen.getByRole("form"))
act { altStubDispatcher.onActionReturn(VoidResult.Accepted) }
} verify { action ->
action.assertIsEqualTo(SavePlayerCommand(party.id, player.copy(name = "nonsense")))
action.assertIsEqualTo(SavePartyCommand(partyId = party.id, players = listOf(player.copy(name = "nonsense"))))
reloaderSpy.callCount.assertIsEqualTo(1)
}

Expand Down
Loading