UNPKG

@jameshclrk/rxdb-hooks

Version:

React hooks for integrating with RxDB

42 lines (41 loc) 1.76 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var useRxCollection_1 = __importDefault(require("./useRxCollection")); var useRxQuery_1 = __importDefault(require("./useRxQuery")); /** * Convenience wrapper around useRxQuery that expects a collection name * & a query constructor function */ function useRxData(dbName, collectionName, queryConstructor, options) { if (options === void 0) { options = {}; } var collection = (0, useRxCollection_1.default)(dbName, collectionName); var query = (0, react_1.useMemo)(function () { if (!collection || typeof queryConstructor !== 'function') { return null; } return queryConstructor(collection); }, [collection, queryConstructor]); // get around type-narrowing issue // TODO: find a better workaround return options.json ? // eslint-disable-next-line react-hooks/rules-of-hooks (0, useRxQuery_1.default)(query, __assign(__assign({}, options), { json: true })) : // eslint-disable-next-line react-hooks/rules-of-hooks (0, useRxQuery_1.default)(query, __assign(__assign({}, options), { json: false })); } exports.default = useRxData;