relay-utils
Version:
Utilities for working with Relay (modern) in general, and the Relay store in particular.
53 lines (49 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createMissingFieldsHandler = createMissingFieldsHandler;
/**
* A small abstraction over the missingFieldHandlers prop on Environment.
* Lets your set up own strategies for resolving missing fields in responses.
*/
function processHandlers(handlers, field, record, args, store) {
for (var i = 0; i <= handlers.length - 1; i += 1) {
var handledVal = handlers[i]({
name: field.name,
alias: field.alias,
fieldArgs: field.args || null,
args: args,
ownerTypename: record && record.__typename && typeof record.__typename === 'string' ? record.__typename : null,
owner: record,
store: store
});
if (typeof handledVal !== 'undefined') {
return handledVal;
}
}
}
function createMissingFieldsHandler(config) {
return [{
kind: 'scalar',
handle: function handle(field, record, args, store) {
if (config.handleScalarField) {
return processHandlers(config.handleScalarField, field, record, args, store);
}
}
}, {
kind: 'linked',
handle: function handle(field, record, args, store) {
if (config.handleLinkedField) {
return processHandlers(config.handleLinkedField, field, record, args, store);
}
}
}, {
kind: 'pluralLinked',
handle: function handle(field, record, args, store) {
if (config.handlePluralLinkedField) {
return processHandlers(config.handlePluralLinkedField, field, record, args, store);
}
}
}];
}