Skip to content
Merged
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
12 changes: 7 additions & 5 deletions crates/bindings-typescript/examples/basic-react/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
import { useState } from 'react';
import { DbConnection, Person } from './module_bindings';
import { useSpacetimeDB, useTable } from 'spacetimedb/react';
import { tables, reducers } from './module_bindings';
import { useSpacetimeDB, useTable, useReducer } from 'spacetimedb/react';

function App() {
const [name, setName] = useState('');

const conn = useSpacetimeDB<DbConnection>();
const conn = useSpacetimeDB();
const { isActive: connected } = conn;

// Subscribe to all people in the database
const { rows: people } = useTable<DbConnection, Person>('person');
const [people] = useTable(tables.person);

const addReducer = useReducer(reducers.add);

const addPerson = (e: React.FormEvent) => {
e.preventDefault();
if (!name.trim() || !connected) return;

// Call the add reducer
conn.reducers.add(name);
addReducer({ name: name });
setName('');
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { SpacetimeDBProvider } from 'spacetimedb/react';
import { DbConnection, ErrorContext } from './module_bindings/index.ts';

const HOST = import.meta.env.VITE_SPACETIMEDB_HOST ?? 'ws://localhost:3000';
const DB_NAME = import.meta.env.VITE_SPACETIMEDB_DB_NAME ?? 'my-db';
const DB_NAME = import.meta.env.VITE_SPACETIMEDB_DB_NAME ?? 'basic-react';

const onConnect = (_conn: DbConnection, identity: Identity, token: string) => {
localStorage.setItem('auth_token', token);
Expand Down

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

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

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

2 changes: 1 addition & 1 deletion crates/bindings-typescript/src/sdk/client_api/index.ts

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

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

2 changes: 1 addition & 1 deletion crates/codegen/src/typescript.rs
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ fn table_module_name(table_name: &Identifier) -> String {
}

fn reducer_args_type_name(reducer_name: &Identifier) -> String {
reducer_name.deref().to_case(Case::Pascal)
reducer_name.deref().to_case(Case::Pascal) + "Reducer"
}

fn procedure_args_type_name(reducer_name: &Identifier) -> String {
Expand Down
82 changes: 41 additions & 41 deletions crates/codegen/tests/snapshots/codegen__codegen_typescript.snap
Original file line number Diff line number Diff line change
Expand Up @@ -252,34 +252,34 @@ import {
} from "spacetimedb";

// Import and reexport all reducer arg types
import Add from "./add_reducer";
export { Add };
import AddPlayer from "./add_player_reducer";
export { AddPlayer };
import AddPrivate from "./add_private_reducer";
export { AddPrivate };
import AssertCallerIdentityIsModuleIdentity from "./assert_caller_identity_is_module_identity_reducer";
export { AssertCallerIdentityIsModuleIdentity };
import ClientConnected from "./client_connected_reducer";
export { ClientConnected };
import DeletePlayer from "./delete_player_reducer";
export { DeletePlayer };
import DeletePlayersByName from "./delete_players_by_name_reducer";
export { DeletePlayersByName };
import ListOverAge from "./list_over_age_reducer";
export { ListOverAge };
import LogModuleIdentity from "./log_module_identity_reducer";
export { LogModuleIdentity };
import QueryPrivate from "./query_private_reducer";
export { QueryPrivate };
import RepeatingTest from "./repeating_test_reducer";
export { RepeatingTest };
import SayHello from "./say_hello_reducer";
export { SayHello };
import Test from "./test_reducer";
export { Test };
import TestBtreeIndexArgs from "./test_btree_index_args_reducer";
export { TestBtreeIndexArgs };
import AddReducer from "./add_reducer";
export { AddReducer };
import AddPlayerReducer from "./add_player_reducer";
export { AddPlayerReducer };
import AddPrivateReducer from "./add_private_reducer";
export { AddPrivateReducer };
import AssertCallerIdentityIsModuleIdentityReducer from "./assert_caller_identity_is_module_identity_reducer";
export { AssertCallerIdentityIsModuleIdentityReducer };
import ClientConnectedReducer from "./client_connected_reducer";
export { ClientConnectedReducer };
import DeletePlayerReducer from "./delete_player_reducer";
export { DeletePlayerReducer };
import DeletePlayersByNameReducer from "./delete_players_by_name_reducer";
export { DeletePlayersByNameReducer };
import ListOverAgeReducer from "./list_over_age_reducer";
export { ListOverAgeReducer };
import LogModuleIdentityReducer from "./log_module_identity_reducer";
export { LogModuleIdentityReducer };
import QueryPrivateReducer from "./query_private_reducer";
export { QueryPrivateReducer };
import RepeatingTestReducer from "./repeating_test_reducer";
export { RepeatingTestReducer };
import SayHelloReducer from "./say_hello_reducer";
export { SayHelloReducer };
import TestReducer from "./test_reducer";
export { TestReducer };
import TestBtreeIndexArgsReducer from "./test_btree_index_args_reducer";
export { TestBtreeIndexArgsReducer };

// Import and reexport all procedure arg types
import * as GetMySchemaViaHttpProcedure from "./get_my_schema_via_http_procedure";
Expand Down Expand Up @@ -518,19 +518,19 @@ const tablesSchema = __schema(

/** The schema information for all reducers in this module. This is defined the same way as the reducers would have been defined in the server, except the body of the reducer is omitted in code generation. */
const reducersSchema = __reducers(
__reducerSchema("add", Add),
__reducerSchema("add_player", AddPlayer),
__reducerSchema("add_private", AddPrivate),
__reducerSchema("assert_caller_identity_is_module_identity", AssertCallerIdentityIsModuleIdentity),
__reducerSchema("delete_player", DeletePlayer),
__reducerSchema("delete_players_by_name", DeletePlayersByName),
__reducerSchema("list_over_age", ListOverAge),
__reducerSchema("log_module_identity", LogModuleIdentity),
__reducerSchema("query_private", QueryPrivate),
__reducerSchema("repeating_test", RepeatingTest),
__reducerSchema("say_hello", SayHello),
__reducerSchema("test", Test),
__reducerSchema("test_btree_index_args", TestBtreeIndexArgs),
__reducerSchema("add", AddReducer),
__reducerSchema("add_player", AddPlayerReducer),
__reducerSchema("add_private", AddPrivateReducer),
__reducerSchema("assert_caller_identity_is_module_identity", AssertCallerIdentityIsModuleIdentityReducer),
__reducerSchema("delete_player", DeletePlayerReducer),
__reducerSchema("delete_players_by_name", DeletePlayersByNameReducer),
__reducerSchema("list_over_age", ListOverAgeReducer),
__reducerSchema("log_module_identity", LogModuleIdentityReducer),
__reducerSchema("query_private", QueryPrivateReducer),
__reducerSchema("repeating_test", RepeatingTestReducer),
__reducerSchema("say_hello", SayHelloReducer),
__reducerSchema("test", TestReducer),
__reducerSchema("test_btree_index_args", TestBtreeIndexArgsReducer),
);

/** The schema information for all procedures in this module. This is defined the same way as the procedures would have been defined in the server. */
Expand Down