@r3l/app
Version:
96 lines (79 loc) • 2.63 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useUnread = useUnread;
exports.useTotalUnread = useTotalUnread;
exports.useMembers = useMembers;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _reactRedux = require("react-redux");
var _reactHooks = require("@apollo/react-hooks");
var _queries = require("./queries");
var _react = require("react");
function useUnread(community, active) {
var myMemberships = useMembers();
var membership = myMemberships && myMemberships.find(function (m) {
return m.communityId === community._id;
});
var unread = membership && membership.unread; // useSubscribeToUnread(membership);
useResetUnread(unread, membership, active);
return unread;
}
function useTotalUnread() {
var myMemberships = useMembers();
return myMemberships.reduce(function (a, m) {
return a + m.unread;
}, 0);
}
function useMembers() {
var user = (0, _reactRedux.useSelector)(function (state) {
return state.auth.user;
});
var _useQuery = (0, _reactHooks.useQuery)(_queries.MY_MEMBERSHIPS, {
skip: !user,
ssr: false
}),
_useQuery$data = _useQuery.data,
data = _useQuery$data === void 0 ? {
myMemberships: []
} : _useQuery$data;
var myMemberships = data.myMemberships;
return myMemberships;
} // export function useSubscribeToUnread(membership) {
// const myMemberships = useMembers();
// const client = useApolloClient();
// const { communityId } = membership || {};
// useSubscription(INC_UNREAD, {
// ssr: false,
// variables: { communities: [communityId] },
// onSubscriptionData: () => {
// membership.unread++;
// client.writeQuery({ query: MY_MEMBERSHIPS, data: { myMemberships } });
// },
// });
// }
function useResetUnread(unread, membership, active) {
var client = (0, _reactHooks.useApolloClient)();
var _useMutation = (0, _reactHooks.useMutation)(_queries.CLEAR_UNREAD),
_useMutation2 = (0, _slicedToArray2.default)(_useMutation, 1),
clearUnread = _useMutation2[0];
var myMemberships = useMembers();
(0, _react.useEffect)(function () {
if (unread && active) {
membership.unread = 0;
client.writeQuery({
query: _queries.MY_MEMBERSHIPS,
data: {
myMemberships: myMemberships
}
});
clearUnread({
variables: {
_id: membership._id
}
});
}
}, [unread, active]);
}
//# sourceMappingURL=hooks.js.map