@plusscommunities/pluss-circles-web-groups 1.5.7-beta.0 → 1.5.7-beta.2

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/dist/index.cjs.js CHANGED
@@ -64,30 +64,30 @@ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumab
64
64
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
65
65
 
66
66
  var values = {
67
- featureKey: 'circles',
68
- entityKey: 'circle',
69
- entityName: 'circle',
70
- serviceKey: 'circles',
71
- permission: 'circles',
72
- menuIcon: 'circle-o',
67
+ featureKey: 'groups',
68
+ entityKey: 'group',
69
+ entityName: 'group',
70
+ serviceKey: 'groups',
71
+ permission: 'groups',
72
+ menuIcon: 'comments',
73
73
  isFontAwesome: true,
74
- reducerKey: 'circles',
75
- actionCircleKey: 'CIRCLE',
76
- textFeatureTitle: 'Circles',
77
- textAddMenuTitle: 'Circle',
78
- textEmptyGroups: "You aren't in any Circles",
74
+ reducerKey: 'groups',
75
+ actionCircleKey: 'GROUP',
76
+ textFeatureTitle: 'Groups',
77
+ textAddMenuTitle: 'Group',
78
+ textEmptyGroups: "You aren't in any Groups",
79
79
  textEmptyPeople: 'Contacts will show here',
80
- componentCircles: 'Circles',
81
- componentAddCircle: 'AddCircle',
82
- componentCircle: 'Circle',
83
- inviteKey: 'circleInvite',
84
- messageKey: 'circleMessage',
85
- chatRoute: 'circleChat',
86
- updateKeyUserCircles: 'userCircles',
87
- allowPublicKey: 'circleAllowPublicCircles',
88
- allowPublicKeyDefault: false,
80
+ componentCircles: 'Groups',
81
+ componentAddCircle: 'AddGroup',
82
+ componentCircle: 'Group',
83
+ inviteKey: 'groupInvite',
84
+ messageKey: 'groupMessage',
85
+ chatRoute: 'groupChat',
86
+ updateKeyUserCircles: 'userGroups',
87
+ allowPublicKey: 'groupAllowPublicGroups',
88
+ allowPublicKeyDefault: true,
89
89
  settings: {
90
- allowAnyCreate: false
90
+ allowAnyCreate: true
91
91
  }
92
92
  };
93
93
 
@@ -376,12 +376,46 @@ var circleActions = {
376
376
  }
377
377
 
378
378
  return deleteMessage;
379
+ }(),
380
+ markAsRead: function () {
381
+ var _markAsRead = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4(circleId, userId) {
382
+ return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
383
+ while (1) {
384
+ switch (_context4.prev = _context4.next) {
385
+ case 0:
386
+ return _context4.abrupt("return", Session$4.authedFunction({
387
+ method: 'post',
388
+ url: Helper$3.getUrl('groups', 'resetunread'),
389
+ data: {
390
+ groupID: circleId,
391
+ userID: userId
392
+ }
393
+ }));
394
+
395
+ case 1:
396
+ case "end":
397
+ return _context4.stop();
398
+ }
399
+ }
400
+ }, _callee4);
401
+ }));
402
+
403
+ function markAsRead(_x9, _x10) {
404
+ return _markAsRead.apply(this, arguments);
405
+ }
406
+
407
+ return markAsRead;
379
408
  }()
380
409
  };
381
410
 
382
411
  var Apis$1 = PlussCore__namespace.Apis;
383
412
  var analyticsActions = Apis$1.analyticsActions;
384
413
 
