[relay-runtime] Correct typing for default missing field handlers (#40361)

* Correct typing for default missing field handlers

* default export
This commit is contained in:
Ethan Veres
2019-11-15 08:21:30 +01:00
committed by Eloy Durán
parent d36a3b44e4
commit 9f57df89f3
3 changed files with 45 additions and 11 deletions
+3 -3
View File
@@ -170,9 +170,9 @@ export { readInlineData } from './lib/store/readInlineData';
// Extensions
export { RelayDefaultHandlerProvider as DefaultHandlerProvider } from './lib/handlers/RelayDefaultHandlerProvider';
export {
missingViewerFieldHandler as DefaultMissingFieldHandlers,
} from './lib/handlers/RelayDefaultMissingFieldHandlers';
import DefaultMissingFieldHandlers from './lib/handlers/RelayDefaultMissingFieldHandlers';
export { DefaultMissingFieldHandlers };
import * as ConnectionHandler from './lib/handlers/connection/RelayConnectionHandler';
export { ConnectionHandler };
@@ -1,3 +1,4 @@
import { MissingFieldHandler } from '../store/RelayStoreTypes';
export const missingViewerFieldHandler: MissingFieldHandler;
declare const DefaultMissingFieldHandlers: MissingFieldHandler[];
export default DefaultMissingFieldHandlers;
+40 -7
View File
@@ -1,16 +1,19 @@
import {
ConcreteRequest,
ConnectionHandler,
DefaultMissingFieldHandlers,
Environment,
Network,
RecordSource,
Store,
ConnectionHandler,
commitLocalUpdate,
QueryResponseCache,
ROOT_ID,
ROOT_TYPE,
RecordProxy,
RecordSource,
RecordSourceSelectorProxy,
RelayNetworkLoggerTransaction,
Store,
commitLocalUpdate,
createRelayNetworkLogger,
RecordSourceSelectorProxy, RecordProxy,
} from 'relay-runtime';
const source = new RecordSource();
@@ -48,6 +51,36 @@ const environment = new Environment({
handlerProvider, // Can omit.
network,
store,
missingFieldHandlers: [
...DefaultMissingFieldHandlers,
// Example from https://relay.dev/docs/en/experimental/a-guided-tour-of-relay
{
handle(field, record, argValues) {
if (
record != null &&
record.__typename === ROOT_TYPE &&
field.name === 'user' &&
argValues.hasOwnProperty('id')
) {
// If field is user(id: $id), look up the record by the value of $id
return argValues.id;
}
if (
record != null &&
record.__typename === ROOT_TYPE &&
field.name === 'story' &&
argValues.hasOwnProperty('story_id')
) {
// If field is story(story_id: $story_id), look up the record by the
// value of $story_id.
return argValues.story_id;
}
return null;
},
kind: 'linked',
},
],
});
// ~~~~~~~~~~~~~~~~~~~~~
@@ -83,8 +116,8 @@ interface MessageEdge {
interface SendConversationMessageMutationResponse {
readonly sendConversationMessage: {
readonly messageEdge: MessageEdge & {
error: string
}
error: string;
};
};
}