There are several changes required in order for MetaMaps to be accepted into the MetaGame codebase. While the most important tasks involve QA and formatting. This is also a good time to augment the existing implementation with changes we are planning in the future.
The Maps
table needs to be regenerated. It would be a good idea to reset all diffs in Hasura and update it to use Player.id instead of an Ethereum address. The address that is pulled from 3box should be used to find the player's id on MetaGame.
-
Reset all diffs in Hasura.
-
Have maps associated with
Player.id
instead of an Ethereum address. -
Map data should be
json
instead oftext
.
The current implementation of Redux needs to be updated to: https://redux-toolkit.js.org/. There are general refactors required such as needing more efficient mappings for component renders. This would be pretty important for larger map datasets.
-
Refactor to redux toolkit.
-
Improve component renderings such as not have components inside redux stores.
We should be utilizing the @metafam/ds component libraries. We may want to also implement new context specific components for example the shapes and context menus used in metamaps.
-
Update and migrate components to
@metafam/ds
. -
Copy theme elements from other MetaGame's designs. Can use Figma as a reference: https://www.figma.com/file/RWVfMGvXDAX74fQexze8uO/Meta-Game-Copy-Copy?node-id=58%3A2
-
Improve overall code structure to
jsx/tsx
.
As per comments from @heterotic, we should have a z component. Where one can toggle the z index of the map. This would be a +/- button with an input at the top of the map.
-
Create a
z
layer for maps. -
Maps can be toggled with a
-/+
button at the top with a number input. -
Map renders are based on the
z
layer.
Since it looks like dysbulic has got a lot of this going in the most recent PR, I would like to propose that the next steps we take in developing the metamaps involve publishing this Introspection Query to the 1st Class as a method to run when the default user loads the default metamap and selects the defualt system, so that it can use the default connection from the default user to run the query against our local data source in the 2nd Class:
query IntrospectionQuery {
__schema {