414
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
415
+
416
+ var css = "/* Badge styling for unread count */\n:root {\n --badge-bg-color: #597db4; /* COLOUR_BRANDING_OFF */\n}\n\n.badgeTag {\n font-size: 11px;\n font-weight: 400;\n padding: 3px 10px;\n background-color: var(--badge-bg-color) !important;\n color: #fff !important;\n border-radius: 999px !important;\n border: none !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n letter-spacing: 0.02em;\n}\n\n/* Unread filter info banner */\n.unreadFilterBanner {\n background-color: #f0f4f8;\n border-left: 3px solid var(--badge-bg-color);\n border-radius: 4px;\n padding: 12px 16px;\n margin-top: 16px;\n margin-bottom: 16px;\n display: flex;\n align-items: center;\n}\n\n.unreadFilterContent {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n}\n\n.unreadFilterIcon {\n font-size: 16px;\n color: var(--badge-bg-color);\n flex-shrink: 0;\n}\n\n.unreadFilterText {\n font-size: 14px;\n line-height: 1.5;\n color: #333333;\n}\n\n.unreadFilterButton {\n background: none;\n border: none;\n color: var(--badge-bg-color);\n font-size: 14px;\n font-weight: 500;\n text-decoration: underline;\n cursor: pointer;\n padding: 4px 8px;\n margin-left: 4px;\n min-height: 32px;\n min-width: 32px;\n transition: all 0.2s ease;\n}\n\n.unreadFilterButton:hover {\n background-color: rgba(89, 125, 180, 0.1);\n text-decoration: none;\n}\n\n.unreadFilterButton:focus {\n outline: 2px solid var(--badge-bg-color);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Mobile responsiveness */\n@media (max-width: 768px) {\n .unreadFilterBanner {\n flex-direction: column;\n align-items: flex-start;\n padding: 12px;\n }\n\n .unreadFilterContent {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .unreadFilterText {\n font-size: 13px;\n }\n}\n\n";
417
+ n(css,{});
418
+
385
419
  function _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
386
420
 
387
421
  function _isNativeReflectConstruct$7() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -447,6 +481,12 @@ var Circles = /*#__PURE__*/function (_Component) {
447
481
  })));
448
482
  });
449
483
 
