Skip to content

Commit 8234731

Browse files
committed
update
1 parent 90d2588 commit 8234731

2 files changed

Lines changed: 16 additions & 13 deletions

File tree

crates/bindings-typescript/src/solid-js/SpacetimeDBProvider.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import {
22
DbConnectionBuilder,
33
type DbConnectionImpl,
44
} from '../sdk/db_connection_impl';
5-
import { createSignal, createEffect, onCleanup, createMemo } from 'solid-js';
5+
import { createEffect, onCleanup, createMemo } from 'solid-js';
6+
import { createStore } from 'solid-js/store';
67
import { SpacetimeDBContext } from './useSpacetimeDB';
78
import type { ConnectionState } from './connection_state';
89
import { ConnectionId } from '../lib/connection_id';
@@ -36,8 +37,7 @@ export function SpacetimeDBProvider<
3637
connectionError: undefined,
3738
};
3839

39-
const [state, setState] =
40-
createSignal<ManagerConnectionState>(fallbackState);
40+
const [state, setState] = createStore<ManagerConnectionState>(fallbackState);
4141

4242
// Subscription to ConnectionManager
4343
createEffect(() => {
@@ -60,10 +60,14 @@ export function SpacetimeDBProvider<
6060
const getConnection = () =>
6161
ConnectionManager.getConnection<DbConnection>(key());
6262

63-
const contextValue = createMemo<ConnectionState>(() => ({
64-
...state(),
63+
const contextValue: ConnectionState = {
64+
get isActive() { return state.isActive; },
65+
get identity() { return state.identity; },
66+
get token() { return state.token; },
67+
get connectionId() { return state.connectionId; },
68+
get connectionError() { return state.connectionError; },
6569
getConnection,
66-
}));
70+
};
6771

6872
// retain / release lifecycle
6973
createEffect(() => {
@@ -76,7 +80,7 @@ export function SpacetimeDBProvider<
7680

7781

7882
return SpacetimeDBContext.Provider({
79-
value: contextValue(),
83+
value: contextValue,
8084
children: props.children,
8185
});
8286
}

crates/bindings-typescript/src/solid-js/useTable.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
onCleanup,
55
createMemo,
66
} from 'solid-js';
7+
import { createStore, reconcile } from 'solid-js/store';
78
import { useSpacetimeDB } from './useSpacetimeDB';
89
import { type EventContextInterface } from '../sdk/db_connection_impl';
910
import type { ConnectionState } from './connection_state';
@@ -55,9 +56,7 @@ export function useTable<TableDef extends UntypedTableDef>(
5556

5657
const connectionState: ConnectionState = useSpacetimeDB();
5758

58-
const [rows, setRows] = createSignal<
59-
readonly Prettify<UseTableRowType>[]
60-
>([]);
59+
const [rows, setRows] = createStore<Prettify<UseTableRowType>[]>([]);
6160

6261
const [isReady, setIsReady] = createSignal(false);
6362

@@ -66,7 +65,7 @@ export function useTable<TableDef extends UntypedTableDef>(
6665
const computeSnapshot = () => {
6766
const connection = connectionState.getConnection();
6867
if (!connection) {
69-
setRows([]);
68+
setRows(reconcile([]));
7069
setIsReady(false);
7170
return;
7271
}
@@ -79,7 +78,7 @@ export function useTable<TableDef extends UntypedTableDef>(
7978
)
8079
: Array.from(table.iter());
8180

82-
setRows(result as Prettify<UseTableRowType>[]);
81+
setRows(reconcile(result as Prettify<UseTableRowType>[]));
8382
setIsReady(true);
8483
};
8584

@@ -175,5 +174,5 @@ export function useTable<TableDef extends UntypedTableDef>(
175174
});
176175
});
177176

178-
return createMemo(() => [rows(), isReady()] as const);
177+
return createMemo(() => [rows, isReady()] as const);
179178
}

0 commit comments

Comments
 (0)