Skip to content

Commit

Permalink
Optimistic update missing return and doc fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
k-ode committed Dec 5, 2024
1 parent b0daa07 commit 2f9a147
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,10 +156,10 @@ const MesssageView = observer((props) => {

```tsx
import { types } from 'mobx-state-tree';
import { createQuery, RequestModel } from 'mst-query';
import { createInfiniteQuery, RequestModel } from 'mst-query';
import { MessageModel } from './models';

const MessagesQuery = createQuery('MessagesQuery', {
const MessagesQuery = createInfiniteQuery('MessagesQuery', {
data: types.model({ items: types.array(types.reference(MessageModel)) }),
pagination: types.model({ offset: types.number, limit: types.number }),
endpoint({ request }) {
Expand All @@ -175,13 +175,13 @@ const MessageStore = createModelStore('MessageStore', MessageModel).props({
```

```tsx
import { useQuery } from 'mst-query';
import { useInfiniteQuery } from 'mst-query';
import { observer } from 'mobx-react';
import { MessageListQuery } from './MessageListQuery';

const MesssageListView = observer((props) => {
const [offset, setOffset] = useState(0);
const { data, isFetchingMore, query } = useQuery(messageStore.messagesQuery, {
const { data, isFetchingMore, query } = useInfiniteQuery(messageStore.messagesQuery, {
request: { filter: '' },
pagination: { offset, limit: 20 },
});
Expand Down Expand Up @@ -246,9 +246,11 @@ const AddMessage = observer((props) => {
onClick={() => {
addMessage({
request: { message },
optimisticResponse: {
id: 'temp' + Math.random(),
message,
optimisticUpdate() {
return {
id: 'temp' + Math.random(),
message,
};
},
});
setMessage('');
Expand Down
7 changes: 6 additions & 1 deletion packages/mst-query/src/MstQueryHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -292,11 +292,16 @@ export class MstQueryHandler {
mutate(options: any = {}): Promise<() => any> {
const { optimisticUpdate } = options;
let updateRecorder: IPatchRecorder;
let result: any;
if (optimisticUpdate) {
updateRecorder = recordPatches(getRoot(this.model));
optimisticUpdate();
result = optimisticUpdate();
updateRecorder.stop();
}
if (result) {
const data = this.prepareData(result);
this.notify({ onMutate: true }, data, this.model);
}
return this.run(options).then(
(result) => this.onSuccess(result, { updateRecorder }),
(err) => this.onError(err, { updateRecorder }),
Expand Down
2 changes: 1 addition & 1 deletion packages/mst-query/src/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ export function createMutation<TData extends IAnyType, TRequest extends IAnyType
return next();
}) as <TResult = any>(options: {
request: SnapshotIn<TRequest>;
optimisticUpdate?: () => void;
optimisticUpdate?: () => any;
meta?: { [key: string]: any };
}) => Promise<ReturnData<Instance<TData>, TResult>>,
abort: self.__MstQueryHandler.abort,
Expand Down

0 comments on commit 2f9a147

Please sign in to comment.