484
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "selectUnreadFilter", function (showUnreadOnly) {
485
+ _this.setState({
486
+ showUnreadOnly: showUnreadOnly
487
+ });
488
+ });
489
+
450
490
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "canAddNew", function () {
451
491
  var auth = _this.props.auth;
452
492
  return Session$3.validateAccess(auth.site, values.permission, auth);
@@ -559,7 +599,9 @@ var Circles = /*#__PURE__*/function (_Component) {
559
599
 
560
600
  _this.state = {
561
601
  userSearch: "",
562
- sortBy: "newest"
602
+ sortBy: "newest",
603
+ showUnreadOnly: false,
604
+ pollingInterval: null
563
605
  };
564
606
  return _this;
565
607
  }
@@ -567,25 +609,60 @@ var Circles = /*#__PURE__*/function (_Component) {
567
609
  _createClass__default['default'](Circles, [{
568
610
  key: "componentDidMount",
569
611
  value: function componentDidMount() {
570
- this.getData();
612
+ var _this2 = this;
613
+
614
+ this.getData(); // Poll for updates every 10 seconds
615
+
616
+ this.pollingInterval = setInterval(function () {
617
+ _this2.getData();
618
+ }, 10000);
619
+ }
620
+ }, {
621
+ key: "componentWillUnmount",
622
+ value: function componentWillUnmount() {
623
+ if (this.pollingInterval) {
624
+ clearInterval(this.pollingInterval);
625
+ }
626
+ }
627
+ }, {
628
+ key: "isCircleUnread",
629
+ value: function isCircleUnread(circle) {
630
+ var userId = this.props.user.Id;
631
+
632
+ if (!circle.Unread || !circle.Unread[userId]) {
633
+ return false;
634
+ }
635
+
636
+ return circle.Unread[userId] > 0;
637
+ }
638
+ }, {
639
+ key: "getUnreadCount",
640
+ value: function getUnreadCount(circle) {
641
+ var userId = this.props.user.Id;
642
+
643
+ if (!circle.Unread || !circle.Unread[userId]) {
644
+ return 0;
645
+ }
646
+
647
+ return circle.Unread[userId];
571
648
  }
572
649
  }, {
573
650
  key: "getCircles",
574
651
  value: function getCircles() {
575
- var _this2 = this;
652
+ var _this3 = this;
576
653
 
577
654
  var result = this.props.circles;
578
655
 
579
656
  if (this.state.selectedTypeFilter) {
580
657
  result = ___default['default'].filter(result, function (circle) {
581
- return _this2.state.selectedTypeFilter === "circle" ? !circle.IsPrivate : circle.IsPrivate;
658
+ return _this3.state.selectedTypeFilter === "circle" ? !circle.IsPrivate : circle.IsPrivate;
582
659
  });
583
660
  }
584
661
 
585
662
  if (this.state.selectedUserFilter) {
586
663
  result = ___default['default'].filter(result, function (circle) {
587
664
  return ___default['default'].some(circle.Audience, function (user) {
588
- return user.userId === _this2.state.selectedUserFilter.userId;
665
+ return user.userId === _this3.state.selectedUserFilter.userId;
589
666
  });
590
667
  });
591
668
  } // Apply sorting
@@ -597,6 +674,12 @@ var Circles = /*#__PURE__*/function (_Component) {
597
674
 
598
675
  if (this.state.sortBy === "newest") {
599
676
  result.reverse();
677
+
678
+ if (this.state.showUnreadOnly) {
679
+ result = ___default['default'].filter(result, function (circle) {
680
+ return _this3.isCircleUnread(circle);
681
+ });
682
+ }
600
683
  }
601
684
 
602
685
  return result;
@@ -604,7 +687,7 @@ var Circles = /*#__PURE__*/function (_Component) {
604
687
  }, {
605
688
  key: "getUsers",
606
689
  value: function getUsers() {
607
- var _this3 = this;
690
+ var _this4 = this;
608
691
 
609
692
  var users = [];
610
693
  this.props.circles.forEach(function (circle) {
@@ -616,8 +699,8 @@ var Circles = /*#__PURE__*/function (_Component) {
616
699
  return user.userId;
617
700
  }), "displayName");
618
701
  return ___default['default'].filter(users, function (u) {
619
- if (!___default['default'].isEmpty(_this3.state.userSearch)) {
620
- return (u.displayName || "").toLowerCase().indexOf(_this3.state.userSearch.toLowerCase()) > -1;
702
+ if (!___default['default'].isEmpty(_this4.state.userSearch)) {
703
+ return (u.displayName || "").toLowerCase().indexOf(_this4.state.userSearch.toLowerCase()) > -1;
621
704
  }
622
705
 
623
706
  return true;
@@ -626,7 +709,7 @@ var Circles = /*#__PURE__*/function (_Component) {
626
709
  }, {
627
710
  key: "validateCircleAdmin",
628
711
  value: function validateCircleAdmin(circle, onlyCreator) {
629
- var _this4 = this;
712
+ var _this5 = this;
630
713
 
631
714
  if (Session$3.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
632
715
  return true;
@@ -637,21 +720,31 @@ var Circles = /*#__PURE__*/function (_Component) {
637
720
  }
638
721
 
639
722
  return ___default['default'].some(circle.Audience, function (user) {
640
- return user.userId === _this4.props.user.Id && user.isAdmin;
723
+ return user.userId === _this5.props.user.Id && user.isAdmin;
641
724
  });
642
725
  }
643
726
  }, {
644
727
  key: "renderRow",
645
728
  value: function renderRow(circle) {
646
- var _this5 = this;
729
+ var _this6 = this;
647
730
 
731
+ var unreadCount = this.getUnreadCount(circle);
732
+ var badge = unreadCount > 0 ? /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
733
+ className: css.badgeTag,
734
+ text: "".concat(unreadCount, " new")
735
+ }) : null;
648
736
  return /*#__PURE__*/React__default['default'].createElement("tr", {
649
737
  key: circle.Id
650
738
  }, /*#__PURE__*/React__default['default'].createElement("td", {
651
739
  className: "table-TitleColumn"
740
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
741
+ className: "flex flex-center",
742
+ style: {
743
+ gap: "8px"
744
+ }
652
745
  }, /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
653
746
  to: "/".concat(values.featureKey, "/").concat(values.entityKey, "/").concat(circle.Id)
654
- }, this.getTitle(circle))), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'](circle.Changed).local().format("D MMM YYYY")), /*#__PURE__*/React__default['default'].createElement("td", null, circle.Audience.map(function (user) {
747
+ }, this.getTitle(circle)), badge)), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'](circle.Changed).local().format("D MMM YYYY")), /*#__PURE__*/React__default['default'].createElement("td", null, circle.Audience.map(function (user) {
655
748
  return /*#__PURE__*/React__default['default'].createElement(Components$4.ProfilePic, {
656
749
  size: 30,
657
750
  image: user.profilePic,
@@ -677,7 +770,7 @@ var Circles = /*#__PURE__*/function (_Component) {
677
770
  name: "pencil"
678
771
  })), this.validateCircleAdmin(circle, true) && !circle.IsPrivate && /*#__PURE__*/React__default['default'].createElement("a", {
679
772
  onClick: function onClick() {
680
- _this5.removeCircle(circle);
773
+ _this6.removeCircle(circle);
681
774
  }
682
775
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
683
776
  style: {
@@ -689,16 +782,52 @@ var Circles = /*#__PURE__*/function (_Component) {
689
782
  name: "minus-circle"
690
783
  })))));
691
784
  }
785
+ }, {
786
+ key: "renderUnreadFilterInfo",
787
+ value: function renderUnreadFilterInfo() {
788
+ var _this7 = this;
789
+
790
+ var showUnreadOnly = this.state.showUnreadOnly;
791
+
792
+ if (!showUnreadOnly) {
793
+ return null;
794
+ }
795
+
796
+ return /*#__PURE__*/React__default['default'].createElement("div", {
797
+ className: css.unreadFilterBanner
798
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
799
+ className: css.unreadFilterContent
800
+ }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
801
+ name: "info-circle",
802
+ className: css.unreadFilterIcon
803
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
804
+ className: css.unreadFilterText
805
+ }, "Showing only items with new messages.", " ", /*#__PURE__*/React__default['default'].createElement("button", {
806
+ className: css.unreadFilterButton,
807
+ onClick: function onClick() {
808
+ return _this7.selectUnreadFilter(false);
809
+ },
810
+ "aria-label": "Turn off unread filter"
811
+ }, "Turn off filter"))));
812
+ }
692
813
  }, {
693
814
  key: "renderFilters",
694
815
  value: function renderFilters() {
695
- var _this6 = this;
816
+ var _this8 = this;
696
817
 
697
818
  var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
698
819
  className: "marginRight-10",
699
820
  onClick: this.openUserFilter,
700
821
  text: "User"
701
822
  });
823
+ var unreadFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
824
+ className: "marginRight-10",
825
+ onClick: function onClick() {
826
+ return _this8.selectUnreadFilter(!_this8.state.showUnreadOnly);
827
+ },
828
+ leftIcon: this.state.showUnreadOnly ? "check" : null,
829
+ text: "Unread Only"
830
+ });
702
831
  var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
