@trycourier/react-hooks
Advanced tools
Comparing version 1.16.1-internal.fd096a7.0 to 1.17.0
@@ -165,2 +165,24 @@ "use strict"; | ||
case "inbox/MARK_MESSAGE_ARCHIVED": | ||
{ | ||
var _state$unreadMessageC3, _state$messages5; | ||
var _unreadMessageCount2 = (_state$unreadMessageC3 = state.unreadMessageCount) !== null && _state$unreadMessageC3 !== void 0 ? _state$unreadMessageC3 : 0; | ||
var _newMessages = state === null || state === void 0 ? void 0 : (_state$messages5 = state.messages) === null || _state$messages5 === void 0 ? void 0 : _state$messages5.filter(function (message) { | ||
var isMatching = message.messageId === action.payload.messageId; | ||
if (isMatching && !message.read) { | ||
_unreadMessageCount2 = Math.max(_unreadMessageCount2 - 1, 0); | ||
} | ||
return !isMatching; | ||
}); | ||
return _objectSpread(_objectSpread({}, state), {}, { | ||
messages: _newMessages, | ||
unreadMessageCount: _unreadMessageCount2 | ||
}); | ||
} | ||
case "inbox/FETCH_MESSAGES/ERROR": | ||
@@ -175,6 +197,6 @@ { | ||
{ | ||
var _state$unreadMessageC3, _action$payload$messa, _action$payload$data; | ||
var _state$unreadMessageC4, _action$payload$messa, _action$payload$data; | ||
return _objectSpread(_objectSpread({}, state), {}, { | ||
unreadMessageCount: ((_state$unreadMessageC3 = state === null || state === void 0 ? void 0 : state.unreadMessageCount) !== null && _state$unreadMessageC3 !== void 0 ? _state$unreadMessageC3 : 0) + 1, | ||
unreadMessageCount: ((_state$unreadMessageC4 = state === null || state === void 0 ? void 0 : state.unreadMessageCount) !== null && _state$unreadMessageC4 !== void 0 ? _state$unreadMessageC4 : 0) + 1, | ||
messages: [{ | ||
@@ -194,5 +216,5 @@ created: new Date().getTime(), | ||
{ | ||
var _state$currentTab3, _state$currentTab3$fi, _state$messages5; | ||
var _state$currentTab3, _state$currentTab3$fi, _state$messages6; | ||
var _unreadMessageCount2 = 0; | ||
var _unreadMessageCount3 = 0; | ||
@@ -202,3 +224,3 @@ if (((_state$currentTab3 = state.currentTab) === null || _state$currentTab3 === void 0 ? void 0 : (_state$currentTab3$fi = _state$currentTab3.filters) === null || _state$currentTab3$fi === void 0 ? void 0 : _state$currentTab3$fi.isRead) === false) { | ||
messages: [], | ||
unreadMessageCount: _unreadMessageCount2 | ||
unreadMessageCount: _unreadMessageCount3 | ||
}); | ||
@@ -208,3 +230,3 @@ } | ||
return _objectSpread(_objectSpread({}, state), {}, { | ||
messages: state === null || state === void 0 ? void 0 : (_state$messages5 = state.messages) === null || _state$messages5 === void 0 ? void 0 : _state$messages5.map(function (message) { | ||
messages: state === null || state === void 0 ? void 0 : (_state$messages6 = state.messages) === null || _state$messages6 === void 0 ? void 0 : _state$messages6.map(function (message) { | ||
return _objectSpread(_objectSpread({}, message), {}, { | ||
@@ -214,3 +236,3 @@ read: true | ||
}), | ||
unreadMessageCount: _unreadMessageCount2 | ||
unreadMessageCount: _unreadMessageCount3 | ||
}); | ||
@@ -217,0 +239,0 @@ } |
@@ -27,5 +27,5 @@ "use strict"; | ||
apiUrl = _useCourier.apiUrl, | ||
clientKey = _useCourier.clientKey, | ||
dispatch = _useCourier.dispatch, | ||
inbox = _useCourier.inbox, | ||
clientKey = _useCourier.clientKey, | ||
userId = _useCourier.userId, | ||
@@ -89,2 +89,11 @@ userSignature = _useCourier.userSignature; | ||
dispatch({ | ||
type: "inbox/SET_UNREAD_MESSAGE_COUNT", | ||
payload: function payload() { | ||
return messages.getMessageCount({ | ||
from: inbox === null || inbox === void 0 ? void 0 : inbox.from, | ||
isRead: false | ||
}); | ||
} | ||
}); | ||
dispatch({ | ||
type: "inbox/FETCH_MESSAGES", | ||
@@ -147,4 +156,4 @@ meta: meta, | ||
}(), | ||
markMessageUnread: function () { | ||
var _markMessageUnread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(messageId, trackingId) { | ||
markAllAsRead: function () { | ||
var _markAllAsRead = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { | ||
return _regenerator["default"].wrap(function _callee2$(_context2) { | ||
@@ -155,9 +164,6 @@ while (1) { | ||
dispatch({ | ||
type: "inbox/MARK_MESSAGE_UNREAD", | ||
payload: { | ||
messageId: messageId | ||
} | ||
type: "inbox/MARK_ALL_AS_READ" | ||
}); | ||
_context2.next = 3; | ||
return events.trackEvent(trackingId); | ||
return events.trackEventBatch("read"); | ||
@@ -172,10 +178,10 @@ case 3: | ||
function markMessageUnread(_x3, _x4) { | ||
return _markMessageUnread.apply(this, arguments); | ||
function markAllAsRead() { | ||
return _markAllAsRead.apply(this, arguments); | ||
} | ||
return markMessageUnread; | ||
return markAllAsRead; | ||
}(), | ||
markAllAsRead: function () { | ||
var _markAllAsRead = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { | ||
markMessageUnread: function () { | ||
var _markMessageUnread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageId, trackingId) { | ||
return _regenerator["default"].wrap(function _callee3$(_context3) { | ||
@@ -186,6 +192,9 @@ while (1) { | ||
dispatch({ | ||
type: "inbox/MARK_ALL_AS_READ" | ||
type: "inbox/MARK_MESSAGE_UNREAD", | ||
payload: { | ||
messageId: messageId | ||
} | ||
}); | ||
_context3.next = 3; | ||
return events.trackEventBatch("read"); | ||
return events.trackEvent(trackingId); | ||
@@ -200,7 +209,36 @@ case 3: | ||
function markAllAsRead() { | ||
return _markAllAsRead.apply(this, arguments); | ||
function markMessageUnread(_x3, _x4) { | ||
return _markMessageUnread.apply(this, arguments); | ||
} | ||
return markAllAsRead; | ||
return markMessageUnread; | ||
}(), | ||
markMessageArchived: function () { | ||
var _markMessageArchived = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(messageId, trackingId) { | ||
return _regenerator["default"].wrap(function _callee4$(_context4) { | ||
while (1) { | ||
switch (_context4.prev = _context4.next) { | ||
case 0: | ||
dispatch({ | ||
type: "inbox/MARK_MESSAGE_ARCHIVED", | ||
payload: { | ||
messageId: messageId | ||
} | ||
}); | ||
_context4.next = 3; | ||
return events.trackEvent(trackingId); | ||
case 3: | ||
case "end": | ||
return _context4.stop(); | ||
} | ||
} | ||
}, _callee4); | ||
})); | ||
function markMessageArchived(_x5, _x6) { | ||
return _markMessageArchived.apply(this, arguments); | ||
} | ||
return markMessageArchived; | ||
}() | ||
@@ -207,0 +245,0 @@ }; |
{ | ||
"name": "@trycourier/react-hooks", | ||
"version": "1.16.1-internal.fd096a7.0+fd096a7", | ||
"version": "1.17.0", | ||
"description": "", | ||
@@ -23,4 +23,4 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@trycourier/client-graphql": "^1.16.1-internal.fd096a7.0+fd096a7", | ||
"@trycourier/react-provider": "^1.16.1-internal.fd096a7.0+fd096a7", | ||
"@trycourier/client-graphql": "^1.17.0", | ||
"@trycourier/react-provider": "^1.17.0", | ||
"deep-extend": "^0.6.0", | ||
@@ -40,3 +40,3 @@ "rimraf": "^3.0.2" | ||
}, | ||
"gitHead": "fd096a70c1cdfeb5680712bf6dedb71c6c88ae62" | ||
"gitHead": "5e42703792705663e3f12183caf3dd204e4b0269" | ||
} |
@@ -6,2 +6,3 @@ <!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
- [Types](#types) | ||
- [Events](#events) | ||
@@ -46,2 +47,3 @@ <!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
trackingIds?: { | ||
archiveTrackingId: string; | ||
clickTrackingId: string; | ||
@@ -77,1 +79,96 @@ deliveredTrackingId: string; | ||
``` | ||
<a name="2eventsmd"></a> | ||
### [Events](#events) | ||
#### Inbox | ||
Inbox supports a few different events that can be triggered on the client side. | ||
These events are: | ||
- Delivered | ||
- Read | ||
- Unread | ||
- Click | ||
- Archive | ||
Some of these events are called automatically. | ||
- Delivered events are called automatically inside the Courier Provider when a message has been delivered through the websocket | ||
- Click events are triggered using our `click through tracking` links. Click events will also automatically trigger a `read` event. | ||
#### Manually calling events | ||
You can call events manually by importing the corresponding function from the react hook. | ||
For Example: | ||
```js | ||
import { CourierProvider } from "@trycourier/react-provider"; | ||
import { useInbox } from "@trycourier/react-hooks"; | ||
const MyInbox = () => { | ||
const inbox = useInbox(); | ||
useEffect(() => { | ||
inbox.fetchMessages(); | ||
}, []); | ||
const handleReadMessage = (message) => (event) => { | ||
event.preventDefault(); | ||
inbox.markMessageRead( | ||
message.messageId, | ||
message.trackingIds.readTrackingId | ||
); | ||
}; | ||
const handleUnreadMessage = (message) => (event) => { | ||
event.preventDefault(); | ||
inbox.markMessageUnread( | ||
message.messageId, | ||
message.trackingIds.unreadTrackingId | ||
); | ||
}; | ||
const handleArchiveMessage = (message) => (event) => { | ||
event.preventDefault(); | ||
inbox.markMessageArchived( | ||
message.messageId, | ||
message.trackingIds.archiveTrackingId | ||
); | ||
}; | ||
return ( | ||
<Container> | ||
{inbox.messsages.map((message) => { | ||
return ( | ||
<Message> | ||
{message.read ? ( | ||
<> | ||
<button onClick={handleUnreadMessage(message)}> | ||
Unread Me | ||
</button> | ||
<button onClick={handleArchiveMessage(message)}> | ||
Archive Me | ||
</button> | ||
</> | ||
) : ( | ||
<button onClick={handleReadMessage(message)}>Read Me</button> | ||
)} | ||
</Message> | ||
); | ||
})} | ||
</Container> | ||
); | ||
}; | ||
const MyApp = () => { | ||
return ( | ||
<CourierProvider userId="MY_USER_ID" clientKey="MY_CLIENT_KEY"> | ||
<MyInbox /> | ||
</CourierProvider> | ||
); | ||
}; | ||
``` |
@@ -8,11 +8,12 @@ import { IInbox, ITab } from "./types"; | ||
interface IInboxActions { | ||
init: (inbox: IInbox) => void; | ||
toggleInbox: (isOpen?: boolean) => void; | ||
setView: (view: "messages" | "preferences") => void; | ||
setCurrentTab: (newTab: ITab) => void; | ||
fetchMessages: (params?: IFetchMessagesParams) => void; | ||
getMessageCount: (params?: IGetMessagesParams) => void; | ||
init: (inbox: IInbox) => void; | ||
markAllAsRead: () => void; | ||
markMessageArchived: (messageId: string, trackingId: string) => Promise<void>; | ||
markMessageRead: (messageId: string, trackingId: string) => Promise<void>; | ||
markMessageUnread: (messageId: string, trackingId: string) => Promise<void>; | ||
markAllAsRead: () => void; | ||
setCurrentTab: (newTab: ITab) => void; | ||
setView: (view: "messages" | "preferences") => void; | ||
toggleInbox: (isOpen?: boolean) => void; | ||
} | ||
@@ -19,0 +20,0 @@ declare const useInboxActions: () => IInboxActions; |
import { IInbox } from "./types"; | ||
declare const useInbox: () => { | ||
init: (inbox: IInbox) => void; | ||
toggleInbox: (isOpen?: boolean | undefined) => void; | ||
setView: (view: "messages" | "preferences") => void; | ||
setCurrentTab: (newTab: import("./types").ITab) => void; | ||
fetchMessages: (params?: import("./use-inbox-actions").IFetchMessagesParams | undefined) => void; | ||
getMessageCount: (params?: import("@trycourier/client-graphql/typings/messages").IGetMessagesParams | undefined) => void; | ||
init: (inbox: IInbox) => void; | ||
markAllAsRead: () => void; | ||
markMessageArchived: (messageId: string, trackingId: string) => Promise<void>; | ||
markMessageRead: (messageId: string, trackingId: string) => Promise<void>; | ||
markMessageUnread: (messageId: string, trackingId: string) => Promise<void>; | ||
markAllAsRead: () => void; | ||
setCurrentTab: (newTab: import("./types").ITab) => void; | ||
setView: (view: "messages" | "preferences") => void; | ||
toggleInbox: (isOpen?: boolean | undefined) => void; | ||
brand?: import("@trycourier/react-provider").Brand | undefined; | ||
@@ -13,0 +14,0 @@ isOpen?: boolean | undefined; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
35142
569
1
172
0