@trycourier/react-hooks 1.16.0 → 1.16.1-internal.2e7fdad.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  - [Overview](#overview)
5
5
  - [Types](#types)
6
+ - [Events](#events)
6
7
 
7
8
  <!-- END doctoc generated TOC please keep comment here to allow auto update -->
8
9
 
@@ -42,6 +43,7 @@ interface IMessage {
42
43
  clickAction: string;
43
44
  };
44
45
  trackingIds?: {
46
+ archiveTrackingId: string;
45
47
  clickTrackingId: string;
46
48
  deliveredTrackingId: string;
47
49
  readTrackingId: string;
@@ -72,3 +74,98 @@ interface IInbox {
72
74
  view?: "messages" | "preferences";
73
75
  }
74
76
  ```
77
+
78
+ <a name="2eventsmd"></a>
79
+
80
+ ### [Events](#events)
81
+
82
+ #### Inbox
83
+
84
+ Inbox supports a few different events that can be triggered on the client side.
85
+
86
+ These events are:
87
+
88
+ - Delivered
89
+ - Read
90
+ - Unread
91
+ - Click
92
+ - Archive
93
+
94
+ Some of these events are called automatically.
95
+
96
+ - Delivered events are called automatically inside the Courier Provider when a message has been delivered through the websocket
97
+ - Click events are triggered using our `click through tracking` links. Click events will also automatically trigger a `read` event.
98
+
99
+ #### Manually calling events
100
+
101
+ You can call events manually by importing the corresponding function from the react hook.
102
+
103
+ For Example:
104
+
105
+ ```js
106
+ import { CourierProvider } from "@trycourier/react-provider";
107
+ import { useInbox } from "@trycourier/react-hooks";
108
+
109
+ const MyInbox = () => {
110
+ const inbox = useInbox();
111
+
112
+ useEffect(() => {
113
+ inbox.fetchMessages();
114
+ }, []);
115
+
116
+ const handleReadMessage = (message) => (event) => {
117
+ event.preventDefault();
118
+ inbox.markMessageRead(
119
+ message.messageId,
120
+ message.trackingIds.readTrackingId
121
+ );
122
+ };
123
+
124
+ const handleUnreadMessage = (message) => (event) => {
125
+ event.preventDefault();
126
+ inbox.markMessageUnread(
127
+ message.messageId,
128
+ message.trackingIds.unreadTrackingId
129
+ );
130
+ };
131
+
132
+ const handleArchiveMessage = (message) => (event) => {
133
+ event.preventDefault();
134
+ inbox.markMessageArchived(
135
+ message.messageId,
136
+ message.trackingIds.archiveTrackingId
137
+ );
138
+ };
139
+
140
+ return (
141
+ <Container>
142
+ {inbox.messsages.map((message) => {
143
+ return (
144
+ <Message>
145
+ {message.read ? (
146
+ <>
147
+ <button onClick={handleUnreadMessage(message)}>
148
+ Unread Me
149
+ </button>
150
+ <button onClick={handleArchiveMessage(message)}>
151
+ Archive Me
152
+ </button>
153
+ </>
154
+ ) : (
155
+ <button onClick={handleReadMessage(message)}>Read Me</button>
156
+ )}
157
+ </Message>
158
+ );
159
+ })}
160
+ </Container>
161
+ );
162
+ };
163
+
164
+ const MyApp = () => {
165
+ return (
166
+ <CourierProvider userId="MY_USER_ID" clientKey="MY_CLIENT_KEY">
167
+ <MyInbox />
168
+ </CourierProvider>
169
+ );
170
+ };
171
+ ```
@@ -162,6 +162,28 @@ var _default = function _default() {
162
162
  });
163
163
  }
164
164
 
165
+ case "inbox/MARK_MESSAGE_ARCHIVED":
166
+ {
167
+ var _state$unreadMessageC3, _state$messages5;
168
+
169
+ var _unreadMessageCount2 = (_state$unreadMessageC3 = state.unreadMessageCount) !== null && _state$unreadMessageC3 !== void 0 ? _state$unreadMessageC3 : 0;
170
+
171
+ 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) {
172
+ var isMatching = message.messageId === action.payload.messageId;
173
+
174
+ if (isMatching && !message.read) {
175
+ _unreadMessageCount2 = Math.max(_unreadMessageCount2 - 1, 0);
176
+ }
177
+
178
+ return !isMatching;
179
+ });
180
+
181
+ return _objectSpread(_objectSpread({}, state), {}, {
182
+ messages: _newMessages,
183
+ unreadMessageCount: _unreadMessageCount2
184
+ });
185
+ }
186
+
165
187
  case "inbox/FETCH_MESSAGES/ERROR":
166
188
  {
167
189
  return _objectSpread(_objectSpread({}, state), {}, {
@@ -171,10 +193,10 @@ var _default = function _default() {
171
193
 
172
194
  case "inbox/NEW_MESSAGE":
173
195
  {
174
- var _state$unreadMessageC3, _action$payload$messa, _action$payload$data;
196
+ var _state$unreadMessageC4, _action$payload$messa, _action$payload$data;
175
197
 
176
198
  return _objectSpread(_objectSpread({}, state), {}, {
177
- unreadMessageCount: ((_state$unreadMessageC3 = state === null || state === void 0 ? void 0 : state.unreadMessageCount) !== null && _state$unreadMessageC3 !== void 0 ? _state$unreadMessageC3 : 0) + 1,
199
+ unreadMessageCount: ((_state$unreadMessageC4 = state === null || state === void 0 ? void 0 : state.unreadMessageCount) !== null && _state$unreadMessageC4 !== void 0 ? _state$unreadMessageC4 : 0) + 1,
178
200
  messages: [{
179
201
  created: new Date().getTime(),
180
202
  messageId: (_action$payload$messa = action.payload.messageId) !== null && _action$payload$messa !== void 0 ? _action$payload$messa : new Date().getTime(),
@@ -189,24 +211,24 @@ var _default = function _default() {
189
211
 
190
212
  case "inbox/MARK_ALL_AS_READ":
191
213
  {
192
- var _state$currentTab3, _state$currentTab3$fi, _state$messages5;
214
+ var _state$currentTab3, _state$currentTab3$fi, _state$messages6;
193
215
 
194
- var _unreadMessageCount2 = 0;
216
+ var _unreadMessageCount3 = 0;
195
217
 
196
218
  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) {
197
219
  return _objectSpread(_objectSpread({}, state), {}, {
198
220
  messages: [],
199
- unreadMessageCount: _unreadMessageCount2
221
+ unreadMessageCount: _unreadMessageCount3
200
222
  });
201
223
  }
202
224
 
203
225
  return _objectSpread(_objectSpread({}, state), {}, {
204
- messages: state === null || state === void 0 ? void 0 : (_state$messages5 = state.messages) === null || _state$messages5 === void 0 ? void 0 : _state$messages5.map(function (message) {
226
+ messages: state === null || state === void 0 ? void 0 : (_state$messages6 = state.messages) === null || _state$messages6 === void 0 ? void 0 : _state$messages6.map(function (message) {
205
227
  return _objectSpread(_objectSpread({}, message), {}, {
206
228
  read: true
207
229
  });
208
230
  }),
209
- unreadMessageCount: _unreadMessageCount2
231
+ unreadMessageCount: _unreadMessageCount3
210
232
  });
211
233
  }
212
234
  }
@@ -24,9 +24,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
24
24
  var useInboxActions = function useInboxActions() {
25
25
  var _useCourier = (0, _reactProvider.useCourier)(),
26
26
  apiUrl = _useCourier.apiUrl,
27
+ clientKey = _useCourier.clientKey,
27
28
  dispatch = _useCourier.dispatch,
28
29
  inbox = _useCourier.inbox,
29
- clientKey = _useCourier.clientKey,
30
30
  userId = _useCourier.userId,
31
31
  userSignature = _useCourier.userSignature;
32
32
 
@@ -84,6 +84,15 @@ var useInboxActions = function useInboxActions() {
84
84
  from: inbox === null || inbox === void 0 ? void 0 : inbox.from
85
85
  }, newTab === null || newTab === void 0 ? void 0 : newTab.filters);
86
86
 
87
+ dispatch({
88
+ type: "inbox/SET_UNREAD_MESSAGE_COUNT",
89
+ payload: function payload() {
90
+ return messages.getMessageCount({
91
+ from: inbox === null || inbox === void 0 ? void 0 : inbox.from,
92
+ isRead: false
93
+ });
94
+ }
95
+ });
87
96
  dispatch({
88
97
  type: "inbox/FETCH_MESSAGES",
89
98
  meta: meta,
@@ -142,20 +151,17 @@ var useInboxActions = function useInboxActions() {
142
151
 
143
152
  return markMessageRead;
144
153
  }(),
145
- markMessageUnread: function () {
146
- var _markMessageUnread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(messageId, trackingId) {
154
+ markAllAsRead: function () {
155
+ var _markAllAsRead = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
147
156
  return _regenerator["default"].wrap(function _callee2$(_context2) {
148
157
  while (1) {
149
158
  switch (_context2.prev = _context2.next) {
150
159
  case 0:
151
160
  dispatch({
152
- type: "inbox/MARK_MESSAGE_UNREAD",
153
- payload: {
154
- messageId: messageId
155
- }
161
+ type: "inbox/MARK_ALL_AS_READ"
156
162
  });
157
163
  _context2.next = 3;
158
- return events.trackEvent(trackingId);
164
+ return events.trackEventBatch("read");
159
165
 
160
166
  case 3:
161
167
  case "end":
@@ -165,23 +171,26 @@ var useInboxActions = function useInboxActions() {
165
171
  }, _callee2);
166
172
  }));
167
173
 
168
- function markMessageUnread(_x3, _x4) {
169
- return _markMessageUnread.apply(this, arguments);
174
+ function markAllAsRead() {
175
+ return _markAllAsRead.apply(this, arguments);
170
176
  }
171
177
 
172
- return markMessageUnread;
178
+ return markAllAsRead;
173
179
  }(),
174
- markAllAsRead: function () {
175
- var _markAllAsRead = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
180
+ markMessageUnread: function () {
181
+ var _markMessageUnread = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(messageId, trackingId) {
176
182
  return _regenerator["default"].wrap(function _callee3$(_context3) {
177
183
  while (1) {
178
184
  switch (_context3.prev = _context3.next) {
179
185
  case 0:
180
186
  dispatch({
181
- type: "inbox/MARK_ALL_AS_READ"
187
+ type: "inbox/MARK_MESSAGE_UNREAD",
188
+ payload: {
189
+ messageId: messageId
190
+ }
182
191
  });
183
192
  _context3.next = 3;
184
- return events.trackEventBatch("read");
193
+ return events.trackEvent(trackingId);
185
194
 
186
195
  case 3:
187
196
  case "end":
@@ -191,11 +200,40 @@ var useInboxActions = function useInboxActions() {
191
200
  }, _callee3);
192
201
  }));
193
202
 
194
- function markAllAsRead() {
195
- return _markAllAsRead.apply(this, arguments);
203
+ function markMessageUnread(_x3, _x4) {
204
+ return _markMessageUnread.apply(this, arguments);
196
205
  }
197
206
 
198
- return markAllAsRead;
207
+ return markMessageUnread;
208
+ }(),
209
+ markMessageArchived: function () {
210
+ var _markMessageArchived = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(messageId, trackingId) {
211
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
212
+ while (1) {
213
+ switch (_context4.prev = _context4.next) {
214
+ case 0:
215
+ dispatch({
216
+ type: "inbox/MARK_MESSAGE_ARCHIVED",
217
+ payload: {
218
+ messageId: messageId
219
+ }
220
+ });
221
+ _context4.next = 3;
222
+ return events.trackEvent(trackingId);
223
+
224
+ case 3:
225
+ case "end":
226
+ return _context4.stop();
227
+ }
228
+ }
229
+ }, _callee4);
230
+ }));
231
+
232
+ function markMessageArchived(_x5, _x6) {
233
+ return _markMessageArchived.apply(this, arguments);
234
+ }
235
+
236
+ return markMessageArchived;
199
237
  }()
200
238
  };
201
239
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trycourier/react-hooks",
3
- "version": "1.16.0",
3
+ "version": "1.16.1-internal.2e7fdad.0+2e7fdad",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "typings/index.d.ts",
@@ -12,7 +12,7 @@
12
12
  "test": "jest -c jest.config.js --runInBand --silent",
13
13
  "type-check": "tsc --noEmit",
14
14
  "readme": "concat-md --toc --decrease-title-levels --dir-name-as-title docs > README.md",
15
- "types": "tsc --declaration --outDir typings/ --emitDeclarationOnly --declarationMap --allowJs false --checkJs false"
15
+ "types": "tsc --build"
16
16
  },
17
17
  "license": "ISC",
18
18
  "devDependencies": {
@@ -20,8 +20,8 @@
20
20
  "concat-md": "^0.3.5"
21
21
  },
22
22
  "dependencies": {
23
- "@trycourier/client-graphql": "^1.16.0",
24
- "@trycourier/react-provider": "^1.16.0",
23
+ "@trycourier/client-graphql": "^1.16.1-internal.2e7fdad.0+2e7fdad",
24
+ "@trycourier/react-provider": "^1.16.1-internal.2e7fdad.0+2e7fdad",
25
25
  "deep-extend": "^0.6.0",
26
26
  "rimraf": "^3.0.2"
27
27
  },
@@ -36,5 +36,5 @@
36
36
  ".": "./dist/index.js",
37
37
  "./use-inbox": "./dist/inbox/use-inbox.js"
38
38
  },
39
- "gitHead": "d2a5dc400add5158997c8bfdd8274cababe419d1"
39
+ "gitHead": "2e7fdad2c7f8ab30c6673f91a084b78d673e156c"
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/inbox/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,YAAY;;;;;;;;;;;;IAaxB,CAAC;oEAsBqD,MAAM;AAA7D,wBAkKE"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/inbox/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,YAAY;;;;;;;;;;;;IAaxB,CAAC;oEAsBqD,MAAM;AAA7D,wBAqLE"}
@@ -5,15 +5,16 @@ export interface IFetchMessagesParams {
5
5
  after?: string;
6
6
  }
7
7
  interface IInboxActions {
8
- init: (inbox: IInbox) => void;
9
- toggleInbox: (isOpen?: boolean) => void;
10
- setView: (view: "messages" | "preferences") => void;
11
- setCurrentTab: (newTab: ITab) => void;
12
8
  fetchMessages: (params?: IFetchMessagesParams) => void;
13
9
  getMessageCount: (params?: IGetMessagesParams) => void;
10
+ init: (inbox: IInbox) => void;
11
+ markAllAsRead: () => void;
12
+ markMessageArchived: (messageId: string, trackingId: string) => Promise<void>;
14
13
  markMessageRead: (messageId: string, trackingId: string) => Promise<void>;
15
14
  markMessageUnread: (messageId: string, trackingId: string) => Promise<void>;
16
- markAllAsRead: () => void;
15
+ setCurrentTab: (newTab: ITab) => void;
16
+ setView: (view: "messages" | "preferences") => void;
17
+ toggleInbox: (isOpen?: boolean) => void;
17
18
  }
18
19
  declare const useInboxActions: () => IInboxActions;
19
20
  export default useInboxActions;
@@ -1 +1 @@
1
- {"version":3,"file":"use-inbox-actions.d.ts","sourceRoot":"","sources":["../../src/inbox/use-inbox-actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAQvC,OAAO,EACL,kBAAkB,EAEnB,MAAM,6CAA6C,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,QAAA,MAAM,eAAe,QAAO,aAqH3B,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-inbox-actions.d.ts","sourceRoot":"","sources":["../../src/inbox/use-inbox-actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAQvC,OAAO,EACL,kBAAkB,EAEnB,MAAM,6CAA6C,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,aAAa,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,eAAe,QAAO,aA+H3B,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import { IInbox } from "./types";
2
2
  declare const useInbox: () => {
3
- init: (inbox: IInbox) => void;
4
- toggleInbox: (isOpen?: boolean | undefined) => void;
5
- setView: (view: "messages" | "preferences") => void;
6
- setCurrentTab: (newTab: import("./types").ITab) => void;
7
3
  fetchMessages: (params?: import("./use-inbox-actions").IFetchMessagesParams | undefined) => void;
8
4
  getMessageCount: (params?: import("@trycourier/client-graphql/typings/messages").IGetMessagesParams | undefined) => void;
5
+ init: (inbox: IInbox) => void;
6
+ markAllAsRead: () => void;
7
+ markMessageArchived: (messageId: string, trackingId: string) => Promise<void>;
9
8
  markMessageRead: (messageId: string, trackingId: string) => Promise<void>;
10
9
  markMessageUnread: (messageId: string, trackingId: string) => Promise<void>;
11
- markAllAsRead: () => void;
10
+ setCurrentTab: (newTab: import("./types").ITab) => void;
11
+ setView: (view: "messages" | "preferences") => void;
12
+ toggleInbox: (isOpen?: boolean | undefined) => void;
12
13
  brand?: import("@trycourier/react-provider").Brand | undefined;
13
14
  isOpen?: boolean | undefined;
14
15
  tabs?: import("./types").ITab[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"use-inbox.d.ts","sourceRoot":"","sources":["../../src/inbox/use-inbox.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;CAgCb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"use-inbox.d.ts","sourceRoot":"","sources":["../../src/inbox/use-inbox.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;CAgCb,CAAC;AAEF,eAAe,QAAQ,CAAC"}