703
832
  className: "marginRight-10",
704
833
  onClick: this.openTypeFilter,
@@ -733,19 +862,19 @@ var Circles = /*#__PURE__*/function (_Component) {
733
862
  }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
734
863
  type: "h5",
735
864
  className: "marginRight-20"
736
- }, "Filter by"), userFilter, typeFilter, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
865
+ }, "Filter by"), userFilter, typeFilter, unreadFilter, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
737
866
  type: "h5",
738
867
  className: "marginRight-20 marginLeft-20"
739
868
  }, "Sort by:"), /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
740
869
  className: "marginRight-10",
741
870
  onClick: function onClick() {
742
- return _this6.selectSort("newest");
871
+ return _this8.selectSort("newest");
743
872
  },
744
873
  leftIcon: this.state.sortBy === "newest" ? "check" : null,
745
874
  text: "Newest first"
746
875
  }), /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
747
876
  onClick: function onClick() {
748
- return _this6.selectSort("oldest");
877
+ return _this8.selectSort("oldest");
749
878
  },
750
879
  leftIcon: this.state.sortBy === "oldest" ? "check" : null,
751
880
  text: "Oldest first"
@@ -754,7 +883,7 @@ var Circles = /*#__PURE__*/function (_Component) {
754
883
  }, {
755
884
  key: "renderUserFilterPopup",
756
885
  value: function renderUserFilterPopup() {
757
- var _this7 = this;
886
+ var _this9 = this;
758
887
 
759
888
  if (!this.state.userFilterOpen) {
760
889
  return null;
@@ -774,7 +903,7 @@ var Circles = /*#__PURE__*/function (_Component) {
774
903
  placeholder: "Enter name",
775
904
  value: this.state.userSearch,
776
905
  onChange: function onChange(e) {
777
- return _this7.onHandleChange(e);
906
+ return _this9.onHandleChange(e);
778
907
  },
779
908
  alwaysShowLabel: true
780
909
  }), this.getUsers().map(function (user) {
@@ -782,7 +911,7 @@ var Circles = /*#__PURE__*/function (_Component) {
782
911
  key: user.userId,
783
912
  user: user,
784
913
  onClick: function onClick() {
785
- _this7.selectUserFilter(user);
914
+ _this9.selectUserFilter(user);
786
915
  }
787
916
  });
788
917
  }));
