botframework-webchat-component 4.15.0 → 4.15.2-main.20220413.d89850f
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/lib/Activity/CarouselLayout.js +3 -3
- package/lib/Activity/Speak.d.ts +2 -2
- package/lib/Activity/Speak.d.ts.map +1 -1
- package/lib/Activity/Speak.js +14 -7
- package/lib/Activity/StackedLayout.d.ts +5 -3
- package/lib/Activity/StackedLayout.d.ts.map +1 -1
- package/lib/Activity/StackedLayout.js +15 -20
- package/lib/Attachment/FileContent.js +2 -2
- package/lib/BasicSendBox.d.ts.map +1 -1
- package/lib/BasicSendBox.js +7 -8
- package/lib/BasicToast.js +1 -1
- package/lib/BasicToaster.js +1 -1
- package/lib/BasicTranscript.d.ts.map +1 -1
- package/lib/BasicTranscript.js +30 -15
- package/lib/BasicTypingIndicator.js +1 -1
- package/lib/Composer.js +3 -3
- package/lib/ConnectivityStatus/Connecting.js +1 -1
- package/lib/Dictation.js +1 -1
- package/lib/Middleware/Activity/createCoreMiddleware.d.ts.map +1 -1
- package/lib/Middleware/Activity/createCoreMiddleware.js +9 -12
- package/lib/Middleware/ActivityStatus/SendStatus/SendFailedRetry.js +1 -1
- package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.d.ts +2 -2
- package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.d.ts.map +1 -1
- package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.js +4 -3
- package/lib/Middleware/ActivityStatus/Timestamp.d.ts +2 -2
- package/lib/Middleware/ActivityStatus/Timestamp.d.ts.map +1 -1
- package/lib/Middleware/ActivityStatus/Timestamp.js +4 -2
- package/lib/Middleware/ActivityStatus/createSendStatusMiddleware.js +2 -2
- package/lib/ReactWebChat.js +2 -2
- package/lib/ScreenReaderActivity.js +1 -1
- package/lib/ScreenReaderText.js +1 -1
- package/lib/SendBox/AutoResizeTextArea.js +1 -1
- package/lib/SendBox/IconButton.js +1 -1
- package/lib/SendBox/MicrophoneButton.js +1 -1
- package/lib/SendBox/SendButton.js +1 -1
- package/lib/SendBox/SuggestedAction.js +2 -2
- package/lib/SendBox/SuggestedActions.js +2 -2
- package/lib/SendBox/TextBox.js +3 -3
- package/lib/SendBox/UploadButton.js +3 -3
- package/lib/Styles/StyleSet/Bubble.js +2 -2
- package/lib/Styles/StyleSet/CarouselFilmStrip.js +2 -2
- package/lib/Styles/StyleSet/CarouselFilmStripAttachment.js +2 -2
- package/lib/Styles/createStyleSet.d.ts +1 -1
- package/lib/Styles/createStyleSet.js +2 -2
- package/lib/Transcript/ActivityRow.d.ts +2 -2
- package/lib/Transcript/ActivityRow.d.ts.map +1 -1
- package/lib/Transcript/ActivityRow.js +4 -2
- package/lib/Transcript/ActivityTextAlt.js +1 -1
- package/lib/Transcript/FocusTrap.js +1 -1
- package/lib/Transcript/KeyboardHelp.js +1 -1
- package/lib/Transcript/LiveRegionTranscript.d.ts.map +1 -1
- package/lib/Transcript/LiveRegionTranscript.js +22 -7
- package/lib/Transcript/useActivityAccessibleName.d.ts +2 -2
- package/lib/Transcript/useActivityAccessibleName.d.ts.map +1 -1
- package/lib/Transcript/useActivityAccessibleName.js +2 -2
- package/lib/Transcript/useTypistNames.d.ts +3 -0
- package/lib/Transcript/useTypistNames.d.ts.map +1 -0
- package/lib/Transcript/useTypistNames.js +61 -0
- package/lib/Utils/AccessKeySink/Surface.js +1 -1
- package/lib/Utils/AccessibleButton.js +1 -1
- package/lib/Utils/AccessibleInputText.js +1 -1
- package/lib/Utils/AccessibleTextArea.js +1 -1
- package/lib/Utils/CroppedImage.js +1 -1
- package/lib/Utils/FocusRedirector.js +1 -1
- package/lib/Utils/InlineMarkdown.js +3 -3
- package/lib/Utils/TypeFocusSink/FocusBox.js +1 -1
- package/lib/Utils/addTargetBlankToHyperlinksMarkdown.js +2 -2
- package/lib/Utils/downscaleImageToDataURL/index.js +1 -1
- package/lib/Utils/getActivityUniqueId.js +1 -1
- package/lib/connectToWebChat.js +2 -2
- package/lib/hooks/internal/BypassSpeechSynthesisPonyfill.js +3 -3
- package/lib/hooks/internal/useMemoize.d.ts +1 -1
- package/lib/hooks/internal/useMemoize.d.ts.map +1 -1
- package/lib/hooks/internal/useMemoize.js +1 -1
- package/lib/hooks/useObserveTranscriptFocus.d.ts +2 -2
- package/lib/hooks/useObserveTranscriptFocus.d.ts.map +1 -1
- package/lib/hooks/useObserveTranscriptFocus.js +1 -1
- package/lib/hooks/useSendFiles.d.ts.map +1 -1
- package/lib/hooks/useSendFiles.js +4 -4
- package/lib/index.d.ts +3 -3
- package/lib/index.js +5 -5
- package/lib/providers/ActivityTree/ActivityTreeComposer.d.ts.map +1 -1
- package/lib/providers/ActivityTree/ActivityTreeComposer.js +2 -2
- package/lib/providers/ActivityTree/private/types.d.ts +2 -2
- package/lib/providers/ActivityTree/private/types.d.ts.map +1 -1
- package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.d.ts +2 -2
- package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.d.ts.map +1 -1
- package/lib/providers/ActivityTree/private/useActivitiesWithRenderer.js +1 -1
- package/lib/providers/ActivityTree/private/useActivityTreeWithRenderer.d.ts.map +1 -1
- package/lib/providers/ActivityTree/private/useActivityTreeWithRenderer.js +1 -1
- package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.d.ts +2 -0
- package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.d.ts.map +1 -1
- package/lib/providers/LiveRegionTwin/LiveRegionTwinComposer.js +10 -6
- package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.d.ts +1 -0
- package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.d.ts.map +1 -1
- package/lib/providers/LiveRegionTwin/private/LiveRegionTwinContainer.js +22 -8
- package/lib/providers/TranscriptFocus/TranscriptFocusComposer.js +1 -1
- package/package.json +24 -20
- package/src/Activity/Speak.tsx +21 -18
- package/src/Activity/StackedLayout.tsx +20 -26
- package/src/Attachment/FileContent.tsx +1 -1
- package/src/BasicSendBox.tsx +3 -2
- package/src/BasicTranscript.tsx +29 -13
- package/src/Middleware/Activity/createCoreMiddleware.tsx +5 -10
- package/src/Middleware/ActivityStatus/SendStatus/SendStatus.tsx +5 -3
- package/src/Middleware/ActivityStatus/Timestamp.tsx +5 -3
- package/src/SendBox/SuggestedAction.tsx +1 -1
- package/src/SendBox/SuggestedActions.tsx +1 -1
- package/src/Transcript/ActivityRow.tsx +4 -5
- package/src/Transcript/ActivityTextAlt.tsx +2 -3
- package/src/Transcript/LiveRegionTranscript.tsx +27 -12
- package/src/Transcript/useActivityAccessibleName.ts +3 -4
- package/src/Transcript/useTypistNames.ts +37 -0
- package/src/Utils/getActivityUniqueId.ts +2 -2
- package/src/hooks/internal/useMemoize.ts +6 -6
- package/src/hooks/useObserveTranscriptFocus.ts +2 -2
- package/src/hooks/useSendFiles.ts +7 -5
- package/src/providers/ActivityTree/ActivityTreeComposer.tsx +2 -2
- package/src/providers/ActivityTree/private/types.ts +2 -2
- package/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts +4 -6
- package/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts +6 -11
- package/src/providers/LiveRegionTwin/LiveRegionTwinComposer.tsx +10 -3
- package/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx +22 -6
- package/lib/Middleware/GroupActivities/createCoreMiddleware.js +0 -69
- package/src/Middleware/GroupActivities/createCoreMiddleware.js +0 -57
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = createDefaultGroupActivityMiddleware;
|
|
7
|
-
|
|
8
|
-
var _botframeworkWebchatCore = require("botframework-webchat-core");
|
|
9
|
-
|
|
10
|
-
var SENT = _botframeworkWebchatCore.Constants.ActivityClientState.SENT;
|
|
11
|
-
|
|
12
|
-
function bin(items, grouping) {
|
|
13
|
-
var lastBin;
|
|
14
|
-
var bins = [];
|
|
15
|
-
var lastItem;
|
|
16
|
-
items.forEach(function (item) {
|
|
17
|
-
if (lastItem && grouping(lastItem, item)) {
|
|
18
|
-
lastBin.push(item);
|
|
19
|
-
} else {
|
|
20
|
-
lastBin = [item];
|
|
21
|
-
bins.push(lastBin);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
lastItem = item;
|
|
25
|
-
});
|
|
26
|
-
return bins;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function sending(activity) {
|
|
30
|
-
return activity.from.role === 'user' && activity.channelData && activity.channelData.state !== SENT;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function shouldGroupTimestamp(activityX, activityY, groupTimestamp) {
|
|
34
|
-
if (groupTimestamp === false) {
|
|
35
|
-
// Hide timestamp for all activities.
|
|
36
|
-
return true;
|
|
37
|
-
} else if (activityX && activityY) {
|
|
38
|
-
if (sending(activityX) !== sending(activityY)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
groupTimestamp = typeof groupTimestamp === 'number' ? groupTimestamp : Infinity;
|
|
43
|
-
var timeX = new Date(activityX.timestamp).getTime();
|
|
44
|
-
var timeY = new Date(activityY.timestamp).getTime();
|
|
45
|
-
return Math.abs(timeX - timeY) <= groupTimestamp;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function createDefaultGroupActivityMiddleware(_ref) {
|
|
52
|
-
var groupTimestamp = _ref.groupTimestamp;
|
|
53
|
-
return function () {
|
|
54
|
-
return function () {
|
|
55
|
-
return function (_ref2) {
|
|
56
|
-
var activities = _ref2.activities;
|
|
57
|
-
return {
|
|
58
|
-
sender: bin(activities, function (x, y) {
|
|
59
|
-
return x.from.role === y.from.role;
|
|
60
|
-
}),
|
|
61
|
-
status: bin(activities, function (x, y) {
|
|
62
|
-
return shouldGroupTimestamp(x, y, groupTimestamp);
|
|
63
|
-
})
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9NaWRkbGV3YXJlL0dyb3VwQWN0aXZpdGllcy9jcmVhdGVDb3JlTWlkZGxld2FyZS5qcyJdLCJuYW1lcyI6WyJTRU5UIiwiQ29uc3RhbnRzIiwiQWN0aXZpdHlDbGllbnRTdGF0ZSIsImJpbiIsIml0ZW1zIiwiZ3JvdXBpbmciLCJsYXN0QmluIiwiYmlucyIsImxhc3RJdGVtIiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwic2VuZGluZyIsImFjdGl2aXR5IiwiZnJvbSIsInJvbGUiLCJjaGFubmVsRGF0YSIsInN0YXRlIiwic2hvdWxkR3JvdXBUaW1lc3RhbXAiLCJhY3Rpdml0eVgiLCJhY3Rpdml0eVkiLCJncm91cFRpbWVzdGFtcCIsIkluZmluaXR5IiwidGltZVgiLCJEYXRlIiwidGltZXN0YW1wIiwiZ2V0VGltZSIsInRpbWVZIiwiTWF0aCIsImFicyIsImNyZWF0ZURlZmF1bHRHcm91cEFjdGl2aXR5TWlkZGxld2FyZSIsImFjdGl2aXRpZXMiLCJzZW5kZXIiLCJ4IiwieSIsInN0YXR1cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBLElBQ3lCQSxJQUR6QixHQUVJQyxrQ0FGSixDQUNFQyxtQkFERixDQUN5QkYsSUFEekI7O0FBSUEsU0FBU0csR0FBVCxDQUFhQyxLQUFiLEVBQW9CQyxRQUFwQixFQUE4QjtBQUM1QixNQUFJQyxPQUFKO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLEVBQWI7QUFDQSxNQUFJQyxRQUFKO0FBRUFKLEVBQUFBLEtBQUssQ0FBQ0ssT0FBTixDQUFjLFVBQUFDLElBQUksRUFBSTtBQUNwQixRQUFJRixRQUFRLElBQUlILFFBQVEsQ0FBQ0csUUFBRCxFQUFXRSxJQUFYLENBQXhCLEVBQTBDO0FBQ3hDSixNQUFBQSxPQUFPLENBQUNLLElBQVIsQ0FBYUQsSUFBYjtBQUNELEtBRkQsTUFFTztBQUNMSixNQUFBQSxPQUFPLEdBQUcsQ0FBQ0ksSUFBRCxDQUFWO0FBQ0FILE1BQUFBLElBQUksQ0FBQ0ksSUFBTCxDQUFVTCxPQUFWO0FBQ0Q7O0FBRURFLElBQUFBLFFBQVEsR0FBR0UsSUFBWDtBQUNELEdBVEQ7QUFXQSxTQUFPSCxJQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssT0FBVCxDQUFpQkMsUUFBakIsRUFBMkI7QUFDekIsU0FBT0EsUUFBUSxDQUFDQyxJQUFULENBQWNDLElBQWQsS0FBdUIsTUFBdkIsSUFBaUNGLFFBQVEsQ0FBQ0csV0FBMUMsSUFBeURILFFBQVEsQ0FBQ0csV0FBVCxDQUFxQkMsS0FBckIsS0FBK0JqQixJQUEvRjtBQUNEOztBQUVELFNBQVNrQixvQkFBVCxDQUE4QkMsU0FBOUIsRUFBeUNDLFNBQXpDLEVBQW9EQyxjQUFwRCxFQUFvRTtBQUNsRSxNQUFJQSxjQUFjLEtBQUssS0FBdkIsRUFBOEI7QUFDNUI7QUFDQSxXQUFPLElBQVA7QUFDRCxHQUhELE1BR08sSUFBSUYsU0FBUyxJQUFJQyxTQUFqQixFQUE0QjtBQUNqQyxRQUFJUixPQUFPLENBQUNPLFNBQUQsQ0FBUCxLQUF1QlAsT0FBTyxDQUFDUSxTQUFELENBQWxDLEVBQStDO0FBQzdDLGFBQU8sS0FBUDtBQUNEOztBQUVEQyxJQUFBQSxjQUFjLEdBQUcsT0FBT0EsY0FBUCxLQUEwQixRQUExQixHQUFxQ0EsY0FBckMsR0FBc0RDLFFBQXZFO0FBRUEsUUFBTUMsS0FBSyxHQUFHLElBQUlDLElBQUosQ0FBU0wsU0FBUyxDQUFDTSxTQUFuQixFQUE4QkMsT0FBOUIsRUFBZDtBQUNBLFFBQU1DLEtBQUssR0FBRyxJQUFJSCxJQUFKLENBQVNKLFNBQVMsQ0FBQ0ssU0FBbkIsRUFBOEJDLE9BQTlCLEVBQWQ7QUFFQSxXQUFPRSxJQUFJLENBQUNDLEdBQUwsQ0FBU04sS0FBSyxHQUFHSSxLQUFqQixLQUEyQk4sY0FBbEM7QUFDRDs7QUFFRCxTQUFPLEtBQVA7QUFDRDs7QUFFYyxTQUFTUyxvQ0FBVCxPQUFrRTtBQUFBLE1BQWxCVCxjQUFrQixRQUFsQkEsY0FBa0I7QUFDL0UsU0FBTztBQUFBLFdBQ0w7QUFBQSxhQUNBO0FBQUEsWUFBR1UsVUFBSCxTQUFHQSxVQUFIO0FBQUEsZUFBcUI7QUFDbkJDLFVBQUFBLE1BQU0sRUFBRTdCLEdBQUcsQ0FBQzRCLFVBQUQsRUFBYSxVQUFDRSxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVUQsQ0FBQyxDQUFDbkIsSUFBRixDQUFPQyxJQUFQLEtBQWdCbUIsQ0FBQyxDQUFDcEIsSUFBRixDQUFPQyxJQUFqQztBQUFBLFdBQWIsQ0FEUTtBQUVuQm9CLFVBQUFBLE1BQU0sRUFBRWhDLEdBQUcsQ0FBQzRCLFVBQUQsRUFBYSxVQUFDRSxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVWhCLG9CQUFvQixDQUFDZSxDQUFELEVBQUlDLENBQUosRUFBT2IsY0FBUCxDQUE5QjtBQUFBLFdBQWI7QUFGUSxTQUFyQjtBQUFBLE9BREE7QUFBQSxLQURLO0FBQUEsR0FBUDtBQU1EIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcblxuY29uc3Qge1xuICBBY3Rpdml0eUNsaWVudFN0YXRlOiB7IFNFTlQgfVxufSA9IENvbnN0YW50cztcblxuZnVuY3Rpb24gYmluKGl0ZW1zLCBncm91cGluZykge1xuICBsZXQgbGFzdEJpbjtcbiAgY29uc3QgYmlucyA9IFtdO1xuICBsZXQgbGFzdEl0ZW07XG5cbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICBpZiAobGFzdEl0ZW0gJiYgZ3JvdXBpbmcobGFzdEl0ZW0sIGl0ZW0pKSB7XG4gICAgICBsYXN0QmluLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3RCaW4gPSBbaXRlbV07XG4gICAgICBiaW5zLnB1c2gobGFzdEJpbik7XG4gICAgfVxuXG4gICAgbGFzdEl0ZW0gPSBpdGVtO1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZnVuY3Rpb24gc2VuZGluZyhhY3Rpdml0eSkge1xuICByZXR1cm4gYWN0aXZpdHkuZnJvbS5yb2xlID09PSAndXNlcicgJiYgYWN0aXZpdHkuY2hhbm5lbERhdGEgJiYgYWN0aXZpdHkuY2hhbm5lbERhdGEuc3RhdGUgIT09IFNFTlQ7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEdyb3VwVGltZXN0YW1wKGFjdGl2aXR5WCwgYWN0aXZpdHlZLCBncm91cFRpbWVzdGFtcCkge1xuICBpZiAoZ3JvdXBUaW1lc3RhbXAgPT09IGZhbHNlKSB7XG4gICAgLy8gSGlkZSB0aW1lc3RhbXAgZm9yIGFsbCBhY3Rpdml0aWVzLlxuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGFjdGl2aXR5WCAmJiBhY3Rpdml0eVkpIHtcbiAgICBpZiAoc2VuZGluZyhhY3Rpdml0eVgpICE9PSBzZW5kaW5nKGFjdGl2aXR5WSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBncm91cFRpbWVzdGFtcCA9IHR5cGVvZiBncm91cFRpbWVzdGFtcCA9PT0gJ251bWJlcicgPyBncm91cFRpbWVzdGFtcCA6IEluZmluaXR5O1xuXG4gICAgY29uc3QgdGltZVggPSBuZXcgRGF0ZShhY3Rpdml0eVgudGltZXN0YW1wKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGltZVkgPSBuZXcgRGF0ZShhY3Rpdml0eVkudGltZXN0YW1wKS5nZXRUaW1lKCk7XG5cbiAgICByZXR1cm4gTWF0aC5hYnModGltZVggLSB0aW1lWSkgPD0gZ3JvdXBUaW1lc3RhbXA7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRHcm91cEFjdGl2aXR5TWlkZGxld2FyZSh7IGdyb3VwVGltZXN0YW1wIH0pIHtcbiAgcmV0dXJuICgpID0+XG4gICAgKCkgPT5cbiAgICAoeyBhY3Rpdml0aWVzIH0pID0+ICh7XG4gICAgICBzZW5kZXI6IGJpbihhY3Rpdml0aWVzLCAoeCwgeSkgPT4geC5mcm9tLnJvbGUgPT09IHkuZnJvbS5yb2xlKSxcbiAgICAgIHN0YXR1czogYmluKGFjdGl2aXRpZXMsICh4LCB5KSA9PiBzaG91bGRHcm91cFRpbWVzdGFtcCh4LCB5LCBncm91cFRpbWVzdGFtcCkpXG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Constants } from 'botframework-webchat-core';
|
|
2
|
-
|
|
3
|
-
const {
|
|
4
|
-
ActivityClientState: { SENT }
|
|
5
|
-
} = Constants;
|
|
6
|
-
|
|
7
|
-
function bin(items, grouping) {
|
|
8
|
-
let lastBin;
|
|
9
|
-
const bins = [];
|
|
10
|
-
let lastItem;
|
|
11
|
-
|
|
12
|
-
items.forEach(item => {
|
|
13
|
-
if (lastItem && grouping(lastItem, item)) {
|
|
14
|
-
lastBin.push(item);
|
|
15
|
-
} else {
|
|
16
|
-
lastBin = [item];
|
|
17
|
-
bins.push(lastBin);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
lastItem = item;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
return bins;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function sending(activity) {
|
|
27
|
-
return activity.from.role === 'user' && activity.channelData && activity.channelData.state !== SENT;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function shouldGroupTimestamp(activityX, activityY, groupTimestamp) {
|
|
31
|
-
if (groupTimestamp === false) {
|
|
32
|
-
// Hide timestamp for all activities.
|
|
33
|
-
return true;
|
|
34
|
-
} else if (activityX && activityY) {
|
|
35
|
-
if (sending(activityX) !== sending(activityY)) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
groupTimestamp = typeof groupTimestamp === 'number' ? groupTimestamp : Infinity;
|
|
40
|
-
|
|
41
|
-
const timeX = new Date(activityX.timestamp).getTime();
|
|
42
|
-
const timeY = new Date(activityY.timestamp).getTime();
|
|
43
|
-
|
|
44
|
-
return Math.abs(timeX - timeY) <= groupTimestamp;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export default function createDefaultGroupActivityMiddleware({ groupTimestamp }) {
|
|
51
|
-
return () =>
|
|
52
|
-
() =>
|
|
53
|
-
({ activities }) => ({
|
|
54
|
-
sender: bin(activities, (x, y) => x.from.role === y.from.role),
|
|
55
|
-
status: bin(activities, (x, y) => shouldGroupTimestamp(x, y, groupTimestamp))
|
|
56
|
-
});
|
|
57
|
-
}
|