Skip to content

Commit 3499ca5

Browse files
Merge pull request #286 from dojoengine/feat/readme
feat: new readme
2 parents 26b77b3 + 509f5e9 commit 3499ca5

File tree

19 files changed

+658
-381
lines changed

19 files changed

+658
-381
lines changed

examples/example-vite-react-sdk/src/App.tsx

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { useEffect, useMemo } from "react";
22
import { SDK, createDojoStore } from "@dojoengine/sdk";
3-
import { Schema } from "./bindings.ts";
4-
5-
import { useDojo } from "./useDojo.tsx";
63
import { getEntityIdFromKeys } from "@dojoengine/utils";
74
import { addAddressPadding } from "starknet";
85

6+
import { Models, Schema } from "./bindings.ts";
7+
import { useDojo } from "./useDojo.tsx";
8+
import useModel from "./useModel.tsx";
9+
910
export const useDojoStore = createDojoStore<Schema>();
1011

1112
function App({ db }: { db: SDK<Schema> }) {
@@ -109,13 +110,8 @@ function App({ db }: { db: SDK<Schema> }) {
109110
fetchEntities();
110111
}, [db, account?.account.address]);
111112

112-
const position = useMemo(() => {
113-
return entities[entityId]?.models?.dojo_starter.Position;
114-
}, [entities]);
115-
116-
const moves = useMemo(() => {
117-
return entities[entityId]?.models?.dojo_starter.Moves;
118-
}, [entities]);
113+
const moves = useModel(entityId, Models.Moves);
114+
const position = useModel(entityId, Models.Position);
119115

120116
return (
121117
<div className="bg-black min-h-screen w-full p-4 sm:p-8">

examples/example-vite-react-sdk/src/bindings.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ type Schema = {
3939
};
4040
};
4141

42+
enum Models {
43+
Moves = "dojo_starter-Moves",
44+
DirectionsAvailable = "dojo_starter-DirectionsAvailable",
45+
Position = "dojo_starter-Position",
46+
}
47+
4248
const schema: Schema = {
4349
dojo_starter: {
4450
Moves: {
@@ -62,4 +68,4 @@ const schema: Schema = {
6268
};
6369

6470
export type { Schema, Moves, DirectionsAvailable, Position, Vec2 };
65-
export { Direction, schema };
71+
export { Direction, schema, Models };

examples/example-vite-react-sdk/src/main.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { init } from "@dojoengine/sdk";
88
import { Schema, schema } from "./bindings.ts";
99
import { dojoConfig } from "../dojoConfig.ts";
1010
import { DojoContextProvider } from "./DojoContext.tsx";
11-
import { setupBurner } from "./setupBurner.tsx";
11+
import { setupBurnerManager } from "@dojoengine/create-burner";
1212

1313
async function main() {
1414
const db = await init<Schema>(
@@ -20,20 +20,20 @@ async function main() {
2020
worldAddress: dojoConfig.manifest.world.address,
2121
},
2222
domain: {
23-
name: "Example",
23+
name: "WORLD_NAME",
2424
version: "1.0",
25-
chainId: "your-chain-id",
25+
chainId: "KATANA",
2626
revision: "1",
2727
},
2828
},
2929
schema
3030
);
3131

32-
const burnerManager = await setupBurner(dojoConfig);
33-
3432
createRoot(document.getElementById("root")!).render(
3533
<StrictMode>
36-
<DojoContextProvider burnerManager={burnerManager}>
34+
<DojoContextProvider
35+
burnerManager={await setupBurnerManager(dojoConfig)}
36+
>
3737
<App db={db} />
3838
</DojoContextProvider>
3939
</StrictMode>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { useDojoStore } from "./App";
2+
import { Schema } from "./bindings";
3+
4+
/**
5+
* Custom hook to retrieve a specific model for a given entityId within a specified namespace.
6+
*
7+
* @param entityId - The ID of the entity.
8+
* @param model - The model to retrieve, specified as a string in the format "namespace-modelName".
9+
* @returns The model structure if found, otherwise undefined.
10+
*/
11+
function useModel<N extends keyof Schema, M extends keyof Schema[N] & string>(
12+
entityId: string,
13+
model: `${N}-${M}`
14+
): Schema[N][M] | undefined {
15+
const [namespace, modelName] = model.split("-") as [N, M];
16+
17+
// Select only the specific model data for the given entityId
18+
const modelData = useDojoStore(
19+
(state) =>
20+
state.entities[entityId]?.models?.[namespace]?.[modelName] as
21+
| Schema[N][M]
22+
| undefined
23+
);
24+
25+
return modelData;
26+
}
27+
28+
export default useModel;

media/dojo-mark-full-dark.svg

+8
Loading

package.json

+5-8
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,16 @@
1010
"docs": "npx typedoc --out docs",
1111
"prepare": "husky install"
1212
},
13-
"dependencies": {
14-
"@commitlint/cli": "^18.4.4",
15-
"@commitlint/config-conventional": "^18.4.4",
16-
"@ianvs/prettier-plugin-sort-imports": "^4.3.1",
17-
"react": "^18.2.0"
18-
},
1913
"devDependencies": {
20-
"husky": "^9.0.11",
14+
"husky": "^9.1.6",
2115
"lerna": "^8.1.5",
2216
"prettier": "^3.3.3",
2317
"tsup": "^8.1.0",
2418
"typedoc": "^0.26.7",
2519
"typedoc-material-theme": "^1.1.0",
26-
"typedoc-plugin-coverage": "^3.3.0"
20+
"typedoc-plugin-coverage": "^3.3.0",
21+
"@commitlint/cli": "^18.4.4",
22+
"@commitlint/config-conventional": "^18.4.4",
23+
"@ianvs/prettier-plugin-sort-imports": "^4.3.1"
2724
}
2825
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export { BurnerManager } from "./burnerManager";
22
export { PredeployedManager } from "./predeployedManager";
33
export { prefundAccount } from "./prefundAccount";
4+
export { setupBurnerManager } from "./setupBurnerManager";

examples/example-vite-react-sdk/src/setupBurner.tsx renamed to packages/create-burner/src/manager/setupBurnerManager.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { DojoConfig } from "@dojoengine/core";
2-
import { BurnerManager } from "@dojoengine/create-burner";
32
import { Account, RpcProvider } from "starknet";
3+
import { BurnerManager } from "..";
44

5-
export const setupBurner = async (config: DojoConfig) => {
5+
export const setupBurnerManager = async (config: DojoConfig) => {
66
const burnerManager = new BurnerManager({
77
masterAccount: new Account(
88
{

packages/create-dojo/bin/index.d.ts

-1
This file was deleted.

packages/create-dojo/bin/index.js

-83
This file was deleted.

0 commit comments

Comments
 (0)