@@ -790,7 +919,7 @@ var Circles = /*#__PURE__*/function (_Component) {
790
919
  }, {
791
920
  key: "renderTypeFilterPopup",
792
921
  value: function renderTypeFilterPopup() {
793
- var _this8 = this;
922
+ var _this10 = this;
794
923
 
795
924
  if (!this.state.typeFilterOpen) {
796
925
  return null;
@@ -804,13 +933,13 @@ var Circles = /*#__PURE__*/function (_Component) {
804
933
  onClose: this.closeTypeFilter
805
934
  }, /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
806
935
  onClick: function onClick() {
807
- _this8.selectTypeFilter("circle");
936
+ _this10.selectTypeFilter("circle");
808
937
  },
809
938
  text: ___default['default'].capitalize(values.entityName),
810
939
  className: "marginRight-10"
811
940
  }), /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
812
941
  onClick: function onClick() {
813
- _this8.selectTypeFilter("private");
942
+ _this10.selectTypeFilter("private");
814
943
  },
815
944
  text: "Private Message"
816
945
  }));
@@ -818,7 +947,7 @@ var Circles = /*#__PURE__*/function (_Component) {
818
947
  }, {
819
948
  key: "render",
820
949
  value: function render() {
821
- var _this9 = this;
950
+ var _this11 = this;
822
951
 
823
952
  return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderTypeFilterPopup(), this.renderUserFilterPopup(), /*#__PURE__*/React__default['default'].createElement(Components$4.Header, null, this.canAddNew() && /*#__PURE__*/React__default['default'].createElement(Components$4.AddButton, {
824
953
  onClick: this.onAddNew,
@@ -828,7 +957,7 @@ var Circles = /*#__PURE__*/function (_Component) {
828
957
  }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
829
958
  type: "h1",
830
959
  className: ""
831
- }, values.textFeatureTitle), this.renderFilters(), /*#__PURE__*/React__default['default'].createElement(reactBootstrap.Table, {
960
+ }, values.textFeatureTitle), this.renderFilters(), this.renderUnreadFilterInfo(), /*#__PURE__*/React__default['default'].createElement(reactBootstrap.Table, {
832
961
  className: "plussTable",
833
962
  striped: true,
834
963
  bordered: true,
@@ -842,7 +971,7 @@ var Circles = /*#__PURE__*/function (_Component) {
842
971
  width: 50
843
972
  }
844
973
  }))), /*#__PURE__*/React__default['default'].createElement("tbody", null, this.getCircles().map(function (circle) {
845
- return _this9.renderRow(circle);
974
+ return _this11.renderRow(circle);
846
975
  })))));
847
976
  }
848
977
  }]);
@@ -1806,6 +1935,32 @@ var Circle = /*#__PURE__*/function (_Component) {
1806
1935
  });
1807
1936
  });
1808
1937
 
1938
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "markCircleAsRead", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5() {
1939
+ return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
1940
+ while (1) {
1941
+ switch (_context5.prev = _context5.next) {
1942
+ case 0:
1943
+ _context5.prev = 0;
1944
+ _context5.next = 3;
1945
+ return circleActions.markAsRead(_this.state.circleId, _this.props.user.Id);
1946
+
1947
+ case 3:
1948
+ _context5.next = 8;
1949
+ break;
1950
+
1951
+ case 5:
1952
+ _context5.prev = 5;
1953
+ _context5.t0 = _context5["catch"](0);
1954
+ console.error("Failed to mark circle as read:", _context5.t0);
1955
+
1956
+ case 8:
1957
+ case "end":
1958
+ return _context5.stop();
1959
+ }
1960
+ }
1961
+ }, _callee5, null, [[0, 5]]);
1962
+ })));
1963
+
1809
1964
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "sendMessage", function () {
1810
1965
  var message = {
1811
1966
  _id: Helper.randomString(),
@@ -1890,6 +2045,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1890
2045
  _createClass__default['default'](Circle, [{
1891
2046
  key: "componentDidMount",
1892
2047
  value: function componentDidMount() {
2048
+ this.markCircleAsRead();
1893
2049
  this.checkGetData();
1894
2050
  this.connect();
1895
2051
  this.props.setNavData({
@@ -2026,8 +2182,8 @@ var Circle = /*#__PURE__*/function (_Component) {
2026
2182
  display: this.state.imageInputShowing ? "block" : "none"
2027
2183
  }
2028
2184
  }, /*#__PURE__*/React__default['default'].createElement(Components$2.ImageInput, {
2029
- ref: function ref(_ref5) {
2030
- _this5.imageInput = _ref5;
2185
+ ref: function ref(_ref6) {
2186
+ _this5.imageInput = _ref6;
2031
2187
  },
2032
2188
  multiple: true,
2033
2189
  limit: 10,
@@ -2041,8 +2197,8 @@ var Circle = /*#__PURE__*/function (_Component) {
2041
2197
  display: this.state.fileInputShowing ? "block" : "none"
2042
2198
  }
2043
2199
  }, /*#__PURE__*/React__default['default'].createElement(Components$2.FileInput, {
2044
- ref: function ref(_ref6) {
2045
- _this5.fileInput = _ref6;
2200
+ ref: function ref(_ref7) {
2201
+ _this5.fileInput = _ref7;
2046
2202
  },
2047
2203
  multiple: true,
2048
2204
  limit: 10,
@@ -2336,8 +2492,8 @@ var Circle = /*#__PURE__*/function (_Component) {
2336
2492
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2337
2493
  className: "chat_newMessage"
2338
2494
  }, this.renderChatInput()), this.renderReplyTo(), /*#__PURE__*/React__default['default'].createElement("div", {
2339
- ref: function ref(_ref7) {
2340
- return _this8.chat = _ref7;
2495
+ ref: function ref(_ref8) {
2496
+ return _this8.chat = _ref8;
2341
2497
  },
2342
2498
  className: "chat_messages"
2343
2499
  }, ___default['default'].isEmpty(this.state.messages) && !___default['default'].isEmpty(this.state.messageDate) && this.renderEmptyDate(), this.state.messages.map(function (m) {