@knocklabs/client 0.4.5-rc.1
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/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/cjs/api.js +165 -0
- package/dist/cjs/api.js.map +1 -0
- package/dist/cjs/clients/feed/feed.js +557 -0
- package/dist/cjs/clients/feed/feed.js.map +1 -0
- package/dist/cjs/clients/feed/index.js +43 -0
- package/dist/cjs/clients/feed/index.js.map +1 -0
- package/dist/cjs/clients/feed/interfaces.js +2 -0
- package/dist/cjs/clients/feed/interfaces.js.map +1 -0
- package/dist/cjs/clients/feed/store.js +115 -0
- package/dist/cjs/clients/feed/store.js.map +1 -0
- package/dist/cjs/clients/feed/types.js +2 -0
- package/dist/cjs/clients/feed/types.js.map +1 -0
- package/dist/cjs/clients/feed/utils.js +31 -0
- package/dist/cjs/clients/feed/utils.js.map +1 -0
- package/dist/cjs/clients/preferences/index.js +406 -0
- package/dist/cjs/clients/preferences/index.js.map +1 -0
- package/dist/cjs/clients/preferences/interfaces.js +2 -0
- package/dist/cjs/clients/preferences/interfaces.js.map +1 -0
- package/dist/cjs/index.js +108 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces.js +2 -0
- package/dist/cjs/interfaces.js.map +1 -0
- package/dist/cjs/knock.js +86 -0
- package/dist/cjs/knock.js.map +1 -0
- package/dist/cjs/networkStatus.js +21 -0
- package/dist/cjs/networkStatus.js.map +1 -0
- package/dist/esm/api.js +119 -0
- package/dist/esm/api.js.map +1 -0
- package/dist/esm/clients/feed/feed.js +337 -0
- package/dist/esm/clients/feed/feed.js.map +1 -0
- package/dist/esm/clients/feed/index.js +20 -0
- package/dist/esm/clients/feed/index.js.map +1 -0
- package/dist/esm/clients/feed/interfaces.js +2 -0
- package/dist/esm/clients/feed/interfaces.js.map +1 -0
- package/dist/esm/clients/feed/store.js +91 -0
- package/dist/esm/clients/feed/store.js.map +1 -0
- package/dist/esm/clients/feed/types.js +2 -0
- package/dist/esm/clients/feed/types.js.map +1 -0
- package/dist/esm/clients/feed/utils.js +18 -0
- package/dist/esm/clients/feed/utils.js.map +1 -0
- package/dist/esm/clients/preferences/index.js +176 -0
- package/dist/esm/clients/preferences/index.js.map +1 -0
- package/dist/esm/clients/preferences/interfaces.js +2 -0
- package/dist/esm/clients/preferences/interfaces.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces.js +2 -0
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/knock.js +69 -0
- package/dist/esm/knock.js.map +1 -0
- package/dist/esm/networkStatus.js +13 -0
- package/dist/esm/networkStatus.js.map +1 -0
- package/dist/types/api.d.ts +28 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/clients/feed/feed.d.ts +46 -0
- package/dist/types/clients/feed/feed.d.ts.map +1 -0
- package/dist/types/clients/feed/index.d.ts +11 -0
- package/dist/types/clients/feed/index.d.ts.map +1 -0
- package/dist/types/clients/feed/interfaces.d.ts +50 -0
- package/dist/types/clients/feed/interfaces.d.ts.map +1 -0
- package/dist/types/clients/feed/store.d.ts +3 -0
- package/dist/types/clients/feed/store.d.ts.map +1 -0
- package/dist/types/clients/feed/types.d.ts +25 -0
- package/dist/types/clients/feed/types.d.ts.map +1 -0
- package/dist/types/clients/feed/utils.d.ts +4 -0
- package/dist/types/clients/feed/utils.d.ts.map +1 -0
- package/dist/types/clients/preferences/index.d.ts +18 -0
- package/dist/types/clients/preferences/index.d.ts.map +1 -0
- package/dist/types/clients/preferences/interfaces.d.ts +26 -0
- package/dist/types/clients/preferences/interfaces.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces.d.ts +27 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/knock.d.ts +19 -0
- package/dist/types/knock.d.ts.map +1 -0
- package/dist/types/networkStatus.d.ts +8 -0
- package/dist/types/networkStatus.d.ts.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/feed/feed.ts"],"names":["Feed","knock","feedId","options","apiClient","client","userFeedId","buildUserFeedId","store","broadcaster","EventEmitter","defaultOptions","connectSocket","channel","createChannel","channelConnected","join","receive","on","resp","onNewMessageReceived","leave","e","console","error","eventName","callback","off","getState","itemOrItems","now","Date","toISOString","optimisticallyPerformStatusUpdate","seen_at","makeStatusUpdate","read_at","archived_at","setState","networkStatus","setNetworkStatus","__loadingType","NetworkStatus","loading","queryParams","makeRequest","method","url","userId","params","result","statusCode","status","data","body","response","entries","meta","page_info","before","opts","shouldSetPage","shouldAppend","state","setResult","after","broadcast","pageInfo","fetch","fetchMore","emit","metadata","currentHead","items","setMetadata","__cursor","type","attrs","badgeCountAttr","itemIds","Array","isArray","map","item","id","direction","startsWith","length","Math","max","setItemAttrs","message_ids"],"mappings":"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","sourcesContent":["import { Channel } from \"phoenix\";\nimport { StoreApi } from \"zustand\";\nimport EventEmitter from \"eventemitter3\";\nimport ApiClient from \"../../api\";\nimport createStore from \"./store\";\nimport {\n FeedMessagesReceivedPayload,\n FeedRealTimeEvent,\n FeedItemOrItems,\n FeedStoreState,\n} from \"./types\";\nimport { FeedItem, FeedClientOptions, FetchFeedOptions } from \"./interfaces\";\nimport Knock from \"../../knock\";\nimport { isRequestInFlight, NetworkStatus } from \"../../networkStatus\";\n\nexport type Status =\n | \"seen\"\n | \"read\"\n | \"archived\"\n | \"unseen\"\n | \"unread\"\n | \"unarchived\";\n\nclass Feed {\n private apiClient: ApiClient;\n private userFeedId: string;\n private channelConnected: boolean = false;\n private channel: Channel;\n private broadcaster: EventEmitter;\n private defaultOptions: FeedClientOptions;\n\n // The raw store instance, used for binding in React and other environments\n public store: StoreApi<FeedStoreState>;\n\n constructor(\n readonly knock: Knock,\n readonly feedId: string,\n options: FeedClientOptions,\n ) {\n this.apiClient = knock.client();\n this.feedId = feedId;\n this.userFeedId = this.buildUserFeedId();\n this.store = createStore();\n this.broadcaster = new EventEmitter();\n this.defaultOptions = options;\n\n // Try and connect to the socket\n this.apiClient.connectSocket();\n\n this.channel = this.apiClient.createChannel(\n `feeds:${this.userFeedId}`,\n this.defaultOptions,\n );\n }\n\n /*\n Returns a socket to listen for feed updates\n */\n listenForUpdates() {\n if (!this.channelConnected) {\n this.channel.join().receive(\"ok\", () => {\n this.channelConnected = true;\n });\n\n this.channel.on(\"new-message\", (resp) => this.onNewMessageReceived(resp));\n }\n\n return () => {\n try {\n this.channel.leave();\n } catch (e) {\n // tslint:disable-next-line\n console.error(\"error while leaving channel\", e);\n }\n };\n }\n\n /* Binds a handler to be invoked when event occurs */\n on(eventName: FeedRealTimeEvent, callback: () => void) {\n this.broadcaster.on(eventName, callback);\n }\n\n off(eventName: FeedRealTimeEvent, callback: () => void) {\n this.broadcaster.off(eventName, callback);\n }\n\n getState() {\n return this.store.getState();\n }\n\n async markAsSeen(itemOrItems: FeedItemOrItems) {\n const now = new Date().toISOString();\n this.optimisticallyPerformStatusUpdate(\n itemOrItems,\n \"seen\",\n { seen_at: now },\n \"unseen_count\",\n );\n return this.makeStatusUpdate(itemOrItems, \"seen\");\n }\n\n async markAsUnseen(itemOrItems: FeedItemOrItems) {\n this.optimisticallyPerformStatusUpdate(\n itemOrItems,\n \"unseen\",\n { seen_at: null },\n \"unseen_count\",\n );\n return this.makeStatusUpdate(itemOrItems, \"unseen\");\n }\n\n async markAsRead(itemOrItems: FeedItemOrItems) {\n const now = new Date().toISOString();\n this.optimisticallyPerformStatusUpdate(\n itemOrItems,\n \"read\",\n { read_at: now },\n \"unread_count\",\n );\n return this.makeStatusUpdate(itemOrItems, \"read\");\n }\n\n async markAsUnread(itemOrItems: FeedItemOrItems) {\n this.optimisticallyPerformStatusUpdate(\n itemOrItems,\n \"unread\",\n { read_at: null },\n \"unread_count\",\n );\n return this.makeStatusUpdate(itemOrItems, \"unread\");\n }\n\n async markAsArchived(itemOrItems: FeedItemOrItems) {\n const now = new Date().toISOString();\n this.optimisticallyPerformStatusUpdate(itemOrItems, \"archived\", {\n archived_at: now,\n });\n return this.makeStatusUpdate(itemOrItems, \"archived\");\n }\n\n async markAsUnarchived(itemOrItems: FeedItemOrItems) {\n this.optimisticallyPerformStatusUpdate(itemOrItems, \"unarchived\", {\n archived_at: null,\n });\n return this.makeStatusUpdate(itemOrItems, \"unarchived\");\n }\n\n /* Fetches the feed content, appending it to the store */\n async fetch(options: FetchFeedOptions = {}) {\n const { setState, getState } = this.store;\n const { networkStatus } = getState();\n\n // If there's an existing request in flight, then do nothing\n if (isRequestInFlight(networkStatus)) {\n return;\n }\n\n // Set the loading type based on the request type it is\n setState((store) =>\n store.setNetworkStatus(options.__loadingType ?? NetworkStatus.loading),\n );\n\n // Always include the default params, if they have been set\n const queryParams = { ...this.defaultOptions, ...options };\n\n const result = await this.apiClient.makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.knock.userId}/feeds/${this.feedId}`,\n params: queryParams,\n });\n\n if (result.statusCode === \"error\") {\n setState((store) => store.setNetworkStatus(NetworkStatus.error));\n\n return {\n status: result.statusCode,\n data: result.error || result.body,\n };\n }\n\n const response = {\n entries: result.body.entries,\n meta: result.body.meta,\n page_info: result.body.page_info,\n };\n\n if (options.before) {\n const opts = { shouldSetPage: false, shouldAppend: true };\n setState((state) => state.setResult(response, opts));\n } else if (options.after) {\n const opts = { shouldSetPage: true, shouldAppend: true };\n setState((state) => state.setResult(response, opts));\n } else {\n setState((state) => state.setResult(response));\n }\n\n this.broadcast(\"messages.new\", response);\n return { data: response, status: result.statusCode };\n }\n\n async fetchNextPage() {\n // Attempts to fetch the next page of results (if we have any)\n const { getState } = this.store;\n const { pageInfo } = getState();\n\n if (!pageInfo.after) {\n // Nothing more to fetch\n return;\n }\n\n this.fetch({\n after: pageInfo.after,\n __loadingType: NetworkStatus.fetchMore,\n });\n }\n\n private broadcast(eventName: FeedRealTimeEvent, data: any) {\n this.broadcaster.emit(eventName, data);\n }\n\n // Invoked when a new real-time message comes in from the socket\n private async onNewMessageReceived({\n metadata,\n }: FeedMessagesReceivedPayload) {\n // Handle the new message coming in\n const { getState, setState } = this.store;\n const currentHead: FeedItem | undefined = getState().items[0];\n // Optimistically set the badge counts\n setState((state) => state.setMetadata(metadata));\n // Fetch the items before the current head (if it exists)\n this.fetch({ before: currentHead?.__cursor });\n }\n\n private buildUserFeedId() {\n return `${this.feedId}:${this.knock.userId}`;\n }\n\n private optimisticallyPerformStatusUpdate(\n itemOrItems: FeedItemOrItems,\n type: Status,\n attrs: object,\n badgeCountAttr?: \"unread_count\" | \"unseen_count\",\n ) {\n const { getState, setState } = this.store;\n const itemIds = Array.isArray(itemOrItems)\n ? itemOrItems.map((item) => item.id)\n : [itemOrItems.id];\n\n if (badgeCountAttr) {\n const { metadata } = getState();\n\n // Tnis is a hack to determine the direction of whether we're\n // adding or removing from the badge count\n const direction = type.startsWith(\"un\")\n ? itemIds.length\n : -itemIds.length;\n\n setState((store) =>\n store.setMetadata({\n ...metadata,\n [badgeCountAttr]: Math.max(0, metadata[badgeCountAttr] + direction),\n }),\n );\n }\n\n // Update the items with the given attributes\n setState((store) => store.setItemAttrs(itemIds, attrs));\n }\n\n private async makeStatusUpdate(itemOrItems: FeedItemOrItems, type: Status) {\n // If we're interacting with an array, then we want to send this as a batch\n if (Array.isArray(itemOrItems)) {\n const itemIds = itemOrItems.map((item) => item.id);\n\n return await this.apiClient.makeRequest({\n method: \"POST\",\n url: `/v1/messages/batch/${type}`,\n data: { message_ids: itemIds },\n });\n }\n\n // If its a single then we can just call the regular endpoint\n const result = await this.apiClient.makeRequest({\n method: type.startsWith(\"un\") ? \"DELETE\" : \"PUT\",\n url: `/v1/messages/${itemOrItems.id}/${type}`,\n });\n\n return result;\n }\n}\n\nexport default Feed;\n"],"file":"feed.js"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "Feed", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _feed["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
exports["default"] = void 0;
|
|
15
|
+
|
|
16
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
+
|
|
18
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
+
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
|
|
22
|
+
var _feed = _interopRequireDefault(require("./feed"));
|
|
23
|
+
|
|
24
|
+
var FeedClient = /*#__PURE__*/function () {
|
|
25
|
+
function FeedClient(instance) {
|
|
26
|
+
(0, _classCallCheck2["default"])(this, FeedClient);
|
|
27
|
+
(0, _defineProperty2["default"])(this, "instance", void 0);
|
|
28
|
+
this.instance = instance;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
(0, _createClass2["default"])(FeedClient, [{
|
|
32
|
+
key: "initialize",
|
|
33
|
+
value: function initialize(feedChannelId) {
|
|
34
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
35
|
+
return new _feed["default"](this.instance, feedChannelId, options);
|
|
36
|
+
}
|
|
37
|
+
}]);
|
|
38
|
+
return FeedClient;
|
|
39
|
+
}();
|
|
40
|
+
|
|
41
|
+
var _default = FeedClient;
|
|
42
|
+
exports["default"] = _default;
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/feed/index.ts"],"names":["FeedClient","instance","feedChannelId","options","Feed"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;IAGMA,U;AAGJ,sBAAYC,QAAZ,EAA6B;AAAA;AAAA;AAC3B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;;;WAED,oBAAWC,aAAX,EAAmE;AAAA,UAAjCC,OAAiC,uEAAJ,EAAI;AACjE,aAAO,IAAIC,gBAAJ,CAAS,KAAKH,QAAd,EAAwBC,aAAxB,EAAuCC,OAAvC,CAAP;AACD;;;;;eAIYH,U","sourcesContent":["import Knock from \"../../knock\";\nimport Feed from \"./feed\";\nimport { FeedClientOptions } from \"./interfaces\";\n\nclass FeedClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n initialize(feedChannelId: string, options: FeedClientOptions = {}) {\n return new Feed(this.instance, feedChannelId, options);\n }\n}\n\nexport { Feed };\nexport default FeedClient;\n"],"file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"interfaces.js"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = createStore;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _vanilla = _interopRequireDefault(require("zustand/vanilla"));
|
|
13
|
+
|
|
14
|
+
var _networkStatus = require("../../networkStatus");
|
|
15
|
+
|
|
16
|
+
var _utils = require("./utils");
|
|
17
|
+
|
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
+
|
|
20
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
21
|
+
|
|
22
|
+
function processItems(items) {
|
|
23
|
+
var deduped = (0, _utils.deduplicateItems)(items);
|
|
24
|
+
var sorted = (0, _utils.sortItems)(deduped);
|
|
25
|
+
return sorted;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var defaultSetResultOptions = {
|
|
29
|
+
shouldSetPage: true,
|
|
30
|
+
shouldAppend: false
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function createStore() {
|
|
34
|
+
return (0, _vanilla["default"])(function (set) {
|
|
35
|
+
return {
|
|
36
|
+
// Keeps track of all of the items loaded
|
|
37
|
+
items: [],
|
|
38
|
+
// The network status indicates what's happening with the request
|
|
39
|
+
networkStatus: _networkStatus.NetworkStatus.ready,
|
|
40
|
+
loading: false,
|
|
41
|
+
// Keeps track of the current badge counts
|
|
42
|
+
metadata: {
|
|
43
|
+
total_count: 0,
|
|
44
|
+
unread_count: 0,
|
|
45
|
+
unseen_count: 0
|
|
46
|
+
},
|
|
47
|
+
// Keeps track of the last full page of results we received (for paginating)
|
|
48
|
+
pageInfo: {
|
|
49
|
+
before: null,
|
|
50
|
+
after: null,
|
|
51
|
+
page_size: 50
|
|
52
|
+
},
|
|
53
|
+
// TODO: remove this function from the store as we're now using the
|
|
54
|
+
// `setNetworkStatus` function to derive this information instead
|
|
55
|
+
setLoading: function setLoading(loading) {
|
|
56
|
+
return set(function () {
|
|
57
|
+
return {
|
|
58
|
+
loading: loading
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
setNetworkStatus: function setNetworkStatus(networkStatus) {
|
|
63
|
+
return set(function () {
|
|
64
|
+
return {
|
|
65
|
+
networkStatus: networkStatus,
|
|
66
|
+
loading: networkStatus === _networkStatus.NetworkStatus.loading
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
setResult: function setResult(_ref) {
|
|
71
|
+
var entries = _ref.entries,
|
|
72
|
+
meta = _ref.meta,
|
|
73
|
+
page_info = _ref.page_info;
|
|
74
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSetResultOptions;
|
|
75
|
+
return set(function (state) {
|
|
76
|
+
// We resort the list on set, so concating everything is fine (if a bit suboptimal)
|
|
77
|
+
var items = options.shouldAppend ? processItems(state.items.concat(entries)) : entries;
|
|
78
|
+
return {
|
|
79
|
+
items: items,
|
|
80
|
+
metadata: meta,
|
|
81
|
+
pageInfo: options.shouldSetPage ? page_info : state.pageInfo,
|
|
82
|
+
loading: false,
|
|
83
|
+
networkStatus: _networkStatus.NetworkStatus.ready
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
setMetadata: function setMetadata(metadata) {
|
|
88
|
+
return set(function () {
|
|
89
|
+
return {
|
|
90
|
+
metadata: metadata
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
setItemAttrs: function setItemAttrs(itemIds, attrs) {
|
|
95
|
+
// Create a map for the items to the updates to be made
|
|
96
|
+
var itemUpdatesMap = itemIds.reduce(function (acc, itemId) {
|
|
97
|
+
return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, itemId, attrs));
|
|
98
|
+
}, {});
|
|
99
|
+
return set(function (state) {
|
|
100
|
+
var items = state.items.map(function (item) {
|
|
101
|
+
if (itemUpdatesMap[item.id]) {
|
|
102
|
+
return _objectSpread(_objectSpread({}, item), itemUpdatesMap[item.id]);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return item;
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
items: items
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/feed/store.ts"],"names":["processItems","items","deduped","sorted","defaultSetResultOptions","shouldSetPage","shouldAppend","createStore","set","networkStatus","NetworkStatus","ready","loading","metadata","total_count","unread_count","unseen_count","pageInfo","before","after","page_size","setLoading","setNetworkStatus","setResult","entries","meta","page_info","options","state","concat","setMetadata","setItemAttrs","itemIds","attrs","itemUpdatesMap","reduce","acc","itemId","map","item","id"],"mappings":"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","sourcesContent":["import create from \"zustand/vanilla\";\nimport { NetworkStatus } from \"../../networkStatus\";\nimport { FeedItem } from \"./interfaces\";\nimport { FeedStoreState } from \"./types\";\nimport { deduplicateItems, sortItems } from \"./utils\";\n\nfunction processItems(items: FeedItem[]) {\n const deduped = deduplicateItems(items);\n const sorted = sortItems(deduped);\n\n return sorted;\n}\n\nconst defaultSetResultOptions = {\n shouldSetPage: true,\n shouldAppend: false,\n};\n\nexport default function createStore() {\n return create<FeedStoreState>((set) => ({\n // Keeps track of all of the items loaded\n items: [],\n\n // The network status indicates what's happening with the request\n networkStatus: NetworkStatus.ready,\n loading: false,\n\n // Keeps track of the current badge counts\n metadata: {\n total_count: 0,\n unread_count: 0,\n unseen_count: 0,\n },\n\n // Keeps track of the last full page of results we received (for paginating)\n pageInfo: {\n before: null,\n after: null,\n page_size: 50,\n },\n\n // TODO: remove this function from the store as we're now using the\n // `setNetworkStatus` function to derive this information instead\n setLoading: (loading) => set(() => ({ loading })),\n\n setNetworkStatus: (networkStatus: NetworkStatus) =>\n set(() => ({\n networkStatus,\n loading: networkStatus === NetworkStatus.loading,\n })),\n\n setResult: (\n { entries, meta, page_info },\n options = defaultSetResultOptions,\n ) =>\n set((state) => {\n // We resort the list on set, so concating everything is fine (if a bit suboptimal)\n const items = options.shouldAppend\n ? processItems(state.items.concat(entries))\n : entries;\n\n return {\n items,\n metadata: meta,\n pageInfo: options.shouldSetPage ? page_info : state.pageInfo,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n }),\n\n setMetadata: (metadata) => set(() => ({ metadata })),\n setItemAttrs: (itemIds, attrs) => {\n // Create a map for the items to the updates to be made\n const itemUpdatesMap: { [id: string]: object } = itemIds.reduce(\n (acc, itemId) => ({ ...acc, [itemId]: attrs }),\n {},\n );\n\n return set((state) => {\n const items = state.items.map((item) => {\n if (itemUpdatesMap[item.id]) {\n return { ...item, ...itemUpdatesMap[item.id] };\n }\n\n return item;\n });\n\n return { items };\n });\n },\n }));\n}\n"],"file":"store.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.deduplicateItems = deduplicateItems;
|
|
9
|
+
exports.sortItems = sortItems;
|
|
10
|
+
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
|
|
13
|
+
function deduplicateItems(items) {
|
|
14
|
+
var seen = {};
|
|
15
|
+
var values = [];
|
|
16
|
+
return items.reduce(function (acc, item) {
|
|
17
|
+
if (seen[item.id]) {
|
|
18
|
+
return acc;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
seen[item.id] = true;
|
|
22
|
+
return [].concat((0, _toConsumableArray2["default"])(acc), [item]);
|
|
23
|
+
}, values);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function sortItems(items) {
|
|
27
|
+
return items.sort(function (a, b) {
|
|
28
|
+
return new Date(b.inserted_at).getTime() - new Date(a.inserted_at).getTime();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/feed/utils.ts"],"names":["deduplicateItems","items","seen","values","reduce","acc","item","id","sortItems","sort","a","b","Date","inserted_at","getTime"],"mappings":";;;;;;;;;;;;AAEO,SAASA,gBAAT,CAA0BC,KAA1B,EAAyD;AAC9D,MAAMC,IAAI,GAAG,EAAb;AACA,MAAMC,MAAkB,GAAG,EAA3B;AAEA,SAAOF,KAAK,CAACG,MAAN,CAAa,UAACC,GAAD,EAAMC,IAAN,EAAe;AACjC,QAAIJ,IAAI,CAACI,IAAI,CAACC,EAAN,CAAR,EAAmB;AACjB,aAAOF,GAAP;AACD;;AAEDH,IAAAA,IAAI,CAACI,IAAI,CAACC,EAAN,CAAJ,GAAgB,IAAhB;AACA,yDAAWF,GAAX,IAAgBC,IAAhB;AACD,GAPM,EAOJH,MAPI,CAAP;AAQD;;AAEM,SAASK,SAAT,CAAmBP,KAAnB,EAAsC;AAC3C,SAAOA,KAAK,CAACQ,IAAN,CAAW,UAACC,CAAD,EAAIC,CAAJ,EAAU;AAC1B,WACE,IAAIC,IAAJ,CAASD,CAAC,CAACE,WAAX,EAAwBC,OAAxB,KAAoC,IAAIF,IAAJ,CAASF,CAAC,CAACG,WAAX,EAAwBC,OAAxB,EADtC;AAGD,GAJM,CAAP;AAKD","sourcesContent":["import { FeedItem } from \"./interfaces\";\n\nexport function deduplicateItems(items: FeedItem[]): FeedItem[] {\n const seen = {};\n const values: FeedItem[] = [];\n\n return items.reduce((acc, item) => {\n if (seen[item.id]) {\n return acc;\n }\n\n seen[item.id] = true;\n return [...acc, item];\n }, values);\n}\n\nexport function sortItems(items: FeedItem[]) {\n return items.sort((a, b) => {\n return (\n new Date(b.inserted_at).getTime() - new Date(a.inserted_at).getTime()\n );\n });\n}\n"],"file":"utils.js"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
+
|
|
20
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
21
|
+
|
|
22
|
+
var DEFAULT_PREFERENCE_SET_ID = "default";
|
|
23
|
+
|
|
24
|
+
function buildUpdateParam(param) {
|
|
25
|
+
if ((0, _typeof2["default"])(param) === "object") {
|
|
26
|
+
return param;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
subscribed: param
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var Preferences = /*#__PURE__*/function () {
|
|
35
|
+
function Preferences(instance) {
|
|
36
|
+
(0, _classCallCheck2["default"])(this, Preferences);
|
|
37
|
+
(0, _defineProperty2["default"])(this, "instance", void 0);
|
|
38
|
+
this.instance = instance;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
(0, _createClass2["default"])(Preferences, [{
|
|
42
|
+
key: "getAll",
|
|
43
|
+
value: function () {
|
|
44
|
+
var _getAll = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
45
|
+
var result;
|
|
46
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
47
|
+
while (1) {
|
|
48
|
+
switch (_context.prev = _context.next) {
|
|
49
|
+
case 0:
|
|
50
|
+
_context.next = 2;
|
|
51
|
+
return this.instance.client().makeRequest({
|
|
52
|
+
method: "GET",
|
|
53
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences")
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
case 2:
|
|
57
|
+
result = _context.sent;
|
|
58
|
+
return _context.abrupt("return", this.handleResponse(result));
|
|
59
|
+
|
|
60
|
+
case 4:
|
|
61
|
+
case "end":
|
|
62
|
+
return _context.stop();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}, _callee, this);
|
|
66
|
+
}));
|
|
67
|
+
|
|
68
|
+
function getAll() {
|
|
69
|
+
return _getAll.apply(this, arguments);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return getAll;
|
|
73
|
+
}()
|
|
74
|
+
}, {
|
|
75
|
+
key: "get",
|
|
76
|
+
value: function () {
|
|
77
|
+
var _get = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
78
|
+
var options,
|
|
79
|
+
preferenceSetId,
|
|
80
|
+
result,
|
|
81
|
+
_args2 = arguments;
|
|
82
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
83
|
+
while (1) {
|
|
84
|
+
switch (_context2.prev = _context2.next) {
|
|
85
|
+
case 0:
|
|
86
|
+
options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};
|
|
87
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
88
|
+
_context2.next = 4;
|
|
89
|
+
return this.instance.client().makeRequest({
|
|
90
|
+
method: "GET",
|
|
91
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId)
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
case 4:
|
|
95
|
+
result = _context2.sent;
|
|
96
|
+
return _context2.abrupt("return", this.handleResponse(result));
|
|
97
|
+
|
|
98
|
+
case 6:
|
|
99
|
+
case "end":
|
|
100
|
+
return _context2.stop();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, _callee2, this);
|
|
104
|
+
}));
|
|
105
|
+
|
|
106
|
+
function get() {
|
|
107
|
+
return _get.apply(this, arguments);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return get;
|
|
111
|
+
}()
|
|
112
|
+
}, {
|
|
113
|
+
key: "set",
|
|
114
|
+
value: function () {
|
|
115
|
+
var _set = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(preferenceSet) {
|
|
116
|
+
var options,
|
|
117
|
+
preferenceSetId,
|
|
118
|
+
result,
|
|
119
|
+
_args3 = arguments;
|
|
120
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
121
|
+
while (1) {
|
|
122
|
+
switch (_context3.prev = _context3.next) {
|
|
123
|
+
case 0:
|
|
124
|
+
options = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
125
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
126
|
+
_context3.next = 4;
|
|
127
|
+
return this.instance.client().makeRequest({
|
|
128
|
+
method: "PUT",
|
|
129
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId),
|
|
130
|
+
data: preferenceSet
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
case 4:
|
|
134
|
+
result = _context3.sent;
|
|
135
|
+
return _context3.abrupt("return", this.handleResponse(result));
|
|
136
|
+
|
|
137
|
+
case 6:
|
|
138
|
+
case "end":
|
|
139
|
+
return _context3.stop();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}, _callee3, this);
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
function set(_x) {
|
|
146
|
+
return _set.apply(this, arguments);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return set;
|
|
150
|
+
}()
|
|
151
|
+
}, {
|
|
152
|
+
key: "setChannelTypes",
|
|
153
|
+
value: function () {
|
|
154
|
+
var _setChannelTypes = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(channelTypePreferences) {
|
|
155
|
+
var options,
|
|
156
|
+
preferenceSetId,
|
|
157
|
+
result,
|
|
158
|
+
_args4 = arguments;
|
|
159
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
160
|
+
while (1) {
|
|
161
|
+
switch (_context4.prev = _context4.next) {
|
|
162
|
+
case 0:
|
|
163
|
+
options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
|
|
164
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
165
|
+
_context4.next = 4;
|
|
166
|
+
return this.instance.client().makeRequest({
|
|
167
|
+
method: "PUT",
|
|
168
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/channel_types"),
|
|
169
|
+
data: channelTypePreferences
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
case 4:
|
|
173
|
+
result = _context4.sent;
|
|
174
|
+
return _context4.abrupt("return", this.handleResponse(result));
|
|
175
|
+
|
|
176
|
+
case 6:
|
|
177
|
+
case "end":
|
|
178
|
+
return _context4.stop();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, _callee4, this);
|
|
182
|
+
}));
|
|
183
|
+
|
|
184
|
+
function setChannelTypes(_x2) {
|
|
185
|
+
return _setChannelTypes.apply(this, arguments);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return setChannelTypes;
|
|
189
|
+
}()
|
|
190
|
+
}, {
|
|
191
|
+
key: "setChannelType",
|
|
192
|
+
value: function () {
|
|
193
|
+
var _setChannelType = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(channelType, setting) {
|
|
194
|
+
var options,
|
|
195
|
+
preferenceSetId,
|
|
196
|
+
result,
|
|
197
|
+
_args5 = arguments;
|
|
198
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
199
|
+
while (1) {
|
|
200
|
+
switch (_context5.prev = _context5.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
options = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
|
|
203
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
204
|
+
_context5.next = 4;
|
|
205
|
+
return this.instance.client().makeRequest({
|
|
206
|
+
method: "PUT",
|
|
207
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/channel_types/").concat(channelType),
|
|
208
|
+
data: {
|
|
209
|
+
subscribed: setting
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
case 4:
|
|
214
|
+
result = _context5.sent;
|
|
215
|
+
return _context5.abrupt("return", this.handleResponse(result));
|
|
216
|
+
|
|
217
|
+
case 6:
|
|
218
|
+
case "end":
|
|
219
|
+
return _context5.stop();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}, _callee5, this);
|
|
223
|
+
}));
|
|
224
|
+
|
|
225
|
+
function setChannelType(_x3, _x4) {
|
|
226
|
+
return _setChannelType.apply(this, arguments);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return setChannelType;
|
|
230
|
+
}()
|
|
231
|
+
}, {
|
|
232
|
+
key: "setWorkflows",
|
|
233
|
+
value: function () {
|
|
234
|
+
var _setWorkflows = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(workflowPreferences) {
|
|
235
|
+
var options,
|
|
236
|
+
preferenceSetId,
|
|
237
|
+
result,
|
|
238
|
+
_args6 = arguments;
|
|
239
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
240
|
+
while (1) {
|
|
241
|
+
switch (_context6.prev = _context6.next) {
|
|
242
|
+
case 0:
|
|
243
|
+
options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
|
|
244
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
245
|
+
_context6.next = 4;
|
|
246
|
+
return this.instance.client().makeRequest({
|
|
247
|
+
method: "PUT",
|
|
248
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/workflows"),
|
|
249
|
+
data: workflowPreferences
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
case 4:
|
|
253
|
+
result = _context6.sent;
|
|
254
|
+
return _context6.abrupt("return", this.handleResponse(result));
|
|
255
|
+
|
|
256
|
+
case 6:
|
|
257
|
+
case "end":
|
|
258
|
+
return _context6.stop();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, _callee6, this);
|
|
262
|
+
}));
|
|
263
|
+
|
|
264
|
+
function setWorkflows(_x5) {
|
|
265
|
+
return _setWorkflows.apply(this, arguments);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return setWorkflows;
|
|
269
|
+
}()
|
|
270
|
+
}, {
|
|
271
|
+
key: "setWorkflow",
|
|
272
|
+
value: function () {
|
|
273
|
+
var _setWorkflow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(workflowKey, setting) {
|
|
274
|
+
var options,
|
|
275
|
+
preferenceSetId,
|
|
276
|
+
params,
|
|
277
|
+
result,
|
|
278
|
+
_args7 = arguments;
|
|
279
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
280
|
+
while (1) {
|
|
281
|
+
switch (_context7.prev = _context7.next) {
|
|
282
|
+
case 0:
|
|
283
|
+
options = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {};
|
|
284
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
285
|
+
params = buildUpdateParam(setting);
|
|
286
|
+
_context7.next = 5;
|
|
287
|
+
return this.instance.client().makeRequest({
|
|
288
|
+
method: "PUT",
|
|
289
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/workflows/").concat(workflowKey),
|
|
290
|
+
data: params
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
case 5:
|
|
294
|
+
result = _context7.sent;
|
|
295
|
+
return _context7.abrupt("return", this.handleResponse(result));
|
|
296
|
+
|
|
297
|
+
case 7:
|
|
298
|
+
case "end":
|
|
299
|
+
return _context7.stop();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}, _callee7, this);
|
|
303
|
+
}));
|
|
304
|
+
|
|
305
|
+
function setWorkflow(_x6, _x7) {
|
|
306
|
+
return _setWorkflow.apply(this, arguments);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
return setWorkflow;
|
|
310
|
+
}()
|
|
311
|
+
}, {
|
|
312
|
+
key: "setCategories",
|
|
313
|
+
value: function () {
|
|
314
|
+
var _setCategories = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(categoryPreferences) {
|
|
315
|
+
var options,
|
|
316
|
+
preferenceSetId,
|
|
317
|
+
result,
|
|
318
|
+
_args8 = arguments;
|
|
319
|
+
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
320
|
+
while (1) {
|
|
321
|
+
switch (_context8.prev = _context8.next) {
|
|
322
|
+
case 0:
|
|
323
|
+
options = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {};
|
|
324
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
325
|
+
_context8.next = 4;
|
|
326
|
+
return this.instance.client().makeRequest({
|
|
327
|
+
method: "PUT",
|
|
328
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/categories"),
|
|
329
|
+
data: categoryPreferences
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
case 4:
|
|
333
|
+
result = _context8.sent;
|
|
334
|
+
return _context8.abrupt("return", this.handleResponse(result));
|
|
335
|
+
|
|
336
|
+
case 6:
|
|
337
|
+
case "end":
|
|
338
|
+
return _context8.stop();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}, _callee8, this);
|
|
342
|
+
}));
|
|
343
|
+
|
|
344
|
+
function setCategories(_x8) {
|
|
345
|
+
return _setCategories.apply(this, arguments);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
return setCategories;
|
|
349
|
+
}()
|
|
350
|
+
}, {
|
|
351
|
+
key: "setCategory",
|
|
352
|
+
value: function () {
|
|
353
|
+
var _setCategory = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(categoryKey, setting) {
|
|
354
|
+
var options,
|
|
355
|
+
preferenceSetId,
|
|
356
|
+
params,
|
|
357
|
+
result,
|
|
358
|
+
_args9 = arguments;
|
|
359
|
+
return _regenerator["default"].wrap(function _callee9$(_context9) {
|
|
360
|
+
while (1) {
|
|
361
|
+
switch (_context9.prev = _context9.next) {
|
|
362
|
+
case 0:
|
|
363
|
+
options = _args9.length > 2 && _args9[2] !== undefined ? _args9[2] : {};
|
|
364
|
+
preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;
|
|
365
|
+
params = buildUpdateParam(setting);
|
|
366
|
+
_context9.next = 5;
|
|
367
|
+
return this.instance.client().makeRequest({
|
|
368
|
+
method: "PUT",
|
|
369
|
+
url: "/v1/users/".concat(this.instance.userId, "/preferences/").concat(preferenceSetId, "/categories/").concat(categoryKey),
|
|
370
|
+
data: params
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
case 5:
|
|
374
|
+
result = _context9.sent;
|
|
375
|
+
return _context9.abrupt("return", this.handleResponse(result));
|
|
376
|
+
|
|
377
|
+
case 7:
|
|
378
|
+
case "end":
|
|
379
|
+
return _context9.stop();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}, _callee9, this);
|
|
383
|
+
}));
|
|
384
|
+
|
|
385
|
+
function setCategory(_x9, _x10) {
|
|
386
|
+
return _setCategory.apply(this, arguments);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
return setCategory;
|
|
390
|
+
}()
|
|
391
|
+
}, {
|
|
392
|
+
key: "handleResponse",
|
|
393
|
+
value: function handleResponse(response) {
|
|
394
|
+
if (response.statusCode === "error") {
|
|
395
|
+
throw new Error(response.error || response.body);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
return response.body;
|
|
399
|
+
}
|
|
400
|
+
}]);
|
|
401
|
+
return Preferences;
|
|
402
|
+
}();
|
|
403
|
+
|
|
404
|
+
var _default = Preferences;
|
|
405
|
+
exports["default"] = _default;
|
|
406
|
+
//# sourceMappingURL=index.js.map
|