Skip to content

__hydrate__ action does not work for non-combined producers #27

@JoelBrd

Description

@JoelBrd
local function createPetProducer()
    return Reflex.createProducer({
        cats = { "meow" },
        dogs = {},
    }, {
        addCat = function(state, cat)
            local nextState = table.clone(state)

            local nextStateCats = table.clone(nextState.cats)
            nextState.cats = nextStateCats

            table.insert(nextState.cats, cat)

            return nextState
        end,
        addDog = function(state, dog)
            local nextState = table.clone(state)

            local nextStateDogs = table.clone(nextState.dogs)
            nextState.dogs = nextStateDogs

            table.insert(nextState.dogs, dog)

            return nextState
        end,
    })
end

local function testReflex()
    local petProducer = createPetProducer()
    petProducer.addDog("woof")

    local broadcaster = Reflex.createBroadcaster({
        producers = {
            pets = petProducer,
        },
        dispatch = function(player, actions)
            print("dispatch", player, actions)
        end,
    })
    petProducer:applyMiddleware(broadcaster.middleware)

    broadcaster:start("MockPlayer")

    print("state", petProducer:getState())
end

testReflex()

image

  • Notice that the data for the __hydrate__ action is empty, when the state is evidently non-empty

The issue is getSharedState() : 28 in https://github.com/littensy/reflex/blob/master/src/broadcast/createBroadcaster.lua

  • Function assumes a producer that has been created by combineProducers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions