@os-team/profile 1.1.13 → 1.1.14
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/cjs/components/profile/ProfileButton.js +4 -6
- package/dist/cjs/components/profile/ProfileButton.js.map +1 -1
- package/dist/cjs/components/profile/ProfileConfigContext.js +5 -7
- package/dist/cjs/components/profile/ProfileConfigContext.js.map +1 -1
- package/dist/cjs/components/profile/ProfileContext.js +5 -7
- package/dist/cjs/components/profile/ProfileContext.js.map +1 -1
- package/dist/cjs/components/profile/ProfileDrawer.js +10 -16
- package/dist/cjs/components/profile/ProfileDrawer.js.map +1 -1
- package/dist/cjs/components/profile/ProfileDrawerContent.js +73 -103
- package/dist/cjs/components/profile/ProfileDrawerContent.js.map +1 -1
- package/dist/cjs/components/profile/ProfileNavigationItem.js +10 -11
- package/dist/cjs/components/profile/ProfileNavigationItem.js.map +1 -1
- package/dist/cjs/components/profile/ProfileUpdateNameModal.js +43 -54
- package/dist/cjs/components/profile/ProfileUpdateNameModal.js.map +1 -1
- package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js +42 -52
- package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js.map +1 -1
- package/dist/cjs/components/profile/ProtectedWrapper.js +27 -27
- package/dist/cjs/components/profile/ProtectedWrapper.js.map +1 -1
- package/dist/cjs/components/profile/UserAvatar.js +16 -15
- package/dist/cjs/components/profile/UserAvatar.js.map +1 -1
- package/dist/cjs/components/profile/UserAvatarAddon.js +13 -23
- package/dist/cjs/components/profile/UserAvatarAddon.js.map +1 -1
- package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +1 -2
- package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
- package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +1 -2
- package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
- package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +1 -2
- package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
- package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +1 -2
- package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
- package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js +1 -2
- package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
- package/dist/cjs/components/session/SessionDrawer.js +11 -15
- package/dist/cjs/components/session/SessionDrawer.js.map +1 -1
- package/dist/cjs/components/session/SessionDrawerContent.js +13 -14
- package/dist/cjs/components/session/SessionDrawerContent.js.map +1 -1
- package/dist/cjs/components/session/SessionList.js +31 -55
- package/dist/cjs/components/session/SessionList.js.map +1 -1
- package/dist/cjs/components/session/SessionListItem.js +59 -106
- package/dist/cjs/components/session/SessionListItem.js.map +1 -1
- package/dist/cjs/components/session/SessionListSkeleton.js +8 -9
- package/dist/cjs/components/session/SessionListSkeleton.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js +1 -1
- package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +1 -2
- package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +1 -2
- package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js +1 -1
- package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js +1 -1
- package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -1
- package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js +1 -1
- package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
- package/dist/cjs/components/session/formatDate.js +6 -6
- package/dist/cjs/components/session/formatDate.js.map +1 -1
- package/dist/cjs/components/session/getLastSeen.js +6 -6
- package/dist/cjs/components/session/getLastSeen.js.map +1 -1
- package/dist/cjs/components/shared/ButtonUpdate.js +4 -3
- package/dist/cjs/components/shared/ButtonUpdate.js.map +1 -1
- package/dist/cjs/components/shared/ErrorResult.js +8 -5
- package/dist/cjs/components/shared/ErrorResult.js.map +1 -1
- package/dist/cjs/components/shared/FormError.js +5 -4
- package/dist/cjs/components/shared/FormError.js.map +1 -1
- package/dist/cjs/components/shared/MainLoader.js +2 -6
- package/dist/cjs/components/shared/MainLoader.js.map +1 -1
- package/dist/cjs/components/shared/icons/AndroidIcon.js +5 -7
- package/dist/cjs/components/shared/icons/AndroidIcon.js.map +1 -1
- package/dist/cjs/components/shared/icons/AppleIcon.js +5 -7
- package/dist/cjs/components/shared/icons/AppleIcon.js.map +1 -1
- package/dist/cjs/components/shared/icons/BrowserIcon.js +5 -7
- package/dist/cjs/components/shared/icons/BrowserIcon.js.map +1 -1
- package/dist/cjs/components/shared/icons/ProfileIcon.js +5 -7
- package/dist/cjs/components/shared/icons/ProfileIcon.js.map +1 -1
- package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js +5 -7
- package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js.map +1 -1
- package/dist/cjs/index.js +16 -17
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/getErrorMessage.js +13 -13
- package/dist/cjs/utils/getErrorMessage.js.map +1 -1
- package/dist/cjs/utils/getUserFullName.js +7 -5
- package/dist/cjs/utils/getUserFullName.js.map +1 -1
- package/dist/cjs/utils/handleFormErrors.js +11 -16
- package/dist/cjs/utils/handleFormErrors.js.map +1 -1
- package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +0 -1
- package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
- package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +0 -1
- package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
- package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +0 -1
- package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
- package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +0 -1
- package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
- package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js +0 -1
- package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
- package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +0 -1
- package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
- package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +0 -1
- package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
- package/dist/types/components/profile/ProfileButton.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileConfigContext.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileContext.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileDrawer.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileDrawerContent.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileNavigationItem.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileUpdateNameModal.d.ts.map +1 -0
- package/dist/types/components/profile/ProfileUpdatePasswordModal.d.ts.map +1 -0
- package/dist/types/components/profile/ProtectedWrapper.d.ts.map +1 -0
- package/dist/types/components/profile/UserAvatar.d.ts.map +1 -0
- package/dist/types/components/profile/UserAvatarAddon.d.ts.map +1 -0
- package/dist/types/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +1 -0
- package/dist/types/components/session/SessionDrawer.d.ts.map +1 -0
- package/dist/types/components/session/SessionDrawerContent.d.ts.map +1 -0
- package/dist/types/{src/lib/components → components}/session/SessionList.d.ts +2 -2
- package/dist/types/components/session/SessionList.d.ts.map +1 -0
- package/dist/types/{src/lib/components → components}/session/SessionListItem.d.ts +4 -4
- package/dist/types/components/session/SessionListItem.d.ts.map +1 -0
- package/dist/types/components/session/SessionListSkeleton.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +1 -0
- package/dist/types/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +1 -0
- package/dist/types/components/session/formatDate.d.ts.map +1 -0
- package/dist/types/components/session/getLastSeen.d.ts.map +1 -0
- package/dist/types/components/shared/ButtonUpdate.d.ts.map +1 -0
- package/dist/types/components/shared/ErrorResult.d.ts.map +1 -0
- package/dist/types/components/shared/FormError.d.ts.map +1 -0
- package/dist/types/components/shared/MainLoader.d.ts.map +1 -0
- package/dist/types/components/shared/icons/AndroidIcon.d.ts.map +1 -0
- package/dist/types/components/shared/icons/AppleIcon.d.ts.map +1 -0
- package/dist/types/components/shared/icons/BrowserIcon.d.ts.map +1 -0
- package/dist/types/components/shared/icons/ProfileIcon.d.ts.map +1 -0
- package/dist/types/components/shared/icons/UnknownDeviceIcon.d.ts.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/utils/getErrorMessage.d.ts.map +1 -0
- package/dist/types/utils/getUserFullName.d.ts.map +1 -0
- package/dist/types/utils/handleFormErrors.d.ts.map +1 -0
- package/package.json +41 -41
- package/dist/types/src/lib/components/profile/ProfileButton.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileConfigContext.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileContext.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileDrawer.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileDrawerContent.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileNavigationItem.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileUpdateNameModal.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProfileUpdatePasswordModal.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/ProtectedWrapper.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/UserAvatar.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/UserAvatarAddon.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/SessionDrawer.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/SessionDrawerContent.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/SessionList.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/SessionListItem.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/SessionListSkeleton.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/formatDate.d.ts.map +0 -1
- package/dist/types/src/lib/components/session/getLastSeen.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/ButtonUpdate.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/ErrorResult.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/FormError.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/MainLoader.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/icons/AndroidIcon.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/icons/AppleIcon.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/icons/BrowserIcon.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/icons/ProfileIcon.d.ts.map +0 -1
- package/dist/types/src/lib/components/shared/icons/UnknownDeviceIcon.d.ts.map +0 -1
- package/dist/types/src/lib/index.d.ts.map +0 -1
- package/dist/types/src/lib/utils/getErrorMessage.d.ts.map +0 -1
- package/dist/types/src/lib/utils/getUserFullName.d.ts.map +0 -1
- package/dist/types/src/lib/utils/handleFormErrors.d.ts.map +0 -1
- /package/dist/types/{src/lib/components → components}/profile/ProfileButton.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileConfigContext.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileContext.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileDrawer.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileDrawerContent.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileNavigationItem.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileUpdateNameModal.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProfileUpdatePasswordModal.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/ProtectedWrapper.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/UserAvatar.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/UserAvatarAddon.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/SessionDrawer.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/SessionDrawerContent.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/SessionListSkeleton.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionDrawerContentQuery.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionListItem_session.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionListRefetchQuery.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/__generated__/SessionList_sessions.graphql.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/formatDate.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/session/getLastSeen.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/ButtonUpdate.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/ErrorResult.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/FormError.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/MainLoader.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/icons/AndroidIcon.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/icons/AppleIcon.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/icons/BrowserIcon.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/icons/ProfileIcon.d.ts +0 -0
- /package/dist/types/{src/lib/components → components}/shared/icons/UnknownDeviceIcon.d.ts +0 -0
- /package/dist/types/{src/lib/index.d.ts → index.d.ts} +0 -0
- /package/dist/types/{src/lib/utils → utils}/getErrorMessage.d.ts +0 -0
- /package/dist/types/{src/lib/utils → utils}/getUserFullName.d.ts +0 -0
- /package/dist/types/{src/lib/utils → utils}/handleFormErrors.d.ts +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -13,65 +12,44 @@ var _reactI18next = require("react-i18next");
|
|
|
13
12
|
var _hooks = require("react-relay/hooks");
|
|
14
13
|
var _SessionListItem = _interopRequireDefault(require("./SessionListItem"));
|
|
15
14
|
var _SessionList_sessions, _SessionListDestroyAllOtherSessionsMutation, _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
17
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
20
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
22
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
23
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
24
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
25
18
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, [sessions]);
|
|
47
|
-
var otherSessions = (0, _react.useMemo)(function () {
|
|
48
|
-
return sessions.filter(function (session) {
|
|
49
|
-
return !session.current;
|
|
50
|
-
}).sort(function (a, b) {
|
|
51
|
-
return b.lastSeenAt - a.lastSeenAt;
|
|
52
|
-
});
|
|
53
|
-
}, [sessions]);
|
|
54
|
-
var _useMutation = (0, _hooks.useMutation)(_SessionListDestroyAllOtherSessionsMutation !== void 0 ? _SessionListDestroyAllOtherSessionsMutation : (_SessionListDestroyAllOtherSessionsMutation = require("./__generated__/SessionListDestroyAllOtherSessionsMutation.graphql"), _SessionListDestroyAllOtherSessionsMutation.hash && _SessionListDestroyAllOtherSessionsMutation.hash !== "016b6b5e7ae228f7df552d97fa43bd40" && console.error("The definition of 'SessionListDestroyAllOtherSessionsMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionListDestroyAllOtherSessionsMutation)),
|
|
55
|
-
_useMutation2 = _slicedToArray(_useMutation, 2),
|
|
56
|
-
commitDestroyAllOtherSessions = _useMutation2[0],
|
|
57
|
-
loadingDestroyAllOtherSessions = _useMutation2[1];
|
|
58
|
-
var destroyAllOtherSessions = (0, _react.useCallback)(function () {
|
|
19
|
+
const sessionsFragment = _SessionList_sessions !== void 0 ? _SessionList_sessions : (_SessionList_sessions = require("./__generated__/SessionList_sessions.graphql"), _SessionList_sessions.hash && _SessionList_sessions.hash !== "1b21c937c7ba795f09bfcb5ada7d2510" && console.error("The definition of 'SessionList_sessions' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionList_sessions);
|
|
20
|
+
const Title = exports.Title = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-weight: 500;\n margin: 1em 1em 0.5em;\n"])));
|
|
21
|
+
const List = exports.List = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-top: 1px solid ", ";\n border-bottom: 1px solid ", ";\n"])), p => (0, _theming.clr)(p.theme.listItemColorBorder), p => (0, _theming.clr)(p.theme.listItemColorBorder));
|
|
22
|
+
const DestroyAllOtherSessionsButton = (0, _styled.default)(_core.Button)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n & > span {\n flex: 1;\n text-align: left;\n }\n"])));
|
|
23
|
+
const OtherSessions = _styled.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-top: 2em;\n"])));
|
|
24
|
+
const SESSION_LIST_PADDING_VERTICAL = exports.SESSION_LIST_PADDING_VERTICAL = 0.5;
|
|
25
|
+
const SessionList = _ref => {
|
|
26
|
+
let {
|
|
27
|
+
sessionsKey
|
|
28
|
+
} = _ref;
|
|
29
|
+
const {
|
|
30
|
+
sessions
|
|
31
|
+
} = (0, _hooks.useFragment)(sessionsFragment, sessionsKey);
|
|
32
|
+
const {
|
|
33
|
+
t
|
|
34
|
+
} = (0, _reactI18next.useTranslation)(['profile']);
|
|
35
|
+
const currentSession = (0, _react.useMemo)(() => sessions.find(session => session.current), [sessions]);
|
|
36
|
+
const otherSessions = (0, _react.useMemo)(() => sessions.filter(session => !session.current).sort((a, b) => b.lastSeenAt - a.lastSeenAt), [sessions]);
|
|
37
|
+
const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] = (0, _hooks.useMutation)(_SessionListDestroyAllOtherSessionsMutation !== void 0 ? _SessionListDestroyAllOtherSessionsMutation : (_SessionListDestroyAllOtherSessionsMutation = require("./__generated__/SessionListDestroyAllOtherSessionsMutation.graphql"), _SessionListDestroyAllOtherSessionsMutation.hash && _SessionListDestroyAllOtherSessionsMutation.hash !== "016b6b5e7ae228f7df552d97fa43bd40" && console.error("The definition of 'SessionListDestroyAllOtherSessionsMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionListDestroyAllOtherSessionsMutation));
|
|
38
|
+
const destroyAllOtherSessions = (0, _react.useCallback)(() => {
|
|
59
39
|
commitDestroyAllOtherSessions({
|
|
60
40
|
variables: {},
|
|
61
|
-
updater:
|
|
41
|
+
updater: store => {
|
|
62
42
|
var _rootRP$getLinkedReco;
|
|
63
43
|
// Delete all other sessions from the store
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return item.getDataID() === (currentSession === null || currentSession === void 0 ? void 0 : currentSession.id);
|
|
67
|
-
});
|
|
44
|
+
const rootRP = store.getRoot();
|
|
45
|
+
const sessionsRP = (_rootRP$getLinkedReco = rootRP.getLinkedRecords('sessions')) === null || _rootRP$getLinkedReco === void 0 ? void 0 : _rootRP$getLinkedReco.filter(item => item.getDataID() === (currentSession === null || currentSession === void 0 ? void 0 : currentSession.id));
|
|
68
46
|
if (!sessionsRP) return;
|
|
69
47
|
rootRP.setLinkedRecords(sessionsRP, 'sessions');
|
|
70
48
|
},
|
|
71
|
-
onError:
|
|
49
|
+
onError: error => {
|
|
72
50
|
_core.message.error(error.message);
|
|
73
51
|
},
|
|
74
|
-
onCompleted:
|
|
52
|
+
onCompleted: () => {
|
|
75
53
|
_core.message.success(t('profile:sessions.destroyedAllOther'));
|
|
76
54
|
}
|
|
77
55
|
});
|
|
@@ -86,12 +64,10 @@ var SessionList = function SessionList(_ref) {
|
|
|
86
64
|
wide: "always",
|
|
87
65
|
loading: loadingDestroyAllOtherSessions,
|
|
88
66
|
onClick: destroyAllOtherSessions
|
|
89
|
-
}, t('profile:sessions.destroyAllOther')), /*#__PURE__*/_react.default.createElement(OtherSessions, null, /*#__PURE__*/_react.default.createElement(Title, null, t('profile:sessions.other'), " (", otherSessions.length, ")"), /*#__PURE__*/_react.default.createElement(List, null, otherSessions.map(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
94
|
-
})))));
|
|
67
|
+
}, t('profile:sessions.destroyAllOther')), /*#__PURE__*/_react.default.createElement(OtherSessions, null, /*#__PURE__*/_react.default.createElement(Title, null, t('profile:sessions.other'), " (", otherSessions.length, ")"), /*#__PURE__*/_react.default.createElement(List, null, otherSessions.map(session => /*#__PURE__*/_react.default.createElement(_SessionListItem.default, {
|
|
68
|
+
key: session.id,
|
|
69
|
+
sessionKey: session
|
|
70
|
+
}))))));
|
|
95
71
|
};
|
|
96
72
|
var _default = exports.default = SessionList;
|
|
97
73
|
//# sourceMappingURL=SessionList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionList.js","names":["_styled","_interopRequireDefault","require","_core","_theming","_react","_interopRequireWildcard","_reactI18next","_hooks","_SessionListItem","_SessionList_sessions","_SessionListDestroyAllOtherSessionsMutation","_templateObject","_templateObject2","_templateObject3","_templateObject4","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","len","length","arr2","l","Symbol","iterator","f","next","done","push","value","return","isArray","_taggedTemplateLiteral","strings","raw","freeze","defineProperties","sessionsFragment","hash","console","error","Title","exports","styled","div","List","p","clr","theme","listItemColorBorder","DestroyAllOtherSessionsButton","Button","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","_ref","sessionsKey","_useFragment","useFragment","sessions","_useTranslation","useTranslation","currentSession","useMemo","find","session","current","otherSessions","filter","sort","b","lastSeenAt","_useMutation","useMutation","_useMutation2","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","destroyAllOtherSessions","useCallback","variables","updater","store","_rootRP$getLinkedReco","rootRP","getRoot","sessionsRP","getLinkedRecords","item","getDataID","id","setLinkedRecords","onError","message","onCompleted","success","createElement","Fragment","sessionKey","hideLastSeenAt","type","danger","size","wide","loading","onClick","map","key","_default"],"sources":["../../../../src/lib/components/session/SessionList.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Button, message } from '@os-design/core';\nimport { clr } from '@os-design/theming';\nimport graphql from 'babel-plugin-relay/macro';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\n\nconst sessionsFragment = graphql`\n fragment SessionList_sessions on Query\n @refetchable(queryName: \"SessionListRefetchQuery\") {\n sessions {\n id\n current\n lastSeenAt\n ...SessionListItem_session\n }\n }\n`;\n\ninterface SessionListProps {\n sessionsKey: SessionList_sessions$key;\n}\n\nexport const Title = styled.div`\n font-weight: 500;\n margin: 1em 1em 0.5em;\n`;\n\nexport const List = styled.div`\n border-top: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n`;\n\nconst DestroyAllOtherSessionsButton = styled(Button)`\n & > span {\n flex: 1;\n text-align: left;\n }\n`;\n\nconst OtherSessions = styled.div`\n margin-top: 2em;\n`;\n\nexport const SESSION_LIST_PADDING_VERTICAL = 0.5;\n\nconst SessionList: React.FC<SessionListProps> = ({ sessionsKey }) => {\n const { sessions } = useFragment(sessionsFragment, sessionsKey);\n const { t } = useTranslation(['profile']);\n\n const currentSession = useMemo(\n () => sessions.find((session) => session.current),\n [sessions]\n );\n\n const otherSessions = useMemo(\n () =>\n sessions\n .filter((session) => !session.current)\n .sort((a, b) => b.lastSeenAt - a.lastSeenAt),\n [sessions]\n );\n\n const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] =\n useMutation<SessionListDestroyAllOtherSessionsMutation>(graphql`\n mutation SessionListDestroyAllOtherSessionsMutation {\n destroyAllOtherSessions {\n ok\n }\n }\n `);\n\n const destroyAllOtherSessions = useCallback(() => {\n commitDestroyAllOtherSessions({\n variables: {},\n updater: (store) => {\n // Delete all other sessions from the store\n const rootRP = store.getRoot();\n const sessionsRP = rootRP\n .getLinkedRecords('sessions')\n ?.filter((item) => item.getDataID() === currentSession?.id);\n if (!sessionsRP) return;\n rootRP.setLinkedRecords(sessionsRP, 'sessions');\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyedAllOther'));\n },\n });\n }, [commitDestroyAllOtherSessions, currentSession?.id, t]);\n\n return (\n <>\n {currentSession && (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <SessionListItem sessionKey={currentSession} hideLastSeenAt />\n </List>\n </>\n )}\n\n {otherSessions.length > 0 && (\n <>\n <DestroyAllOtherSessionsButton\n type='ghost'\n danger\n size='small'\n wide='always'\n loading={loadingDestroyAllOtherSessions}\n onClick={destroyAllOtherSessions}\n >\n {t('profile:sessions.destroyAllOther')}\n </DestroyAllOtherSessionsButton>\n\n <OtherSessions>\n <Title>\n {t('profile:sessions.other')} ({otherSessions.length})\n </Title>\n <List>\n {otherSessions.map((session) => (\n <SessionListItem key={session.id} sessionKey={session} />\n ))}\n </List>\n </OtherSessions>\n </>\n )}\n </>\n );\n};\n\nexport default SessionList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionList.js","names":["_styled","_interopRequireDefault","require","_core","_theming","_react","_interopRequireWildcard","_reactI18next","_hooks","_SessionListItem","_SessionList_sessions","_SessionListDestroyAllOtherSessionsMutation","_templateObject","_templateObject2","_templateObject3","_templateObject4","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties","value","sessionsFragment","hash","console","error","Title","exports","styled","div","List","p","clr","theme","listItemColorBorder","DestroyAllOtherSessionsButton","Button","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","_ref","sessionsKey","sessions","useFragment","useTranslation","currentSession","useMemo","find","session","current","otherSessions","filter","sort","b","lastSeenAt","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","useMutation","destroyAllOtherSessions","useCallback","variables","updater","store","_rootRP$getLinkedReco","rootRP","getRoot","sessionsRP","getLinkedRecords","item","getDataID","id","setLinkedRecords","onError","message","onCompleted","success","createElement","Fragment","sessionKey","hideLastSeenAt","length","type","danger","size","wide","loading","onClick","map","key","_default"],"sources":["../../../../src/lib/components/session/SessionList.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Button, message } from '@os-design/core';\nimport { clr } from '@os-design/theming';\nimport graphql from 'babel-plugin-relay/macro';\nimport React, { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\n\nconst sessionsFragment = graphql`\n fragment SessionList_sessions on Query\n @refetchable(queryName: \"SessionListRefetchQuery\") {\n sessions {\n id\n current\n lastSeenAt\n ...SessionListItem_session\n }\n }\n`;\n\ninterface SessionListProps {\n sessionsKey: SessionList_sessions$key;\n}\n\nexport const Title = styled.div`\n font-weight: 500;\n margin: 1em 1em 0.5em;\n`;\n\nexport const List = styled.div`\n border-top: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n`;\n\nconst DestroyAllOtherSessionsButton = styled(Button)`\n & > span {\n flex: 1;\n text-align: left;\n }\n`;\n\nconst OtherSessions = styled.div`\n margin-top: 2em;\n`;\n\nexport const SESSION_LIST_PADDING_VERTICAL = 0.5;\n\nconst SessionList: React.FC<SessionListProps> = ({ sessionsKey }) => {\n const { sessions } = useFragment(sessionsFragment, sessionsKey);\n const { t } = useTranslation(['profile']);\n\n const currentSession = useMemo(\n () => sessions.find((session) => session.current),\n [sessions]\n );\n\n const otherSessions = useMemo(\n () =>\n sessions\n .filter((session) => !session.current)\n .sort((a, b) => b.lastSeenAt - a.lastSeenAt),\n [sessions]\n );\n\n const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] =\n useMutation<SessionListDestroyAllOtherSessionsMutation>(graphql`\n mutation SessionListDestroyAllOtherSessionsMutation {\n destroyAllOtherSessions {\n ok\n }\n }\n `);\n\n const destroyAllOtherSessions = useCallback(() => {\n commitDestroyAllOtherSessions({\n variables: {},\n updater: (store) => {\n // Delete all other sessions from the store\n const rootRP = store.getRoot();\n const sessionsRP = rootRP\n .getLinkedRecords('sessions')\n ?.filter((item) => item.getDataID() === currentSession?.id);\n if (!sessionsRP) return;\n rootRP.setLinkedRecords(sessionsRP, 'sessions');\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyedAllOther'));\n },\n });\n }, [commitDestroyAllOtherSessions, currentSession?.id, t]);\n\n return (\n <>\n {currentSession && (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <SessionListItem sessionKey={currentSession} hideLastSeenAt />\n </List>\n </>\n )}\n\n {otherSessions.length > 0 && (\n <>\n <DestroyAllOtherSessionsButton\n type='ghost'\n danger\n size='small'\n wide='always'\n loading={loadingDestroyAllOtherSessions}\n onClick={destroyAllOtherSessions}\n >\n {t('profile:sessions.destroyAllOther')}\n </DestroyAllOtherSessionsButton>\n\n <OtherSessions>\n <Title>\n {t('profile:sessions.other')} ({otherSessions.length})\n </Title>\n <List>\n {otherSessions.map((session) => (\n <SessionListItem key={session.id} sessionKey={session} />\n ))}\n </List>\n </OtherSessions>\n </>\n )}\n </>\n );\n};\n\nexport default SessionList;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -24,109 +23,71 @@ var _AppleIcon = _interopRequireDefault(require("../shared/icons/AppleIcon"));
|
|
|
24
23
|
var _AndroidIcon = _interopRequireDefault(require("../shared/icons/AndroidIcon"));
|
|
25
24
|
var _SessionListItem_session, _SessionListItemDestroySessionMutation, _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
|
|
26
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
28
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
29
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
30
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
31
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
32
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
33
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
34
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
36
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
37
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
38
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
26
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
27
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
39
28
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
var hasSwipeStyles = function hasSwipeStyles(p) {
|
|
53
|
-
return p.hasSwipe && (0, _react2.css)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n transform: translateX(100%);\n ", ";\n "])), (0, _styles.transitionStyles)('transform')(p));
|
|
54
|
-
};
|
|
55
|
-
var openedStyles = function openedStyles(p) {
|
|
56
|
-
return p.opened && (0, _react2.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n transform: translateX(0);\n "])));
|
|
57
|
-
};
|
|
58
|
-
var Actions = (0, _styled.default)('nav', (0, _utils.omitEmotionProps)('hasSwipe', 'opened'))(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ", ",\n ", "\n ", "em\n );\n\n ", ";\n ", ";\n ", ";\n"])), function (p) {
|
|
59
|
-
return (0, _theming.clr)([].concat(_toConsumableArray(p.theme.colorBg.slice(0, 3)), [0]));
|
|
60
|
-
}, function (p) {
|
|
61
|
-
return (0, _theming.clr)(p.theme.colorBg);
|
|
62
|
-
}, function (p) {
|
|
63
|
-
return p.theme.listItemActionsPaddingLeft;
|
|
64
|
-
}, hasSwipeStyles, openedStyles, (0, _styles.horizontalPaddingStyles)('right'));
|
|
65
|
-
var IconContainer = exports.IconContainer = _styled.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n"])));
|
|
66
|
-
var Icon = exports.Icon = (0, _styled.default)('div', (0, _utils.omitEmotionProps)('bgColor'))(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ", "em;\n background-color: ", ";\n color: hsl(0, 0%, 100%);\n"])), function (p) {
|
|
67
|
-
return p.theme.borderRadius;
|
|
68
|
-
}, function (p) {
|
|
69
|
-
return p.bgColor;
|
|
70
|
-
});
|
|
71
|
-
var nameVersionToString = function nameVersionToString(name, version) {
|
|
29
|
+
const sessionListItemFragment = _SessionListItem_session !== void 0 ? _SessionListItem_session : (_SessionListItem_session = require("./__generated__/SessionListItem_session.graphql"), _SessionListItem_session.hash && _SessionListItem_session.hash !== "c73c341c5f6e75f7bef7402186ce242b" && console.error("The definition of 'SessionListItem_session' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionListItem_session);
|
|
30
|
+
const Container = exports.Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n position: relative;\n padding: 0.5em 0;\n overflow: hidden;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ", ";\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ", ";\n"])), p => (0, _theming.clr)(p.theme.listItemColorBorder), (0, _styles.horizontalPaddingStyles)());
|
|
31
|
+
const Info = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-size: ", "em;\n ", ";\n"])), p => p.theme.sizes.small, _styles.ellipsisStyles);
|
|
32
|
+
const Content = exports.Content = _styled.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n flex: 1;\n overflow: hidden;\n"])));
|
|
33
|
+
const Title = (0, _styled.default)(Info)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n font-weight: 500;\n"])));
|
|
34
|
+
const LastSeen = (0, _styled.default)(Info)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n"])), p => (0, _theming.clr)(p.theme.inputColorPlaceholder));
|
|
35
|
+
const hasSwipeStyles = p => p.hasSwipe && (0, _react2.css)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n transform: translateX(100%);\n ", ";\n "])), (0, _styles.transitionStyles)('transform')(p));
|
|
36
|
+
const openedStyles = p => p.opened && (0, _react2.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n transform: translateX(0);\n "])));
|
|
37
|
+
const Actions = (0, _styled.default)('nav', (0, _utils.omitEmotionProps)('hasSwipe', 'opened'))(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ", ",\n ", "\n ", "em\n );\n\n ", ";\n ", ";\n ", ";\n"])), p => (0, _theming.clr)([...p.theme.colorBg.slice(0, 3), 0]), p => (0, _theming.clr)(p.theme.colorBg), p => p.theme.listItemActionsPaddingLeft, hasSwipeStyles, openedStyles, (0, _styles.horizontalPaddingStyles)('right'));
|
|
38
|
+
const IconContainer = exports.IconContainer = _styled.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n"])));
|
|
39
|
+
const Icon = exports.Icon = (0, _styled.default)('div', (0, _utils.omitEmotionProps)('bgColor'))(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ", "em;\n background-color: ", ";\n color: hsl(0, 0%, 100%);\n"])), p => p.theme.borderRadius, p => p.bgColor);
|
|
40
|
+
const nameVersionToString = (name, version) => {
|
|
72
41
|
if (!name) return null;
|
|
73
42
|
return "".concat(name).concat(version ? " ".concat(version) : '');
|
|
74
43
|
};
|
|
75
|
-
|
|
44
|
+
const mergeInfo = function () {
|
|
76
45
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
77
46
|
args[_key] = arguments[_key];
|
|
78
47
|
}
|
|
79
|
-
return args.filter(
|
|
80
|
-
return item !== null && item !== undefined;
|
|
81
|
-
}).join(', ') || null;
|
|
48
|
+
return args.filter(item => item !== null && item !== undefined).join(', ') || null;
|
|
82
49
|
};
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}, []);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
var deviceBrandModel = (0, _react.useMemo)(function () {
|
|
103
|
-
var arr = [session.deviceBrand, session.deviceModel];
|
|
50
|
+
const SessionListItem = _ref => {
|
|
51
|
+
let {
|
|
52
|
+
sessionKey,
|
|
53
|
+
hideLastSeenAt
|
|
54
|
+
} = _ref;
|
|
55
|
+
const session = (0, _hooks.useFragment)(sessionListItemFragment, sessionKey);
|
|
56
|
+
const {
|
|
57
|
+
t,
|
|
58
|
+
i18n
|
|
59
|
+
} = (0, _reactI18next.useTranslation)(['profile']);
|
|
60
|
+
const touchDevice = (0, _react.useMemo)(() => (0, _utils.isTouchDevice)(), []);
|
|
61
|
+
const {
|
|
62
|
+
opened,
|
|
63
|
+
handlers
|
|
64
|
+
} = (0, _utils.useSwipe)();
|
|
65
|
+
const browser = (0, _react.useMemo)(() => nameVersionToString(session.browserName, session.browserVersion), [session.browserName, session.browserVersion]);
|
|
66
|
+
const os = (0, _react.useMemo)(() => nameVersionToString(session.osName, session.osVersion), [session.osName, session.osVersion]);
|
|
67
|
+
const deviceBrandModel = (0, _react.useMemo)(() => {
|
|
68
|
+
const arr = [session.deviceBrand, session.deviceModel];
|
|
104
69
|
// Include the manufacturer name only if it does not equal to the brand name.
|
|
105
70
|
// For example, it allows to avoid "Apple Apple iPhone 6".
|
|
106
71
|
if (session.deviceManufacturer !== session.deviceBrand) {
|
|
107
72
|
arr.unshift(session.deviceManufacturer);
|
|
108
73
|
}
|
|
109
|
-
return arr.filter(
|
|
110
|
-
return item !== null;
|
|
111
|
-
}).join(' ') || null;
|
|
74
|
+
return arr.filter(item => item !== null).join(' ') || null;
|
|
112
75
|
}, [session.deviceBrand, session.deviceManufacturer, session.deviceModel]);
|
|
113
|
-
|
|
114
|
-
|
|
76
|
+
const title = (0, _react.useMemo)(() => {
|
|
77
|
+
let deviceType = (session.deviceType || 'unknown').toLowerCase();
|
|
115
78
|
if (browser) deviceType = 'browser';
|
|
116
79
|
return "".concat(t('profile:sessions.deviceType', {
|
|
117
80
|
returnObjects: true
|
|
118
81
|
})[deviceType]).concat(session.deviceName ? " ".concat(session.deviceName) : '');
|
|
119
82
|
}, [browser, session.deviceName, session.deviceType, t]);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}, [browser, deviceBrandModel, os, session.isApp]);
|
|
123
|
-
var ip = (0, _react.useMemo)(function () {
|
|
83
|
+
const deviceInfo = (0, _react.useMemo)(() => session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os), [browser, deviceBrandModel, os, session.isApp]);
|
|
84
|
+
const ip = (0, _react.useMemo)(() => {
|
|
124
85
|
if (!session.ip) return null;
|
|
125
|
-
|
|
86
|
+
const location = mergeInfo(session.city, session.country);
|
|
126
87
|
return "".concat(session.ip).concat(location ? " (".concat(location, ")") : '');
|
|
127
88
|
}, [session.city, session.country, session.ip]);
|
|
128
|
-
|
|
129
|
-
|
|
89
|
+
const lastSeen = (0, _react.useMemo)(() => {
|
|
90
|
+
const lsa = (0, _getLastSeen.default)(session.lastSeenAt);
|
|
130
91
|
if (!lsa) {
|
|
131
92
|
return "".concat(t('profile:sessions.lastSeenOn'), " ").concat((0, _formatDate.default)(session.lastSeenAt, t, i18n.language));
|
|
132
93
|
}
|
|
@@ -138,44 +99,36 @@ var SessionListItem = function SessionListItem(_ref) {
|
|
|
138
99
|
number: lsa[0]
|
|
139
100
|
}), " ").concat(t('profile:sessions.ago'));
|
|
140
101
|
}, [i18n.language, session.lastSeenAt, t]);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
if (session.osName === 'Android') return [/*#__PURE__*/_react.default.createElement(_AndroidIcon.default, null), 'hsl(150, 60%, 50%)'];
|
|
102
|
+
const [iconComponent, iconColor] = (0, _react.useMemo)(() => {
|
|
103
|
+
if (browser) return [/*#__PURE__*/_react.default.createElement(_BrowserIcon.default, null), 'hsl(30, 60%, 50%)'];
|
|
104
|
+
if (session.isApp) {
|
|
105
|
+
if (session.osName === 'iOS' || session.osName === 'iPhone OS') {
|
|
106
|
+
return [/*#__PURE__*/_react.default.createElement(_AppleIcon.default, null), 'hsl(0, 0%, 50%)'];
|
|
148
107
|
}
|
|
149
|
-
return [/*#__PURE__*/_react.default.createElement(
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
_useMutation2 = _slicedToArray(_useMutation, 2),
|
|
156
|
-
commitDestroySession = _useMutation2[0],
|
|
157
|
-
loadingDestroySession = _useMutation2[1];
|
|
158
|
-
var destroySession = (0, _react.useCallback)(function () {
|
|
108
|
+
if (session.osName === 'Android') return [/*#__PURE__*/_react.default.createElement(_AndroidIcon.default, null), 'hsl(150, 60%, 50%)'];
|
|
109
|
+
}
|
|
110
|
+
return [/*#__PURE__*/_react.default.createElement(_UnknownDeviceIcon.default, null), 'hsl(5, 60%, 50%)'];
|
|
111
|
+
}, [browser, session.isApp, session.osName]);
|
|
112
|
+
const [commitDestroySession, loadingDestroySession] = (0, _hooks.useMutation)(_SessionListItemDestroySessionMutation !== void 0 ? _SessionListItemDestroySessionMutation : (_SessionListItemDestroySessionMutation = require("./__generated__/SessionListItemDestroySessionMutation.graphql"), _SessionListItemDestroySessionMutation.hash && _SessionListItemDestroySessionMutation.hash !== "ad6c0d1313a70dd63c0baccc2f7abd6e" && console.error("The definition of 'SessionListItemDestroySessionMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionListItemDestroySessionMutation));
|
|
113
|
+
const destroySession = (0, _react.useCallback)(() => {
|
|
159
114
|
commitDestroySession({
|
|
160
115
|
variables: {
|
|
161
116
|
input: {
|
|
162
117
|
id: session.id
|
|
163
118
|
}
|
|
164
119
|
},
|
|
165
|
-
updater:
|
|
120
|
+
updater: store => {
|
|
166
121
|
var _rootRP$getLinkedReco;
|
|
167
122
|
// Delete the session from the store
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return item.getDataID() !== session.id;
|
|
171
|
-
});
|
|
123
|
+
const rootRP = store.getRoot();
|
|
124
|
+
const sessionsRP = (_rootRP$getLinkedReco = rootRP.getLinkedRecords('sessions')) === null || _rootRP$getLinkedReco === void 0 ? void 0 : _rootRP$getLinkedReco.filter(item => item.getDataID() !== session.id);
|
|
172
125
|
if (!sessionsRP) return;
|
|
173
126
|
rootRP.setLinkedRecords(sessionsRP, 'sessions');
|
|
174
127
|
},
|
|
175
|
-
onError:
|
|
128
|
+
onError: error => {
|
|
176
129
|
_core.message.error(error.message);
|
|
177
130
|
},
|
|
178
|
-
onCompleted:
|
|
131
|
+
onCompleted: () => {
|
|
179
132
|
_core.message.success(t('profile:sessions.destroyed'));
|
|
180
133
|
}
|
|
181
134
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionListItem.js","names":["_react","_interopRequireWildcard","require","_hooks","_styled","_interopRequireDefault","_reactI18next","_pluralForms","_core","_styles","_theming","_utils","_icons","_react2","_getLastSeen","_formatDate","_UnknownDeviceIcon","_BrowserIcon","_AppleIcon","_AndroidIcon","_SessionListItem_session","_SessionListItemDestroySessionMutation","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","l","Symbol","iterator","f","o","next","done","push","value","length","return","Array","isArray","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","iter","len","arr2","_taggedTemplateLiteral","strings","raw","freeze","defineProperties","sessionListItemFragment","hash","console","error","Container","exports","styled","div","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","Info","sizes","small","ellipsisStyles","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","css","transitionStyles","openedStyles","opened","Actions","omitEmotionProps","concat","colorBg","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","version","mergeInfo","_len","arguments","args","_key","filter","item","undefined","join","SessionListItem","_ref","sessionKey","hideLastSeenAt","session","useFragment","_useTranslation","useTranslation","i18n","touchDevice","useMemo","isTouchDevice","_useSwipe","useSwipe","handlers","browser","browserName","browserVersion","os","osName","osVersion","deviceBrandModel","deviceBrand","deviceModel","deviceManufacturer","unshift","title","deviceType","toLowerCase","returnObjects","deviceName","deviceInfo","isApp","ip","location","city","country","lastSeen","lsa","getLastSeen","lastSeenAt","formatDate","language","pluralForms","forms","number","_useMemo","createElement","_useMemo2","iconComponent","iconColor","_useMutation","useMutation","_useMutation2","commitDestroySession","loadingDestroySession","destroySession","useCallback","variables","input","id","updater","store","_rootRP$getLinkedReco","rootRP","getRoot","sessionsRP","getLinkedRecords","getDataID","setLinkedRecords","onError","message","onCompleted","success","Button","type","wide","size","loading","onClick","SignOut","_default"],"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport pluralForms from '@os-team/plural-forms';\nimport { Button, message } from '@os-design/core';\nimport {\n ellipsisStyles,\n horizontalPaddingStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { SignOut } from '@os-design/icons';\nimport { css } from '@emotion/react';\nimport { SessionListItem_session$key } from './__generated__/SessionListItem_session.graphql';\nimport getLastSeen from './getLastSeen';\nimport formatDate from './formatDate';\nimport { SessionListItemDestroySessionMutation } from './__generated__/SessionListItemDestroySessionMutation.graphql';\nimport UnknownDeviceIcon from '../shared/icons/UnknownDeviceIcon';\nimport BrowserIcon from '../shared/icons/BrowserIcon';\nimport AppleIcon from '../shared/icons/AppleIcon';\nimport AndroidIcon from '../shared/icons/AndroidIcon';\n\nconst sessionListItemFragment = graphql`\n fragment SessionListItem_session on SessionPayload {\n id\n isApp\n browserName\n browserVersion\n osName\n osVersion\n deviceType\n deviceName\n deviceManufacturer\n deviceBrand\n deviceModel\n ip\n country\n city\n lastSeenAt\n }\n`;\n\ninterface SessionListItemProps {\n sessionKey: SessionListItem_session$key;\n hideLastSeenAt?: boolean;\n}\n\nexport const Container = styled.div`\n display: flex;\n position: relative;\n padding: 0.5em 0;\n overflow: hidden;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Info = styled.div`\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nexport const Content = styled.div`\n flex: 1;\n overflow: hidden;\n`;\n\nconst Title = styled(Info)`\n font-weight: 500;\n`;\n\nconst LastSeen = styled(Info)`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n`;\n\nconst hasSwipeStyles = (p) =>\n p.hasSwipe &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps {\n hasSwipe: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('hasSwipe', 'opened')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${hasSwipeStyles};\n ${openedStyles};\n ${horizontalPaddingStyles('right')};\n`;\n\nexport const IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n`;\n\ninterface IconProps {\n bgColor: string;\n}\nexport const Icon = styled('div', omitEmotionProps('bgColor'))<IconProps>`\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n background-color: ${(p) => p.bgColor};\n color: hsl(0, 0%, 100%);\n`;\n\nconst nameVersionToString = (\n name?: string | null,\n version?: string | null\n): string | null => {\n if (!name) return null;\n return `${name}${version ? ` ${version}` : ''}`;\n};\n\nconst mergeInfo = (...args: Array<string | null | undefined>): string | null =>\n args.filter((item) => item !== null && item !== undefined).join(', ') || null;\n\nconst SessionListItem: React.FC<SessionListItemProps> = ({\n sessionKey,\n hideLastSeenAt,\n}) => {\n const session = useFragment(sessionListItemFragment, sessionKey);\n const { t, i18n } = useTranslation(['profile']);\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n const browser = useMemo(\n () => nameVersionToString(session.browserName, session.browserVersion),\n [session.browserName, session.browserVersion]\n );\n\n const os = useMemo(\n () => nameVersionToString(session.osName, session.osVersion),\n [session.osName, session.osVersion]\n );\n\n const deviceBrandModel = useMemo(() => {\n const arr = [session.deviceBrand, session.deviceModel];\n // Include the manufacturer name only if it does not equal to the brand name.\n // For example, it allows to avoid \"Apple Apple iPhone 6\".\n if (session.deviceManufacturer !== session.deviceBrand) {\n arr.unshift(session.deviceManufacturer);\n }\n return arr.filter((item) => item !== null).join(' ') || null;\n }, [session.deviceBrand, session.deviceManufacturer, session.deviceModel]);\n\n const title = useMemo(() => {\n let deviceType = (session.deviceType || 'unknown').toLowerCase();\n if (browser) deviceType = 'browser';\n return `${\n t('profile:sessions.deviceType', { returnObjects: true })[deviceType]\n }${session.deviceName ? ` ${session.deviceName}` : ''}`;\n }, [browser, session.deviceName, session.deviceType, t]);\n\n const deviceInfo = useMemo(\n () =>\n session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os),\n [browser, deviceBrandModel, os, session.isApp]\n );\n\n const ip = useMemo(() => {\n if (!session.ip) return null;\n const location = mergeInfo(session.city, session.country);\n return `${session.ip}${location ? ` (${location})` : ''}`;\n }, [session.city, session.country, session.ip]);\n\n const lastSeen = useMemo(() => {\n const lsa = getLastSeen(session.lastSeenAt);\n if (!lsa) {\n return `${t('profile:sessions.lastSeenOn')} ${formatDate(\n session.lastSeenAt,\n t,\n i18n.language\n )}`;\n }\n return `${t('profile:sessions.lastSeen')} ${lsa[0]} ${pluralForms({\n language: i18n.language,\n forms: t(`profile:sessions.${lsa[1]}`, { returnObjects: true }),\n number: lsa[0],\n })} ${t('profile:sessions.ago')}`;\n }, [i18n.language, session.lastSeenAt, t]);\n\n const [iconComponent, iconColor] = useMemo(() => {\n if (browser) return [<BrowserIcon />, 'hsl(30, 60%, 50%)'];\n if (session.isApp) {\n if (session.osName === 'iOS' || session.osName === 'iPhone OS') {\n return [<AppleIcon />, 'hsl(0, 0%, 50%)'];\n }\n if (session.osName === 'Android')\n return [<AndroidIcon />, 'hsl(150, 60%, 50%)'];\n }\n return [<UnknownDeviceIcon />, 'hsl(5, 60%, 50%)'];\n }, [browser, session.isApp, session.osName]);\n\n const [commitDestroySession, loadingDestroySession] =\n useMutation<SessionListItemDestroySessionMutation>(graphql`\n mutation SessionListItemDestroySessionMutation(\n $input: DestroySessionInput!\n ) {\n destroySession(input: $input) {\n ok\n }\n }\n `);\n\n const destroySession = useCallback(() => {\n commitDestroySession({\n variables: {\n input: {\n id: session.id,\n },\n },\n updater: (store) => {\n // Delete the session from the store\n const rootRP = store.getRoot();\n const sessionsRP = rootRP\n .getLinkedRecords('sessions')\n ?.filter((item) => item.getDataID() !== session.id);\n if (!sessionsRP) return;\n rootRP.setLinkedRecords(sessionsRP, 'sessions');\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyed'));\n },\n });\n }, [commitDestroySession, session.id, t]);\n\n return (\n <Container {...handlers}>\n <IconContainer>\n <Icon bgColor={iconColor}>{iconComponent}</Icon>\n </IconContainer>\n\n <Content>\n <Title>{title}</Title>\n {deviceInfo && <Info>{deviceInfo}</Info>}\n {ip && <Info>{ip}</Info>}\n {!hideLastSeenAt && <LastSeen>{lastSeen}</LastSeen>}\n </Content>\n\n <Actions hasSwipe={touchDevice} opened={opened}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n loading={loadingDestroySession}\n onClick={destroySession}\n >\n <SignOut />\n </Button>\n </Actions>\n </Container>\n );\n};\n\nexport default SessionListItem;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionListItem.js","names":["_react","_interopRequireWildcard","require","_hooks","_styled","_interopRequireDefault","_reactI18next","_pluralForms","_core","_styles","_theming","_utils","_icons","_react2","_getLastSeen","_formatDate","_UnknownDeviceIcon","_BrowserIcon","_AppleIcon","_AndroidIcon","_SessionListItem_session","_SessionListItemDestroySessionMutation","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties","value","sessionListItemFragment","hash","console","error","Container","exports","styled","div","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","Info","sizes","small","ellipsisStyles","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","css","transitionStyles","openedStyles","opened","Actions","omitEmotionProps","colorBg","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","name","version","concat","mergeInfo","_len","arguments","length","args","Array","_key","filter","item","undefined","join","SessionListItem","_ref","sessionKey","hideLastSeenAt","session","useFragment","i18n","useTranslation","touchDevice","useMemo","isTouchDevice","handlers","useSwipe","browser","browserName","browserVersion","os","osName","osVersion","deviceBrandModel","arr","deviceBrand","deviceModel","deviceManufacturer","unshift","title","deviceType","toLowerCase","returnObjects","deviceName","deviceInfo","isApp","ip","location","city","country","lastSeen","lsa","getLastSeen","lastSeenAt","formatDate","language","pluralForms","forms","number","iconComponent","iconColor","createElement","commitDestroySession","loadingDestroySession","useMutation","destroySession","useCallback","variables","input","id","updater","store","_rootRP$getLinkedReco","rootRP","getRoot","sessionsRP","getLinkedRecords","getDataID","setLinkedRecords","onError","message","onCompleted","success","Button","type","wide","size","loading","onClick","SignOut","_default"],"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport pluralForms from '@os-team/plural-forms';\nimport { Button, message } from '@os-design/core';\nimport {\n ellipsisStyles,\n horizontalPaddingStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { SignOut } from '@os-design/icons';\nimport { css } from '@emotion/react';\nimport { SessionListItem_session$key } from './__generated__/SessionListItem_session.graphql';\nimport getLastSeen from './getLastSeen';\nimport formatDate from './formatDate';\nimport { SessionListItemDestroySessionMutation } from './__generated__/SessionListItemDestroySessionMutation.graphql';\nimport UnknownDeviceIcon from '../shared/icons/UnknownDeviceIcon';\nimport BrowserIcon from '../shared/icons/BrowserIcon';\nimport AppleIcon from '../shared/icons/AppleIcon';\nimport AndroidIcon from '../shared/icons/AndroidIcon';\n\nconst sessionListItemFragment = graphql`\n fragment SessionListItem_session on SessionPayload {\n id\n isApp\n browserName\n browserVersion\n osName\n osVersion\n deviceType\n deviceName\n deviceManufacturer\n deviceBrand\n deviceModel\n ip\n country\n city\n lastSeenAt\n }\n`;\n\ninterface SessionListItemProps {\n sessionKey: SessionListItem_session$key;\n hideLastSeenAt?: boolean;\n}\n\nexport const Container = styled.div`\n display: flex;\n position: relative;\n padding: 0.5em 0;\n overflow: hidden;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Info = styled.div`\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nexport const Content = styled.div`\n flex: 1;\n overflow: hidden;\n`;\n\nconst Title = styled(Info)`\n font-weight: 500;\n`;\n\nconst LastSeen = styled(Info)`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n`;\n\nconst hasSwipeStyles = (p) =>\n p.hasSwipe &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps {\n hasSwipe: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('hasSwipe', 'opened')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${hasSwipeStyles};\n ${openedStyles};\n ${horizontalPaddingStyles('right')};\n`;\n\nexport const IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n`;\n\ninterface IconProps {\n bgColor: string;\n}\nexport const Icon = styled('div', omitEmotionProps('bgColor'))<IconProps>`\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n background-color: ${(p) => p.bgColor};\n color: hsl(0, 0%, 100%);\n`;\n\nconst nameVersionToString = (\n name?: string | null,\n version?: string | null\n): string | null => {\n if (!name) return null;\n return `${name}${version ? ` ${version}` : ''}`;\n};\n\nconst mergeInfo = (...args: Array<string | null | undefined>): string | null =>\n args.filter((item) => item !== null && item !== undefined).join(', ') || null;\n\nconst SessionListItem: React.FC<SessionListItemProps> = ({\n sessionKey,\n hideLastSeenAt,\n}) => {\n const session = useFragment(sessionListItemFragment, sessionKey);\n const { t, i18n } = useTranslation(['profile']);\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n const browser = useMemo(\n () => nameVersionToString(session.browserName, session.browserVersion),\n [session.browserName, session.browserVersion]\n );\n\n const os = useMemo(\n () => nameVersionToString(session.osName, session.osVersion),\n [session.osName, session.osVersion]\n );\n\n const deviceBrandModel = useMemo(() => {\n const arr = [session.deviceBrand, session.deviceModel];\n // Include the manufacturer name only if it does not equal to the brand name.\n // For example, it allows to avoid \"Apple Apple iPhone 6\".\n if (session.deviceManufacturer !== session.deviceBrand) {\n arr.unshift(session.deviceManufacturer);\n }\n return arr.filter((item) => item !== null).join(' ') || null;\n }, [session.deviceBrand, session.deviceManufacturer, session.deviceModel]);\n\n const title = useMemo(() => {\n let deviceType = (session.deviceType || 'unknown').toLowerCase();\n if (browser) deviceType = 'browser';\n return `${\n t('profile:sessions.deviceType', { returnObjects: true })[deviceType]\n }${session.deviceName ? ` ${session.deviceName}` : ''}`;\n }, [browser, session.deviceName, session.deviceType, t]);\n\n const deviceInfo = useMemo(\n () =>\n session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os),\n [browser, deviceBrandModel, os, session.isApp]\n );\n\n const ip = useMemo(() => {\n if (!session.ip) return null;\n const location = mergeInfo(session.city, session.country);\n return `${session.ip}${location ? ` (${location})` : ''}`;\n }, [session.city, session.country, session.ip]);\n\n const lastSeen = useMemo(() => {\n const lsa = getLastSeen(session.lastSeenAt);\n if (!lsa) {\n return `${t('profile:sessions.lastSeenOn')} ${formatDate(\n session.lastSeenAt,\n t,\n i18n.language\n )}`;\n }\n return `${t('profile:sessions.lastSeen')} ${lsa[0]} ${pluralForms({\n language: i18n.language,\n forms: t(`profile:sessions.${lsa[1]}`, { returnObjects: true }),\n number: lsa[0],\n })} ${t('profile:sessions.ago')}`;\n }, [i18n.language, session.lastSeenAt, t]);\n\n const [iconComponent, iconColor] = useMemo(() => {\n if (browser) return [<BrowserIcon />, 'hsl(30, 60%, 50%)'];\n if (session.isApp) {\n if (session.osName === 'iOS' || session.osName === 'iPhone OS') {\n return [<AppleIcon />, 'hsl(0, 0%, 50%)'];\n }\n if (session.osName === 'Android')\n return [<AndroidIcon />, 'hsl(150, 60%, 50%)'];\n }\n return [<UnknownDeviceIcon />, 'hsl(5, 60%, 50%)'];\n }, [browser, session.isApp, session.osName]);\n\n const [commitDestroySession, loadingDestroySession] =\n useMutation<SessionListItemDestroySessionMutation>(graphql`\n mutation SessionListItemDestroySessionMutation(\n $input: DestroySessionInput!\n ) {\n destroySession(input: $input) {\n ok\n }\n }\n `);\n\n const destroySession = useCallback(() => {\n commitDestroySession({\n variables: {\n input: {\n id: session.id,\n },\n },\n updater: (store) => {\n // Delete the session from the store\n const rootRP = store.getRoot();\n const sessionsRP = rootRP\n .getLinkedRecords('sessions')\n ?.filter((item) => item.getDataID() !== session.id);\n if (!sessionsRP) return;\n rootRP.setLinkedRecords(sessionsRP, 'sessions');\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyed'));\n },\n });\n }, [commitDestroySession, session.id, t]);\n\n return (\n <Container {...handlers}>\n <IconContainer>\n <Icon bgColor={iconColor}>{iconComponent}</Icon>\n </IconContainer>\n\n <Content>\n <Title>{title}</Title>\n {deviceInfo && <Info>{deviceInfo}</Info>}\n {ip && <Info>{ip}</Info>}\n {!hideLastSeenAt && <LastSeen>{lastSeen}</LastSeen>}\n </Content>\n\n <Actions hasSwipe={touchDevice} opened={opened}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n loading={loadingDestroySession}\n onClick={destroySession}\n >\n <SignOut />\n </Button>\n </Actions>\n </Container>\n );\n};\n\nexport default SessionListItem;\n"],"mappings":"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"}
|
|
@@ -13,15 +13,14 @@ var _SessionList = require("./SessionList");
|
|
|
13
13
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
t = _useTranslation.t;
|
|
16
|
+
const IconSkeleton = (0, _styled.default)(_core.Skeleton)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 1.82em;\n height: 1.82em;\n"])));
|
|
17
|
+
const ContainerSkeleton = (0, _styled.default)(_SessionListItem.Container)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding: 0.8em 0;\n"])));
|
|
18
|
+
const TitleSkeleton = (0, _styled.default)(_core.Skeleton)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n height: ", "em;\n"])), p => p.theme.sizes.small);
|
|
19
|
+
const InfoSkeleton = (0, _styled.default)(TitleSkeleton)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-top: 0.3em;\n"])));
|
|
20
|
+
const SessionListSkeleton = () => {
|
|
21
|
+
const {
|
|
22
|
+
t
|
|
23
|
+
} = (0, _reactI18next.useTranslation)(['profile']);
|
|
25
24
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SessionList.Title, null, t('profile:sessions.current')), /*#__PURE__*/_react.default.createElement(_SessionList.List, null, /*#__PURE__*/_react.default.createElement(ContainerSkeleton, null, /*#__PURE__*/_react.default.createElement(_SessionListItem.IconContainer, null, /*#__PURE__*/_react.default.createElement(IconSkeleton, null)), /*#__PURE__*/_react.default.createElement(_SessionListItem.Content, null, /*#__PURE__*/_react.default.createElement(TitleSkeleton, {
|
|
26
25
|
width: "50%"
|
|
27
26
|
}), /*#__PURE__*/_react.default.createElement(InfoSkeleton, null), /*#__PURE__*/_react.default.createElement(InfoSkeleton, {
|