@os-team/profile 1.1.12 → 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.
Files changed (241) hide show
  1. package/dist/cjs/components/profile/ProfileButton.js +4 -6
  2. package/dist/cjs/components/profile/ProfileButton.js.map +1 -1
  3. package/dist/cjs/components/profile/ProfileConfigContext.js +5 -7
  4. package/dist/cjs/components/profile/ProfileConfigContext.js.map +1 -1
  5. package/dist/cjs/components/profile/ProfileContext.js +5 -7
  6. package/dist/cjs/components/profile/ProfileContext.js.map +1 -1
  7. package/dist/cjs/components/profile/ProfileDrawer.js +10 -16
  8. package/dist/cjs/components/profile/ProfileDrawer.js.map +1 -1
  9. package/dist/cjs/components/profile/ProfileDrawerContent.js +80 -110
  10. package/dist/cjs/components/profile/ProfileDrawerContent.js.map +1 -1
  11. package/dist/cjs/components/profile/ProfileNavigationItem.js +10 -11
  12. package/dist/cjs/components/profile/ProfileNavigationItem.js.map +1 -1
  13. package/dist/cjs/components/profile/ProfileUpdateNameModal.js +53 -48
  14. package/dist/cjs/components/profile/ProfileUpdateNameModal.js.map +1 -1
  15. package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js +53 -45
  16. package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js.map +1 -1
  17. package/dist/cjs/components/profile/ProtectedWrapper.js +27 -27
  18. package/dist/cjs/components/profile/ProtectedWrapper.js.map +1 -1
  19. package/dist/cjs/components/profile/UserAvatar.js +16 -15
  20. package/dist/cjs/components/profile/UserAvatar.js.map +1 -1
  21. package/dist/cjs/components/profile/UserAvatarAddon.js +13 -23
  22. package/dist/cjs/components/profile/UserAvatarAddon.js.map +1 -1
  23. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +2 -3
  24. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
  25. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +2 -3
  26. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
  27. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +2 -3
  28. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  29. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +1 -2
  30. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  31. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js +2 -3
  32. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  33. package/dist/cjs/components/session/SessionDrawer.js +11 -15
  34. package/dist/cjs/components/session/SessionDrawer.js.map +1 -1
  35. package/dist/cjs/components/session/SessionDrawerContent.js +13 -14
  36. package/dist/cjs/components/session/SessionDrawerContent.js.map +1 -1
  37. package/dist/cjs/components/session/SessionList.js +31 -55
  38. package/dist/cjs/components/session/SessionList.js.map +1 -1
  39. package/dist/cjs/components/session/SessionListItem.js +59 -106
  40. package/dist/cjs/components/session/SessionListItem.js.map +1 -1
  41. package/dist/cjs/components/session/SessionListSkeleton.js +8 -9
  42. package/dist/cjs/components/session/SessionListSkeleton.js.map +1 -1
  43. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js +2 -2
  44. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
  45. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +2 -3
  46. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  47. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +1 -2
  48. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  49. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js +2 -2
  50. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  51. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js +2 -2
  52. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -1
  53. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js +1 -1
  54. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
  55. package/dist/cjs/components/session/formatDate.js +6 -6
  56. package/dist/cjs/components/session/formatDate.js.map +1 -1
  57. package/dist/cjs/components/session/getLastSeen.js +6 -6
  58. package/dist/cjs/components/session/getLastSeen.js.map +1 -1
  59. package/dist/cjs/components/shared/ButtonUpdate.js +4 -3
  60. package/dist/cjs/components/shared/ButtonUpdate.js.map +1 -1
  61. package/dist/cjs/components/shared/ErrorResult.js +8 -5
  62. package/dist/cjs/components/shared/ErrorResult.js.map +1 -1
  63. package/dist/cjs/components/shared/FormError.js +5 -4
  64. package/dist/cjs/components/shared/FormError.js.map +1 -1
  65. package/dist/cjs/components/shared/MainLoader.js +2 -6
  66. package/dist/cjs/components/shared/MainLoader.js.map +1 -1
  67. package/dist/cjs/components/shared/icons/AndroidIcon.js +5 -7
  68. package/dist/cjs/components/shared/icons/AndroidIcon.js.map +1 -1
  69. package/dist/cjs/components/shared/icons/AppleIcon.js +5 -7
  70. package/dist/cjs/components/shared/icons/AppleIcon.js.map +1 -1
  71. package/dist/cjs/components/shared/icons/BrowserIcon.js +5 -7
  72. package/dist/cjs/components/shared/icons/BrowserIcon.js.map +1 -1
  73. package/dist/cjs/components/shared/icons/ProfileIcon.js +5 -7
  74. package/dist/cjs/components/shared/icons/ProfileIcon.js.map +1 -1
  75. package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js +5 -7
  76. package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js.map +1 -1
  77. package/dist/cjs/index.js +16 -17
  78. package/dist/cjs/index.js.map +1 -1
  79. package/dist/cjs/utils/getErrorMessage.js +13 -13
  80. package/dist/cjs/utils/getErrorMessage.js.map +1 -1
  81. package/dist/cjs/utils/getUserFullName.js +7 -5
  82. package/dist/cjs/utils/getUserFullName.js.map +1 -1
  83. package/dist/cjs/utils/handleFormErrors.js +11 -16
  84. package/dist/cjs/utils/handleFormErrors.js.map +1 -1
  85. package/dist/esm/components/profile/ProfileDrawerContent.js +16 -16
  86. package/dist/esm/components/profile/ProfileDrawerContent.js.map +1 -1
  87. package/dist/esm/components/profile/ProfileUpdateNameModal.js +25 -15
  88. package/dist/esm/components/profile/ProfileUpdateNameModal.js.map +1 -1
  89. package/dist/esm/components/profile/ProfileUpdatePasswordModal.js +31 -19
  90. package/dist/esm/components/profile/ProfileUpdatePasswordModal.js.map +1 -1
  91. package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +1 -2
  92. package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
  93. package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +1 -2
  94. package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
  95. package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +1 -2
  96. package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  97. package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +0 -1
  98. package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  99. package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js +1 -2
  100. package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  101. package/dist/esm/components/session/SessionDrawerContent.js.map +1 -1
  102. package/dist/esm/components/session/SessionListItem.js +1 -1
  103. package/dist/esm/components/session/SessionListItem.js.map +1 -1
  104. package/dist/esm/components/session/__generated__/SessionDrawerContentQuery.graphql.js +1 -1
  105. package/dist/esm/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
  106. package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +1 -2
  107. package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  108. package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +0 -1
  109. package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  110. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js +1 -1
  111. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  112. package/dist/esm/components/session/__generated__/SessionListRefetchQuery.graphql.js +1 -1
  113. package/dist/esm/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -1
  114. package/dist/types/components/profile/ProfileButton.d.ts.map +1 -0
  115. package/dist/types/components/profile/ProfileConfigContext.d.ts.map +1 -0
  116. package/dist/types/components/profile/ProfileContext.d.ts.map +1 -0
  117. package/dist/types/components/profile/ProfileDrawer.d.ts.map +1 -0
  118. package/dist/types/components/profile/ProfileDrawerContent.d.ts.map +1 -0
  119. package/dist/types/components/profile/ProfileNavigationItem.d.ts.map +1 -0
  120. package/dist/types/{src/lib/components → components}/profile/ProfileUpdateNameModal.d.ts +1 -1
  121. package/dist/types/components/profile/ProfileUpdateNameModal.d.ts.map +1 -0
  122. package/dist/types/{src/lib/components → components}/profile/ProfileUpdatePasswordModal.d.ts +1 -1
  123. package/dist/types/components/profile/ProfileUpdatePasswordModal.d.ts.map +1 -0
  124. package/dist/types/components/profile/ProtectedWrapper.d.ts.map +1 -0
  125. package/dist/types/components/profile/UserAvatar.d.ts.map +1 -0
  126. package/dist/types/components/profile/UserAvatarAddon.d.ts.map +1 -0
  127. package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts +1 -1
  128. package/dist/types/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +1 -0
  129. package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts +2 -2
  130. package/dist/types/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +1 -0
  131. package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts +4 -4
  132. package/dist/types/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +1 -0
  133. package/dist/types/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +1 -0
  134. package/dist/types/{src/lib/components → components}/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts +4 -4
  135. package/dist/types/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +1 -0
  136. package/dist/types/components/session/SessionDrawer.d.ts.map +1 -0
  137. package/dist/types/components/session/SessionDrawerContent.d.ts.map +1 -0
  138. package/dist/types/{src/lib/components → components}/session/SessionList.d.ts +2 -2
  139. package/dist/types/components/session/SessionList.d.ts.map +1 -0
  140. package/dist/types/{src/lib/components → components}/session/SessionListItem.d.ts +4 -4
  141. package/dist/types/components/session/SessionListItem.d.ts.map +1 -0
  142. package/dist/types/components/session/SessionListSkeleton.d.ts.map +1 -0
  143. package/dist/types/{src/lib/components → components}/session/__generated__/SessionDrawerContentQuery.graphql.d.ts +1 -1
  144. package/dist/types/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +1 -0
  145. package/dist/types/{src/lib/components → components}/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts +1 -1
  146. package/dist/types/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +1 -0
  147. package/dist/types/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +1 -0
  148. package/dist/types/components/session/__generated__/SessionListItem_session.graphql.d.ts +27 -0
  149. package/dist/types/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +1 -0
  150. package/dist/types/{src/lib/components → components}/session/__generated__/SessionListRefetchQuery.graphql.d.ts +1 -1
  151. package/dist/types/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +1 -0
  152. package/dist/types/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +1 -0
  153. package/dist/types/components/session/formatDate.d.ts.map +1 -0
  154. package/dist/types/components/session/getLastSeen.d.ts.map +1 -0
  155. package/dist/types/components/shared/ButtonUpdate.d.ts.map +1 -0
  156. package/dist/types/components/shared/ErrorResult.d.ts.map +1 -0
  157. package/dist/types/components/shared/FormError.d.ts.map +1 -0
  158. package/dist/types/components/shared/MainLoader.d.ts.map +1 -0
  159. package/dist/types/components/shared/icons/AndroidIcon.d.ts.map +1 -0
  160. package/dist/types/components/shared/icons/AppleIcon.d.ts.map +1 -0
  161. package/dist/types/components/shared/icons/BrowserIcon.d.ts.map +1 -0
  162. package/dist/types/components/shared/icons/ProfileIcon.d.ts.map +1 -0
  163. package/dist/types/components/shared/icons/UnknownDeviceIcon.d.ts.map +1 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/utils/getErrorMessage.d.ts.map +1 -0
  166. package/dist/types/utils/getUserFullName.d.ts.map +1 -0
  167. package/dist/types/utils/handleFormErrors.d.ts.map +1 -0
  168. package/package.json +41 -41
  169. package/dist/types/src/lib/components/profile/ProfileButton.d.ts.map +0 -1
  170. package/dist/types/src/lib/components/profile/ProfileConfigContext.d.ts.map +0 -1
  171. package/dist/types/src/lib/components/profile/ProfileContext.d.ts.map +0 -1
  172. package/dist/types/src/lib/components/profile/ProfileDrawer.d.ts.map +0 -1
  173. package/dist/types/src/lib/components/profile/ProfileDrawerContent.d.ts.map +0 -1
  174. package/dist/types/src/lib/components/profile/ProfileNavigationItem.d.ts.map +0 -1
  175. package/dist/types/src/lib/components/profile/ProfileUpdateNameModal.d.ts.map +0 -1
  176. package/dist/types/src/lib/components/profile/ProfileUpdatePasswordModal.d.ts.map +0 -1
  177. package/dist/types/src/lib/components/profile/ProtectedWrapper.d.ts.map +0 -1
  178. package/dist/types/src/lib/components/profile/UserAvatar.d.ts.map +0 -1
  179. package/dist/types/src/lib/components/profile/UserAvatarAddon.d.ts.map +0 -1
  180. package/dist/types/src/lib/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +0 -1
  181. package/dist/types/src/lib/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +0 -1
  182. package/dist/types/src/lib/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +0 -1
  183. package/dist/types/src/lib/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +0 -1
  184. package/dist/types/src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +0 -1
  185. package/dist/types/src/lib/components/session/SessionDrawer.d.ts.map +0 -1
  186. package/dist/types/src/lib/components/session/SessionDrawerContent.d.ts.map +0 -1
  187. package/dist/types/src/lib/components/session/SessionList.d.ts.map +0 -1
  188. package/dist/types/src/lib/components/session/SessionListItem.d.ts.map +0 -1
  189. package/dist/types/src/lib/components/session/SessionListSkeleton.d.ts.map +0 -1
  190. package/dist/types/src/lib/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +0 -1
  191. package/dist/types/src/lib/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +0 -1
  192. package/dist/types/src/lib/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +0 -1
  193. package/dist/types/src/lib/components/session/__generated__/SessionListItem_session.graphql.d.ts +0 -27
  194. package/dist/types/src/lib/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +0 -1
  195. package/dist/types/src/lib/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +0 -1
  196. package/dist/types/src/lib/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +0 -1
  197. package/dist/types/src/lib/components/session/formatDate.d.ts.map +0 -1
  198. package/dist/types/src/lib/components/session/getLastSeen.d.ts.map +0 -1
  199. package/dist/types/src/lib/components/shared/ButtonUpdate.d.ts.map +0 -1
  200. package/dist/types/src/lib/components/shared/ErrorResult.d.ts.map +0 -1
  201. package/dist/types/src/lib/components/shared/FormError.d.ts.map +0 -1
  202. package/dist/types/src/lib/components/shared/MainLoader.d.ts.map +0 -1
  203. package/dist/types/src/lib/components/shared/icons/AndroidIcon.d.ts.map +0 -1
  204. package/dist/types/src/lib/components/shared/icons/AppleIcon.d.ts.map +0 -1
  205. package/dist/types/src/lib/components/shared/icons/BrowserIcon.d.ts.map +0 -1
  206. package/dist/types/src/lib/components/shared/icons/ProfileIcon.d.ts.map +0 -1
  207. package/dist/types/src/lib/components/shared/icons/UnknownDeviceIcon.d.ts.map +0 -1
  208. package/dist/types/src/lib/index.d.ts.map +0 -1
  209. package/dist/types/src/lib/utils/getErrorMessage.d.ts.map +0 -1
  210. package/dist/types/src/lib/utils/getUserFullName.d.ts.map +0 -1
  211. package/dist/types/src/lib/utils/handleFormErrors.d.ts.map +0 -1
  212. /package/dist/types/{src/lib/components → components}/profile/ProfileButton.d.ts +0 -0
  213. /package/dist/types/{src/lib/components → components}/profile/ProfileConfigContext.d.ts +0 -0
  214. /package/dist/types/{src/lib/components → components}/profile/ProfileContext.d.ts +0 -0
  215. /package/dist/types/{src/lib/components → components}/profile/ProfileDrawer.d.ts +0 -0
  216. /package/dist/types/{src/lib/components → components}/profile/ProfileDrawerContent.d.ts +0 -0
  217. /package/dist/types/{src/lib/components → components}/profile/ProfileNavigationItem.d.ts +0 -0
  218. /package/dist/types/{src/lib/components → components}/profile/ProtectedWrapper.d.ts +0 -0
  219. /package/dist/types/{src/lib/components → components}/profile/UserAvatar.d.ts +0 -0
  220. /package/dist/types/{src/lib/components → components}/profile/UserAvatarAddon.d.ts +0 -0
  221. /package/dist/types/{src/lib/components → components}/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts +0 -0
  222. /package/dist/types/{src/lib/components → components}/session/SessionDrawer.d.ts +0 -0
  223. /package/dist/types/{src/lib/components → components}/session/SessionDrawerContent.d.ts +0 -0
  224. /package/dist/types/{src/lib/components → components}/session/SessionListSkeleton.d.ts +0 -0
  225. /package/dist/types/{src/lib/components → components}/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts +0 -0
  226. /package/dist/types/{src/lib/components → components}/session/__generated__/SessionList_sessions.graphql.d.ts +0 -0
  227. /package/dist/types/{src/lib/components → components}/session/formatDate.d.ts +0 -0
  228. /package/dist/types/{src/lib/components → components}/session/getLastSeen.d.ts +0 -0
  229. /package/dist/types/{src/lib/components → components}/shared/ButtonUpdate.d.ts +0 -0
  230. /package/dist/types/{src/lib/components → components}/shared/ErrorResult.d.ts +0 -0
  231. /package/dist/types/{src/lib/components → components}/shared/FormError.d.ts +0 -0
  232. /package/dist/types/{src/lib/components → components}/shared/MainLoader.d.ts +0 -0
  233. /package/dist/types/{src/lib/components → components}/shared/icons/AndroidIcon.d.ts +0 -0
  234. /package/dist/types/{src/lib/components → components}/shared/icons/AppleIcon.d.ts +0 -0
  235. /package/dist/types/{src/lib/components → components}/shared/icons/BrowserIcon.d.ts +0 -0
  236. /package/dist/types/{src/lib/components → components}/shared/icons/ProfileIcon.d.ts +0 -0
  237. /package/dist/types/{src/lib/components → components}/shared/icons/UnknownDeviceIcon.d.ts +0 -0
  238. /package/dist/types/{src/lib/index.d.ts → index.d.ts} +0 -0
  239. /package/dist/types/{src/lib/utils → utils}/getErrorMessage.d.ts +0 -0
  240. /package/dist/types/{src/lib/utils → utils}/getUserFullName.d.ts +0 -0
  241. /package/dist/types/{src/lib/utils → utils}/handleFormErrors.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SessionDrawerContent.js","names":["_react","_interopRequireWildcard","require","_hooks","_utils","_ErrorResult","_interopRequireDefault","_SessionList","_SessionListSkeleton","_SessionDrawerContentQuery","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SessionDrawerContentLoader","props","useLazyLoadQuery","hash","console","error","fetchPolicy","createElement","sessionsKey","errorFallback","_ref","SessionDrawerContent","ErrorBoundary","fallback","Suspense","_default","exports"],"sources":["../../../../src/lib/components/session/SessionDrawerContent.tsx"],"sourcesContent":["import React, { Suspense } from 'react';\nimport { useLazyLoadQuery } from 'react-relay/hooks';\nimport { ErrorBoundary } from '@os-design/utils';\nimport graphql from 'babel-plugin-relay/macro';\nimport ErrorResult from '../shared/ErrorResult';\nimport SessionList from './SessionList';\nimport SessionListSkeleton from './SessionListSkeleton';\nimport { SessionDrawerContentQuery } from './__generated__/SessionDrawerContentQuery.graphql';\n\nconst SessionDrawerContentLoader: React.FC = () => {\n const props = useLazyLoadQuery<SessionDrawerContentQuery>(\n graphql`\n query SessionDrawerContentQuery {\n ...SessionList_sessions\n }\n `,\n {},\n { fetchPolicy: 'network-only' }\n );\n\n return <SessionList sessionsKey={props} />;\n};\n\nconst errorFallback = ({ error }) => <ErrorResult error={error} />;\n\nconst SessionDrawerContent: React.FC = () => (\n <ErrorBoundary fallback={errorFallback}>\n <Suspense fallback={<SessionListSkeleton />}>\n <SessionDrawerContentLoader />\n </Suspense>\n </ErrorBoundary>\n);\n\nexport default SessionDrawerContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SessionDrawerContent.js","names":["_react","_interopRequireWildcard","require","_hooks","_utils","_ErrorResult","_interopRequireDefault","_SessionList","_SessionListSkeleton","_SessionDrawerContentQuery","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","SessionDrawerContentLoader","props","useLazyLoadQuery","hash","console","error","fetchPolicy","createElement","sessionsKey","errorFallback","_ref","SessionDrawerContent","ErrorBoundary","fallback","Suspense","_default","exports"],"sources":["../../../../src/lib/components/session/SessionDrawerContent.tsx"],"sourcesContent":["import React, { Suspense } from 'react';\nimport { useLazyLoadQuery } from 'react-relay/hooks';\nimport { ErrorBoundary, FallbackFn } from '@os-design/utils';\nimport graphql from 'babel-plugin-relay/macro';\nimport ErrorResult from '../shared/ErrorResult';\nimport SessionList from './SessionList';\nimport SessionListSkeleton from './SessionListSkeleton';\nimport { SessionDrawerContentQuery } from './__generated__/SessionDrawerContentQuery.graphql';\n\nconst SessionDrawerContentLoader: React.FC = () => {\n const props = useLazyLoadQuery<SessionDrawerContentQuery>(\n graphql`\n query SessionDrawerContentQuery {\n ...SessionList_sessions\n }\n `,\n {},\n { fetchPolicy: 'network-only' }\n );\n\n return <SessionList sessionsKey={props} />;\n};\n\nconst errorFallback: FallbackFn = ({ error }) => <ErrorResult error={error} />;\n\nconst SessionDrawerContent: React.FC = () => (\n <ErrorBoundary fallback={errorFallback}>\n <Suspense fallback={<SessionListSkeleton />}>\n <SessionDrawerContentLoader />\n </Suspense>\n </ErrorBoundary>\n);\n\nexport default SessionDrawerContent;\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
  });
@@ -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(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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
- var 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);
27
- var Title = exports.Title = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-weight: 500;\n margin: 1em 1em 0.5em;\n"])));
28
- var List = exports.List = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-top: 1px solid ", ";\n border-bottom: 1px solid ", ";\n"])), function (p) {
29
- return (0, _theming.clr)(p.theme.listItemColorBorder);
30
- }, function (p) {
31
- return (0, _theming.clr)(p.theme.listItemColorBorder);
32
- });
33
- var DestroyAllOtherSessionsButton = (0, _styled.default)(_core.Button)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n & > span {\n flex: 1;\n text-align: left;\n }\n"])));
34
- var OtherSessions = _styled.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-top: 2em;\n"])));
35
- var SESSION_LIST_PADDING_VERTICAL = exports.SESSION_LIST_PADDING_VERTICAL = 0.5;
36
- var SessionList = function SessionList(_ref) {
37
- var sessionsKey = _ref.sessionsKey;
38
- var _useFragment = (0, _hooks.useFragment)(sessionsFragment, sessionsKey),
39
- sessions = _useFragment.sessions;
40
- var _useTranslation = (0, _reactI18next.useTranslation)(['profile']),
41
- t = _useTranslation.t;
42
- var currentSession = (0, _react.useMemo)(function () {
43
- return sessions.find(function (session) {
44
- return session.current;
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: function updater(store) {
41
+ updater: store => {
62
42
  var _rootRP$getLinkedReco;
63
43
  // Delete all other sessions from the store
64
- var rootRP = store.getRoot();
65
- var sessionsRP = (_rootRP$getLinkedReco = rootRP.getLinkedRecords('sessions')) === null || _rootRP$getLinkedReco === void 0 ? void 0 : _rootRP$getLinkedReco.filter(function (item) {
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: function onError(error) {
49
+ onError: error => {
72
50
  _core.message.error(error.message);
73
51
  },
74
- onCompleted: function 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(function (session) {
90
- return /*#__PURE__*/_react.default.createElement(_SessionListItem.default, {
91
- key: session.id,
92
- sessionKey: session
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","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","length","arr2","r","l","t","Symbol","iterator","e","u","a","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","_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(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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
- var 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);
41
- var 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"])), function (p) {
42
- return (0, _theming.clr)(p.theme.listItemColorBorder);
43
- }, (0, _styles.horizontalPaddingStyles)());
44
- var Info = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-size: ", "em;\n ", ";\n"])), function (p) {
45
- return p.theme.sizes.small;
46
- }, _styles.ellipsisStyles);
47
- var Content = exports.Content = _styled.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n flex: 1;\n overflow: hidden;\n"])));
48
- var Title = (0, _styled.default)(Info)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n font-weight: 500;\n"])));
49
- var LastSeen = (0, _styled.default)(Info)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n"])), function (p) {
50
- return (0, _theming.clr)(p.theme.inputColorPlaceholder);
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
- var mergeInfo = function mergeInfo() {
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(function (item) {
80
- return item !== null;
81
- }).join(', ') || null;
48
+ return args.filter(item => item !== null && item !== undefined).join(', ') || null;
82
49
  };
83
- var SessionListItem = function SessionListItem(_ref) {
84
- var sessionKey = _ref.sessionKey,
85
- hideLastSeenAt = _ref.hideLastSeenAt;
86
- var session = (0, _hooks.useFragment)(sessionListItemFragment, sessionKey);
87
- var _useTranslation = (0, _reactI18next.useTranslation)(['profile']),
88
- t = _useTranslation.t,
89
- i18n = _useTranslation.i18n;
90
- var touchDevice = (0, _react.useMemo)(function () {
91
- return (0, _utils.isTouchDevice)();
92
- }, []);
93
- var _useSwipe = (0, _utils.useSwipe)(),
94
- opened = _useSwipe.opened,
95
- handlers = _useSwipe.handlers;
96
- var browser = (0, _react.useMemo)(function () {
97
- return nameVersionToString(session.browserName, session.browserVersion);
98
- }, [session.browserName, session.browserVersion]);
99
- var os = (0, _react.useMemo)(function () {
100
- return nameVersionToString(session.osName, session.osVersion);
101
- }, [session.osName, session.osVersion]);
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(function (item) {
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
- var title = (0, _react.useMemo)(function () {
114
- var deviceType = (session.deviceType || 'unknown').toLowerCase();
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
- var deviceInfo = (0, _react.useMemo)(function () {
121
- return session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os);
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
- var location = mergeInfo(session.city, session.country);
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
- var lastSeen = (0, _react.useMemo)(function () {
129
- var lsa = (0, _getLastSeen.default)(session.lastSeenAt);
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
- var _useMemo = (0, _react.useMemo)(function () {
142
- if (browser) return [/*#__PURE__*/_react.default.createElement(_BrowserIcon.default, null), 'hsl(30, 60%, 50%)'];
143
- if (session.isApp) {
144
- if (session.osName === 'iOS' || session.osName === 'iPhone OS') {
145
- return [/*#__PURE__*/_react.default.createElement(_AppleIcon.default, null), 'hsl(0, 0%, 50%)'];
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(_UnknownDeviceIcon.default, null), 'hsl(5, 60%, 50%)'];
150
- }, [browser, session.isApp, session.osName]),
151
- _useMemo2 = _slicedToArray(_useMemo, 2),
152
- iconComponent = _useMemo2[0],
153
- iconColor = _useMemo2[1];
154
- var _useMutation = (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)),
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: function updater(store) {
120
+ updater: store => {
166
121
  var _rootRP$getLinkedReco;
167
122
  // Delete the session from the store
168
- var rootRP = store.getRoot();
169
- var sessionsRP = (_rootRP$getLinkedReco = rootRP.getLinkedRecords('sessions')) === null || _rootRP$getLinkedReco === void 0 ? void 0 : _rootRP$getLinkedReco.filter(function (item) {
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: function onError(error) {
128
+ onError: error => {
176
129
  _core.message.error(error.message);
177
130
  },
178
- onCompleted: function 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","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","r","l","t","Symbol","iterator","e","n","u","a","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","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>): string | null =>\n args.filter((item) => item !== null).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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"}