@os-team/profile 1.0.28 → 1.0.32

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 (55) hide show
  1. package/dist/cjs/components/profile/ProfileConfigContext.js +1 -1
  2. package/dist/cjs/components/profile/ProfileContext.js +1 -1
  3. package/dist/cjs/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.js.map +1 -1
  4. package/dist/cjs/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.js.map +1 -1
  5. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  6. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  7. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  8. package/dist/cjs/components/session/SessionList.js +22 -27
  9. package/dist/cjs/components/session/SessionList.js.map +1 -1
  10. package/dist/cjs/components/session/SessionListItem.js +6 -9
  11. package/dist/cjs/components/session/SessionListItem.js.map +1 -1
  12. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js +96 -165
  13. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
  14. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  15. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  16. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  17. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js +183 -0
  18. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -0
  19. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js +29 -85
  20. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
  21. package/dist/cjs/index.js +6 -6
  22. package/dist/esm/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.js.map +1 -1
  23. package/dist/esm/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.js.map +1 -1
  24. package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  25. package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  26. package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  27. package/dist/esm/components/session/SessionList.js +14 -14
  28. package/dist/esm/components/session/SessionList.js.map +1 -1
  29. package/dist/esm/components/session/SessionListItem.js +3 -4
  30. package/dist/esm/components/session/SessionListItem.js.map +1 -1
  31. package/dist/esm/components/session/__generated__/SessionDrawerContentQuery.graphql.js +96 -165
  32. package/dist/esm/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
  33. package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  34. package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  35. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  36. package/dist/esm/components/session/__generated__/SessionListRefetchQuery.graphql.js +175 -0
  37. package/dist/esm/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -0
  38. package/dist/esm/components/session/__generated__/SessionList_sessions.graphql.js +26 -85
  39. package/dist/esm/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
  40. package/dist/types/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.d.ts.map +1 -1
  41. package/dist/types/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.d.ts.map +1 -1
  42. package/dist/types/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +1 -1
  43. package/dist/types/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +1 -1
  44. package/dist/types/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +1 -1
  45. package/dist/types/components/session/SessionList.d.ts.map +1 -1
  46. package/dist/types/components/session/SessionListItem.d.ts.map +1 -1
  47. package/dist/types/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +1 -1
  48. package/dist/types/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +1 -1
  49. package/dist/types/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +1 -1
  50. package/dist/types/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +1 -1
  51. package/dist/types/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts +13 -0
  52. package/dist/types/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +1 -0
  53. package/dist/types/components/session/__generated__/SessionList_sessions.graphql.d.ts +6 -10
  54. package/dist/types/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +1 -1
  55. package/package.json +22 -22
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.useProfileConfig = void 0;
8
+ exports.useProfileConfig = exports.default = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.useProfile = void 0;
8
+ exports.useProfile = exports.default = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.ts"],"names":["node","v0","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,aAAS,IADX;AAEE,YAAQ,IAFV;AAGE,oBAAgB,eAHlB;AAIE,YAAQ,aAJV;AAKE,YAAQ,SALV;AAME,cAAU,KANZ;AAOE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,CAPhB;AAgBE,kBAAc;AAhBhB,GADO,CAAT;AAoBA,SAAO;AACL,gBAAY;AACV,6BAAuB,EADb;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,8BAJE;AAKV,oBAAeA;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAuB,EADZ;AAEX,cAAQ,WAFG;AAGX,cAAQ,8BAHG;AAIX,oBAAeA;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,8BAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA/C6B,EAA9B;;AAgDCD,IAAD,CAAcE,IAAd,GAAqB,kCAArB;eACeF,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\nexport type ProfileDrawerSignOutMutationVariables = {};\nexport type ProfileDrawerSignOutMutationResponse = {\n readonly signOut: {\n readonly ok: boolean;\n };\n};\nexport type ProfileDrawerSignOutMutation = {\n readonly response: ProfileDrawerSignOutMutationResponse;\n readonly variables: ProfileDrawerSignOutMutationVariables;\n};\n\n\n\n/*\nmutation ProfileDrawerSignOutMutation {\n signOut {\n ok\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"signOut\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"79648ed72d7cb7d656929f005dbf8371\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileDrawerSignOutMutation {\\n signOut {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '8510e6462e8f7839ce100254080ba293';\nexport default node;\n"],"file":"ProfileDrawerSignOutMutation.graphql.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.ts"],"names":["node","v0","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,aAAS,IADX;AAEE,YAAQ,IAFV;AAGE,oBAAgB,eAHlB;AAIE,YAAQ,aAJV;AAKE,YAAQ,SALV;AAME,cAAU,KANZ;AAOE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,CAPhB;AAgBE,kBAAc;AAhBhB,GADO,CAAT;AAoBA,SAAO;AACL,gBAAY;AACV,6BAAuB,EADb;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,8BAJE;AAKV,oBAAeA;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAuB,EADZ;AAEX,cAAQ,WAFG;AAGX,cAAQ,8BAHG;AAIX,oBAAeA;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,8BAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA/C6B,EAA9B;;AAgDCD,IAAD,CAAcE,IAAd,GAAqB,kCAArB;eACeF,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\n\nexport type ProfileDrawerSignOutMutationVariables = {};\nexport type ProfileDrawerSignOutMutationResponse = {\n readonly signOut: {\n readonly ok: boolean;\n };\n};\nexport type ProfileDrawerSignOutMutation = {\n readonly response: ProfileDrawerSignOutMutationResponse;\n readonly variables: ProfileDrawerSignOutMutationVariables;\n};\n\n\n\n/*\nmutation ProfileDrawerSignOutMutation {\n signOut {\n ok\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"signOut\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"79648ed72d7cb7d656929f005dbf8371\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileDrawerSignOutMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileDrawerSignOutMutation {\\n signOut {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '8510e6462e8f7839ce100254080ba293';\nexport default node;\n"],"file":"ProfileDrawerSignOutMutation.graphql.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.ts"],"names":["node","v0","v1","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,aAAS,IADX;AAEE,YAAQ,CACN;AACE,cAAQ,UADV;AAEE,cAAQ,OAFV;AAGE,sBAAgB;AAHlB,KADM,CAFV;AASE,oBAAgB,MATlB;AAUE,YAAQ,aAVV;AAWE,YAAQ,cAXV;AAYE,cAAU,KAZZ;AAaE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,EAQZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,QAJV;AAKE,oBAAc;AALhB,KARY,CAbhB;AA6BE,kBAAc;AA7BhB,GADG,CAPL;AAwCA,SAAO;AACL,gBAAY;AACV,6BAAwBD;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,mCAJE;AAKV,oBAAeC;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAwBD;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,mCAHG;AAIX,oBAAeC;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,mCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CAnE6B,EAA9B;;AAoECF,IAAD,CAAcG,IAAd,GAAqB,kCAArB;eACeH,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\nexport type UpdateAvatarInput = {\n avatar?: unknown | null;\n};\nexport type ProfileDrawerUpdateAvatarMutationVariables = {\n input: UpdateAvatarInput;\n};\nexport type ProfileDrawerUpdateAvatarMutationResponse = {\n readonly updateAvatar: {\n readonly id: string;\n readonly avatar: string | null;\n };\n};\nexport type ProfileDrawerUpdateAvatarMutation = {\n readonly response: ProfileDrawerUpdateAvatarMutationResponse;\n readonly variables: ProfileDrawerUpdateAvatarMutationVariables;\n};\n\n\n\n/*\nmutation ProfileDrawerUpdateAvatarMutation(\n $input: UpdateAvatarInput!\n) {\n updateAvatar(input: $input) {\n id\n avatar\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateAvatar\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"4e03df1e245723b6bb782fa62331d420\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileDrawerUpdateAvatarMutation(\\n $input: UpdateAvatarInput!\\n) {\\n updateAvatar(input: $input) {\\n id\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = 'c129cb1974b7cb9090d6c5df4e0f790d';\nexport default node;\n"],"file":"ProfileDrawerUpdateAvatarMutation.graphql.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.ts"],"names":["node","v0","v1","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,aAAS,IADX;AAEE,YAAQ,CACN;AACE,cAAQ,UADV;AAEE,cAAQ,OAFV;AAGE,sBAAgB;AAHlB,KADM,CAFV;AASE,oBAAgB,MATlB;AAUE,YAAQ,aAVV;AAWE,YAAQ,cAXV;AAYE,cAAU,KAZZ;AAaE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,EAQZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,QAJV;AAKE,oBAAc;AALhB,KARY,CAbhB;AA6BE,kBAAc;AA7BhB,GADG,CAPL;AAwCA,SAAO;AACL,gBAAY;AACV,6BAAwBD;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,mCAJE;AAKV,oBAAeC;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAwBD;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,mCAHG;AAIX,oBAAeC;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,mCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CAnE6B,EAA9B;;AAoECF,IAAD,CAAcG,IAAd,GAAqB,kCAArB;eACeH,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\n\nexport type UpdateAvatarInput = {\n avatar?: unknown | null;\n};\nexport type ProfileDrawerUpdateAvatarMutationVariables = {\n input: UpdateAvatarInput;\n};\nexport type ProfileDrawerUpdateAvatarMutationResponse = {\n readonly updateAvatar: {\n readonly id: string;\n readonly avatar: string | null;\n };\n};\nexport type ProfileDrawerUpdateAvatarMutation = {\n readonly response: ProfileDrawerUpdateAvatarMutationResponse;\n readonly variables: ProfileDrawerUpdateAvatarMutationVariables;\n};\n\n\n\n/*\nmutation ProfileDrawerUpdateAvatarMutation(\n $input: UpdateAvatarInput!\n) {\n updateAvatar(input: $input) {\n id\n avatar\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateAvatar\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"4e03df1e245723b6bb782fa62331d420\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileDrawerUpdateAvatarMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileDrawerUpdateAvatarMutation(\\n $input: UpdateAvatarInput!\\n) {\\n updateAvatar(input: $input) {\\n id\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = 'c129cb1974b7cb9090d6c5df4e0f790d';\nexport default node;\n"],"file":"ProfileDrawerUpdateAvatarMutation.graphql.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.ts"],"names":["node","v0","v1","v2","v3","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,YAAQ,UADV;AAEE,YAAQ,OAFV;AAGE,oBAAgB;AAHlB,GADG,CAPL;AAAA,MAcAC,EAAE,GAAG;AACH,aAAS,IADN;AAEH,YAAQ,IAFL;AAGH,YAAQ,aAHL;AAIH,YAAQ,WAJL;AAKH,kBAAc;AALX,GAdL;AAAA,MAqBAC,EAAE,GAAG;AACH,aAAS,IADN;AAEH,YAAQ,IAFL;AAGH,YAAQ,aAHL;AAIH,YAAQ,UAJL;AAKH,kBAAc;AALX,GArBL;AA4BA,SAAO;AACL,gBAAY;AACV,6BAAwBH;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,gCAJE;AAKV,oBAAc,CACZ;AACE,iBAAS,IADX;AAEE,gBAASC;AAAE;AAFb;AAGE,wBAAgB,MAHlB;AAIE,gBAAQ,aAJV;AAKE,gBAAQ,eALV;AAME,kBAAU,KANZ;AAOE,sBAAc,CACXC;AAAE;AADS,UAEXC;AAAE;AAFS,SAPhB;AAWE,sBAAc;AAXhB,OADY,CALJ;AAoBV,cAAQ,UApBE;AAqBV,qBAAe;AArBL,KADP;AAwBL,YAAQ,SAxBH;AAyBL,iBAAa;AACX,6BAAwBH;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,gCAHG;AAIX,oBAAc,CACZ;AACE,iBAAS,IADX;AAEE,gBAASC;AAAE;AAFb;AAGE,wBAAgB,MAHlB;AAIE,gBAAQ,aAJV;AAKE,gBAAQ,eALV;AAME,kBAAU,KANZ;AAOE,sBAAc,CACXC;AAAE;AADS,UAEXC;AAAE;AAFS,UAGZ;AACE,mBAAS,IADX;AAEE,kBAAQ,IAFV;AAGE,kBAAQ,aAHV;AAIE,kBAAQ,IAJV;AAKE,wBAAc;AALhB,SAHY,CAPhB;AAkBE,sBAAc;AAlBhB,OADY;AAJH,KAzBR;AAoDL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,gCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AApDL,GAAP;AA6DC,CA1F6B,EAA9B;;AA2FCJ,IAAD,CAAcK,IAAd,GAAqB,kCAArB;eACeL,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\nexport type UpdateProfileInput = {\n firstName?: string | null;\n lastName?: string | null;\n};\nexport type ProfileUpdateNameModalMutationVariables = {\n input: UpdateProfileInput;\n};\nexport type ProfileUpdateNameModalMutationResponse = {\n readonly updateProfile: {\n readonly firstName: string | null;\n readonly lastName: string | null;\n };\n};\nexport type ProfileUpdateNameModalMutation = {\n readonly response: ProfileUpdateNameModalMutationResponse;\n readonly variables: ProfileUpdateNameModalMutationVariables;\n};\n\n\n\n/*\nmutation ProfileUpdateNameModalMutation(\n $input: UpdateProfileInput!\n) {\n updateProfile(input: $input) {\n firstName\n lastName\n id\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n],\nv2 = {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n},\nv3 = {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n};\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": (v1/*: any*/),\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateProfile\",\n \"plural\": false,\n \"selections\": [\n (v2/*: any*/),\n (v3/*: any*/)\n ],\n \"storageKey\": null\n }\n ],\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": (v1/*: any*/),\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateProfile\",\n \"plural\": false,\n \"selections\": [\n (v2/*: any*/),\n (v3/*: any*/),\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n ]\n },\n \"params\": {\n \"cacheID\": \"f70f0aaabf917dc446c3a71cf7b4f25f\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileUpdateNameModalMutation(\\n $input: UpdateProfileInput!\\n) {\\n updateProfile(input: $input) {\\n firstName\\n lastName\\n id\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '7264a05b6738d5417df9f1dc462486aa';\nexport default node;\n"],"file":"ProfileUpdateNameModalMutation.graphql.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.ts"],"names":["node","v0","v1","v2","v3","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,YAAQ,UADV;AAEE,YAAQ,OAFV;AAGE,oBAAgB;AAHlB,GADG,CAPL;AAAA,MAcAC,EAAE,GAAG;AACH,aAAS,IADN;AAEH,YAAQ,IAFL;AAGH,YAAQ,aAHL;AAIH,YAAQ,WAJL;AAKH,kBAAc;AALX,GAdL;AAAA,MAqBAC,EAAE,GAAG;AACH,aAAS,IADN;AAEH,YAAQ,IAFL;AAGH,YAAQ,aAHL;AAIH,YAAQ,UAJL;AAKH,kBAAc;AALX,GArBL;AA4BA,SAAO;AACL,gBAAY;AACV,6BAAwBH;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,gCAJE;AAKV,oBAAc,CACZ;AACE,iBAAS,IADX;AAEE,gBAASC;AAAE;AAFb;AAGE,wBAAgB,MAHlB;AAIE,gBAAQ,aAJV;AAKE,gBAAQ,eALV;AAME,kBAAU,KANZ;AAOE,sBAAc,CACXC;AAAE;AADS,UAEXC;AAAE;AAFS,SAPhB;AAWE,sBAAc;AAXhB,OADY,CALJ;AAoBV,cAAQ,UApBE;AAqBV,qBAAe;AArBL,KADP;AAwBL,YAAQ,SAxBH;AAyBL,iBAAa;AACX,6BAAwBH;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,gCAHG;AAIX,oBAAc,CACZ;AACE,iBAAS,IADX;AAEE,gBAASC;AAAE;AAFb;AAGE,wBAAgB,MAHlB;AAIE,gBAAQ,aAJV;AAKE,gBAAQ,eALV;AAME,kBAAU,KANZ;AAOE,sBAAc,CACXC;AAAE;AADS,UAEXC;AAAE;AAFS,UAGZ;AACE,mBAAS,IADX;AAEE,kBAAQ,IAFV;AAGE,kBAAQ,aAHV;AAIE,kBAAQ,IAJV;AAKE,wBAAc;AALhB,SAHY,CAPhB;AAkBE,sBAAc;AAlBhB,OADY;AAJH,KAzBR;AAoDL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,gCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AApDL,GAAP;AA6DC,CA1F6B,EAA9B;;AA2FCJ,IAAD,CAAcK,IAAd,GAAqB,kCAArB;eACeL,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\n\nexport type UpdateProfileInput = {\n firstName?: string | null;\n lastName?: string | null;\n};\nexport type ProfileUpdateNameModalMutationVariables = {\n input: UpdateProfileInput;\n};\nexport type ProfileUpdateNameModalMutationResponse = {\n readonly updateProfile: {\n readonly firstName: string | null;\n readonly lastName: string | null;\n };\n};\nexport type ProfileUpdateNameModalMutation = {\n readonly response: ProfileUpdateNameModalMutationResponse;\n readonly variables: ProfileUpdateNameModalMutationVariables;\n};\n\n\n\n/*\nmutation ProfileUpdateNameModalMutation(\n $input: UpdateProfileInput!\n) {\n updateProfile(input: $input) {\n firstName\n lastName\n id\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n],\nv2 = {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n},\nv3 = {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n};\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": (v1/*: any*/),\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateProfile\",\n \"plural\": false,\n \"selections\": [\n (v2/*: any*/),\n (v3/*: any*/)\n ],\n \"storageKey\": null\n }\n ],\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": (v1/*: any*/),\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updateProfile\",\n \"plural\": false,\n \"selections\": [\n (v2/*: any*/),\n (v3/*: any*/),\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n ]\n },\n \"params\": {\n \"cacheID\": \"f70f0aaabf917dc446c3a71cf7b4f25f\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileUpdateNameModalMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileUpdateNameModalMutation(\\n $input: UpdateProfileInput!\\n) {\\n updateProfile(input: $input) {\\n firstName\\n lastName\\n id\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '7264a05b6738d5417df9f1dc462486aa';\nexport default node;\n"],"file":"ProfileUpdateNameModalMutation.graphql.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.ts"],"names":["node","v0","v1","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,aAAS,IADX;AAEE,YAAQ,CACN;AACE,cAAQ,UADV;AAEE,cAAQ,OAFV;AAGE,sBAAgB;AAHlB,KADM,CAFV;AASE,oBAAgB,MATlB;AAUE,YAAQ,aAVV;AAWE,YAAQ,gBAXV;AAYE,cAAU,KAZZ;AAaE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,CAbhB;AAsBE,kBAAc;AAtBhB,GADG,CAPL;AAiCA,SAAO;AACL,gBAAY;AACV,6BAAwBD;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,oCAJE;AAKV,oBAAeC;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAwBD;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,oCAHG;AAIX,oBAAeC;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,oCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA5D6B,EAA9B;;AA6DCF,IAAD,CAAcG,IAAd,GAAqB,kCAArB;eACeH,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\nexport type UpdatePasswordInput = {\n password: string;\n currentPassword: string;\n};\nexport type ProfileUpdatePasswordModalMutationVariables = {\n input: UpdatePasswordInput;\n};\nexport type ProfileUpdatePasswordModalMutationResponse = {\n readonly updatePassword: {\n readonly id: string;\n };\n};\nexport type ProfileUpdatePasswordModalMutation = {\n readonly response: ProfileUpdatePasswordModalMutationResponse;\n readonly variables: ProfileUpdatePasswordModalMutationVariables;\n};\n\n\n\n/*\nmutation ProfileUpdatePasswordModalMutation(\n $input: UpdatePasswordInput!\n) {\n updatePassword(input: $input) {\n id\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updatePassword\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"64308136a7a18e3fb1ab2d16aa93add7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileUpdatePasswordModalMutation(\\n $input: UpdatePasswordInput!\\n) {\\n updatePassword(input: $input) {\\n id\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = 'efa37ccbe82fbace709f7e3992643c05';\nexport default node;\n"],"file":"ProfileUpdatePasswordModalMutation.graphql.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.ts"],"names":["node","v0","v1","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,oBAAgB,IADlB;AAEE,YAAQ,eAFV;AAGE,YAAQ;AAHV,GADO,CAAT;AAAA,MAOAC,EAAE,GAAG,CACH;AACE,aAAS,IADX;AAEE,YAAQ,CACN;AACE,cAAQ,UADV;AAEE,cAAQ,OAFV;AAGE,sBAAgB;AAHlB,KADM,CAFV;AASE,oBAAgB,MATlB;AAUE,YAAQ,aAVV;AAWE,YAAQ,gBAXV;AAYE,cAAU,KAZZ;AAaE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,CAbhB;AAsBE,kBAAc;AAtBhB,GADG,CAPL;AAiCA,SAAO;AACL,gBAAY;AACV,6BAAwBD;AAAE;AADhB;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,oCAJE;AAKV,oBAAeC;AAAE;AALP;AAMV,cAAQ,UANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAwBD;AAAE;AADf;AAEX,cAAQ,WAFG;AAGX,cAAQ,oCAHG;AAIX,oBAAeC;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,oCAJA;AAKR,uBAAiB,UALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA5D6B,EAA9B;;AA6DCF,IAAD,CAAcG,IAAd,GAAqB,kCAArB;eACeH,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\n\nexport type UpdatePasswordInput = {\n password: string;\n currentPassword: string;\n};\nexport type ProfileUpdatePasswordModalMutationVariables = {\n input: UpdatePasswordInput;\n};\nexport type ProfileUpdatePasswordModalMutationResponse = {\n readonly updatePassword: {\n readonly id: string;\n };\n};\nexport type ProfileUpdatePasswordModalMutation = {\n readonly response: ProfileUpdatePasswordModalMutationResponse;\n readonly variables: ProfileUpdatePasswordModalMutationVariables;\n};\n\n\n\n/*\nmutation ProfileUpdatePasswordModalMutation(\n $input: UpdatePasswordInput!\n) {\n updatePassword(input: $input) {\n id\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"updatePassword\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"64308136a7a18e3fb1ab2d16aa93add7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProfileUpdatePasswordModalMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation ProfileUpdatePasswordModalMutation(\\n $input: UpdatePasswordInput!\\n) {\\n updatePassword(input: $input) {\\n id\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = 'efa37ccbe82fbace709f7e3992643c05';\nexport default node;\n"],"file":"ProfileUpdatePasswordModalMutation.graphql.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.ts"],"names":["node","v0","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,aAAS,IADX;AAEE,YAAQ,IAFV;AAGE,oBAAgB,MAHlB;AAIE,YAAQ,aAJV;AAKE,YAAQ,SALV;AAME,cAAU,KANZ;AAOE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,EAQZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,OAJV;AAKE,oBAAc;AALhB,KARY,EAeZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,WAJV;AAKE,oBAAc;AALhB,KAfY,EAsBZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,UAJV;AAKE,oBAAc;AALhB,KAtBY,EA6BZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,QAJV;AAKE,oBAAc;AALhB,KA7BY,CAPhB;AA4CE,kBAAc;AA5ChB,GADO,CAAT;AAgDA,SAAO;AACL,gBAAY;AACV,6BAAuB,EADb;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,uBAJE;AAKV,oBAAeA;AAAE;AALP;AAMV,cAAQ,OANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAuB,EADZ;AAEX,cAAQ,WAFG;AAGX,cAAQ,uBAHG;AAIX,oBAAeA;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,uBAJA;AAKR,uBAAiB,OALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA3E6B,EAA9B;;AA4ECD,IAAD,CAAcE,IAAd,GAAqB,kCAArB;eACeF,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\nexport type ProtectedWrapperQueryVariables = {};\nexport type ProtectedWrapperQueryResponse = {\n readonly profile: {\n readonly id: string;\n readonly email: string;\n readonly firstName: string | null;\n readonly lastName: string | null;\n readonly avatar: string | null;\n };\n};\nexport type ProtectedWrapperQuery = {\n readonly response: ProtectedWrapperQueryResponse;\n readonly variables: ProtectedWrapperQueryVariables;\n};\n\n\n\n/*\nquery ProtectedWrapperQuery {\n profile {\n id\n email\n firstName\n lastName\n avatar\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"profile\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"email\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Query\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c77ada94a5456167ef4c0c17a1fd7cd7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProtectedWrapperQuery\",\n \"operationKind\": \"query\",\n \"text\": \"query ProtectedWrapperQuery {\\n profile {\\n id\\n email\\n firstName\\n lastName\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '903b234e48f53b4a44dc0b4974ebc521';\nexport default node;\n"],"file":"ProtectedWrapperQuery.graphql.js"}
1
+ {"version":3,"sources":["../../../../../src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.ts"],"names":["node","v0","hash"],"mappings":";;;;;;;AAAA;;AACA;AACA;;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,IAAqB,GAAI,YAAU;AACzC,MAAIC,EAAE,GAAG,CACP;AACE,aAAS,IADX;AAEE,YAAQ,IAFV;AAGE,oBAAgB,MAHlB;AAIE,YAAQ,aAJV;AAKE,YAAQ,SALV;AAME,cAAU,KANZ;AAOE,kBAAc,CACZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,IAJV;AAKE,oBAAc;AALhB,KADY,EAQZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,OAJV;AAKE,oBAAc;AALhB,KARY,EAeZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,WAJV;AAKE,oBAAc;AALhB,KAfY,EAsBZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,UAJV;AAKE,oBAAc;AALhB,KAtBY,EA6BZ;AACE,eAAS,IADX;AAEE,cAAQ,IAFV;AAGE,cAAQ,aAHV;AAIE,cAAQ,QAJV;AAKE,oBAAc;AALhB,KA7BY,CAPhB;AA4CE,kBAAc;AA5ChB,GADO,CAAT;AAgDA,SAAO;AACL,gBAAY;AACV,6BAAuB,EADb;AAEV,cAAQ,UAFE;AAGV,kBAAY,IAHF;AAIV,cAAQ,uBAJE;AAKV,oBAAeA;AAAE;AALP;AAMV,cAAQ,OANE;AAOV,qBAAe;AAPL,KADP;AAUL,YAAQ,SAVH;AAWL,iBAAa;AACX,6BAAuB,EADZ;AAEX,cAAQ,WAFG;AAGX,cAAQ,uBAHG;AAIX,oBAAeA;AAAE;;AAJN,KAXR;AAiBL,cAAU;AACR,iBAAW,kCADH;AAER,YAAM,IAFE;AAGR,kBAAY,EAHJ;AAIR,cAAQ,uBAJA;AAKR,uBAAiB,OALT;AAMR,cAAQ;AANA;AAjBL,GAAP;AA0BC,CA3E6B,EAA9B;;AA4ECD,IAAD,CAAcE,IAAd,GAAqB,kCAArB;eACeF,I","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest } from \"relay-runtime\";\n\nexport type ProtectedWrapperQueryVariables = {};\nexport type ProtectedWrapperQueryResponse = {\n readonly profile: {\n readonly id: string;\n readonly email: string;\n readonly firstName: string | null;\n readonly lastName: string | null;\n readonly avatar: string | null;\n };\n};\nexport type ProtectedWrapperQuery = {\n readonly response: ProtectedWrapperQueryResponse;\n readonly variables: ProtectedWrapperQueryVariables;\n};\n\n\n\n/*\nquery ProtectedWrapperQuery {\n profile {\n id\n email\n firstName\n lastName\n avatar\n }\n}\n*/\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"profile\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"email\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Query\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c77ada94a5456167ef4c0c17a1fd7cd7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProtectedWrapperQuery\",\n \"operationKind\": \"query\",\n \"text\": \"query ProtectedWrapperQuery {\\n profile {\\n id\\n email\\n firstName\\n lastName\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n(node as any).hash = '903b234e48f53b4a44dc0b4974ebc521';\nexport default node;\n"],"file":"ProtectedWrapperQuery.graphql.js"}
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.SESSION_LIST_PADDING_VERTICAL = exports.List = exports.Title = void 0;
8
+ exports.default = exports.Title = exports.SESSION_LIST_PADDING_VERTICAL = exports.List = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
@@ -19,8 +19,6 @@ var _reactI18next = require("react-i18next");
19
19
 
20
20
  var _theming = require("@os-design/theming");
21
21
 
22
- var _relayRuntime = require("relay-runtime");
23
-
24
22
  var _SessionListItem = _interopRequireDefault(require("./SessionListItem"));
25
23
 
26
24
  var _SessionList_sessions, _SessionListDestroyAllOtherSessionsMutation, _templateObject, _templateObject2, _templateObject3, _templateObject4;
@@ -45,7 +43,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
43
 
46
44
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
47
45
 
48
- var sessionListFragment = _SessionList_sessions !== void 0 ? _SessionList_sessions : (_SessionList_sessions = require("./__generated__/SessionList_sessions.graphql"), _SessionList_sessions.hash && _SessionList_sessions.hash !== "ffc097fbe501d309e554b7f98ebedd67" && 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);
46
+ var sessionListFragment = _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);
49
47
 
50
48
  var Title = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n font-weight: 500;\n margin: 1em 1em 0.5em;\n"])));
51
49
 
@@ -67,23 +65,25 @@ exports.SESSION_LIST_PADDING_VERTICAL = SESSION_LIST_PADDING_VERTICAL;
67
65
 
68
66
  var SessionList = function SessionList(_ref) {
69
67
  var sessionsKey = _ref.sessionsKey;
70
- var data = (0, _hooks.useFragment)(sessionListFragment, sessionsKey);
68
+
69
+ var _useFragment = (0, _hooks.useFragment)(sessionListFragment, sessionsKey),
70
+ sessions = _useFragment.sessions;
71
71
 
72
72
  var _useTranslation = (0, _reactI18next.useTranslation)('profile'),
73
73
  t = _useTranslation.t;
74
74
 
75
75
  var currentSession = (0, _react.useMemo)(function () {
76
- return data.sessions.edges.find(function (edge) {
77
- return edge.node.current;
76
+ return sessions.find(function (session) {
77
+ return session.current;
78
78
  });
79
- }, [data.sessions.edges]);
79
+ }, [sessions]);
80
80
  var otherSessions = (0, _react.useMemo)(function () {
81
- return data.sessions.edges.filter(function (edge) {
82
- return !edge.node.current;
81
+ return sessions.filter(function (session) {
82
+ return !session.current;
83
83
  }).sort(function (a, b) {
84
- return new Date(b.node.lastSeenAt).getTime() - new Date(a.node.lastSeenAt).getTime();
84
+ return new Date(b.lastSeenAt).getTime() - new Date(a.lastSeenAt).getTime();
85
85
  });
86
- }, [data.sessions.edges]);
86
+ }, [sessions]);
87
87
 
88
88
  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)),
89
89
  _useMutation2 = _slicedToArray(_useMutation, 2),
@@ -96,16 +96,11 @@ var SessionList = function SessionList(_ref) {
96
96
  updater: function updater(store) {
97
97
  var record = store.get('client:root');
98
98
  if (!record) return;
99
-
100
- var conn = _relayRuntime.ConnectionHandler.getConnection(record, 'SessionList_sessions');
101
-
102
- if (!conn) return;
103
- var edges = (conn.getLinkedRecords('edges') || []).filter(function (edge) {
104
- var _edge$getLinkedRecord;
105
-
106
- return ((_edge$getLinkedRecord = edge.getLinkedRecord('node')) === null || _edge$getLinkedRecord === void 0 ? void 0 : _edge$getLinkedRecord.getValue('id')) === (currentSession === null || currentSession === void 0 ? void 0 : currentSession.node.id);
107
- });
108
- conn.setLinkedRecords(edges, 'edges');
99
+ var sessionRecords = record.getLinkedRecords('sessions');
100
+ if (!sessionRecords) return;
101
+ record.setLinkedRecords(sessionRecords.filter(function (item) {
102
+ return item.getDataID() === (currentSession === null || currentSession === void 0 ? void 0 : currentSession.id);
103
+ }), 'sessions');
109
104
  },
110
105
  onError: function onError(error) {
111
106
  _core.message.error(error.message);
@@ -114,9 +109,9 @@ var SessionList = function SessionList(_ref) {
114
109
  _core.message.success(t('profile:sessions.destroyedAllOther'));
115
110
  }
116
111
  });
117
- }, [commitDestroyAllOtherSessions, currentSession === null || currentSession === void 0 ? void 0 : currentSession.node.id, t]);
112
+ }, [commitDestroyAllOtherSessions, currentSession === null || currentSession === void 0 ? void 0 : currentSession.id, t]);
118
113
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, currentSession && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Title, null, t('profile:sessions.current')), /*#__PURE__*/_react.default.createElement(List, null, /*#__PURE__*/_react.default.createElement(_SessionListItem.default, {
119
- sessionKey: currentSession.node,
114
+ sessionKey: currentSession,
120
115
  hideLastSeenAt: true
121
116
  }))), otherSessions.length > 0 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(DestroyAllOtherSessionsButton, {
122
117
  type: "ghost",
@@ -125,10 +120,10 @@ var SessionList = function SessionList(_ref) {
125
120
  wide: "always",
126
121
  loading: loadingDestroyAllOtherSessions,
127
122
  onClick: destroyAllOtherSessions
128
- }, 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 (edge) {
123
+ }, 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) {
129
124
  return /*#__PURE__*/_react.default.createElement(_SessionListItem.default, {
130
- key: edge.node.id,
131
- sessionKey: edge.node
125
+ key: session.id,
126
+ sessionKey: session
132
127
  });
133
128
  })))));
134
129
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/components/session/SessionList.tsx"],"names":["sessionListFragment","Title","styled","div","List","p","theme","listItemColorBorder","DestroyAllOtherSessionsButton","Button","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","sessionsKey","data","t","currentSession","sessions","edges","find","edge","node","current","otherSessions","filter","sort","a","b","Date","lastSeenAt","getTime","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","destroyAllOtherSessions","variables","updater","store","record","get","conn","ConnectionHandler","getConnection","getLinkedRecords","getLinkedRecord","getValue","id","setLinkedRecords","onError","error","message","onCompleted","success","length","map"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport { Button, message } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport { clr } from '@os-design/theming';\nimport { ConnectionHandler } from 'relay-runtime';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\n\nconst sessionListFragment = graphql`\n fragment SessionList_sessions on Query\n @argumentDefinitions(count: { type: \"Int\" }, cursor: { type: \"String\" }) {\n sessions(first: $count, after: $cursor)\n @connection(key: \"SessionList_sessions\", filters: []) {\n edges {\n node {\n id\n current\n lastSeenAt\n ...SessionListItem_session\n }\n }\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 data = useFragment(sessionListFragment, sessionsKey);\n const { t } = useTranslation('profile');\n\n const currentSession = useMemo(\n () => data.sessions.edges.find((edge) => edge.node.current),\n [data.sessions.edges]\n );\n\n const otherSessions = useMemo(\n () =>\n data.sessions.edges\n .filter((edge) => !edge.node.current)\n .sort(\n (a, b) =>\n new Date(b.node.lastSeenAt).getTime() -\n new Date(a.node.lastSeenAt).getTime()\n ),\n [data.sessions.edges]\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 const record = store.get('client:root');\n if (!record) return;\n\n const conn = ConnectionHandler.getConnection(\n record,\n 'SessionList_sessions'\n );\n if (!conn) return;\n\n const edges = (conn.getLinkedRecords('edges') || []).filter(\n (edge) =>\n edge.getLinkedRecord('node')?.getValue('id') ===\n currentSession?.node.id\n );\n\n conn.setLinkedRecords(edges, 'edges');\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyedAllOther'));\n },\n });\n }, [commitDestroyAllOtherSessions, currentSession?.node.id, t]);\n\n return (\n <>\n {currentSession && (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <SessionListItem sessionKey={currentSession.node} 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((edge) => (\n <SessionListItem key={edge.node.id} sessionKey={edge.node} />\n ))}\n </List>\n </OtherSessions>\n </>\n )}\n </>\n );\n};\n\nexport default SessionList;\n"],"file":"SessionList.js"}
1
+ {"version":3,"sources":["../../../../src/lib/components/session/SessionList.tsx"],"names":["sessionListFragment","Title","styled","div","List","p","theme","listItemColorBorder","DestroyAllOtherSessionsButton","Button","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","sessionsKey","sessions","t","currentSession","find","session","current","otherSessions","filter","sort","a","b","Date","lastSeenAt","getTime","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","destroyAllOtherSessions","variables","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","item","getDataID","id","onError","error","message","onCompleted","success","length","map"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport { Button, message } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport { clr } from '@os-design/theming';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\n\nconst sessionListFragment = 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(sessionListFragment, 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(\n (a, b) =>\n new Date(b.lastSeenAt).getTime() - new Date(a.lastSeenAt).getTime()\n ),\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 const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter(\n (item) => item.getDataID() === currentSession?.id\n ),\n 'sessions'\n );\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"],"file":"SessionList.js"}
@@ -5,12 +5,10 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.Icon = exports.IconContainer = exports.Content = exports.Container = void 0;
8
+ exports.default = exports.IconContainer = exports.Icon = exports.Content = exports.Container = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _relayRuntime = require("relay-runtime");
13
-
14
12
  var _hooks = require("react-relay/hooks");
15
13
 
16
14
  var _styled = _interopRequireDefault(require("@emotion/styled"));
@@ -232,12 +230,11 @@ var SessionListItem = function SessionListItem(_ref) {
232
230
  updater: function updater(store) {
233
231
  var record = store.get('client:root');
234
232
  if (!record) return;
235
-
236
- var conn = _relayRuntime.ConnectionHandler.getConnection(record, 'SessionList_sessions');
237
-
238
- if (!conn) return;
239
-
240
- _relayRuntime.ConnectionHandler.deleteNode(conn, session.id);
233
+ var sessionRecords = record.getLinkedRecords('sessions');
234
+ if (!sessionRecords) return;
235
+ record.setLinkedRecords(sessionRecords.filter(function (item) {
236
+ return item.getDataID() !== session.id;
237
+ }), 'sessions');
241
238
  },
242
239
  onError: function onError(error) {
243
240
  _core.message.error(error.message);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"names":["sessionListItemFragment","Container","styled","div","p","theme","listItemColorBorder","Info","sizes","small","ellipsisStyles","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","css","openedStyles","opened","Actions","colorBg","slice","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","name","version","mergeInfo","args","filter","item","join","SessionListItem","sessionKey","hideLastSeenAt","session","t","i18n","touchDevice","handlers","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","lastSeenAt","language","forms","number","iconComponent","iconColor","commitDestroySession","loadingDestroySession","destroySession","variables","input","id","updater","store","record","get","conn","ConnectionHandler","getConnection","deleteNode","onError","error","message","onCompleted","success"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { ConnectionHandler } from 'relay-runtime';\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 const record = store.get('client:root');\n if (!record) return;\n\n const conn = ConnectionHandler.getConnection(\n record,\n 'SessionList_sessions'\n );\n if (!conn) return;\n\n ConnectionHandler.deleteNode(conn, session.id);\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"],"file":"SessionListItem.js"}
1
+ {"version":3,"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"names":["sessionListItemFragment","Container","styled","div","p","theme","listItemColorBorder","Info","sizes","small","ellipsisStyles","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","css","openedStyles","opened","Actions","colorBg","slice","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","name","version","mergeInfo","args","filter","item","join","SessionListItem","sessionKey","hideLastSeenAt","session","t","i18n","touchDevice","handlers","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","lastSeenAt","language","forms","number","iconComponent","iconColor","commitDestroySession","loadingDestroySession","destroySession","variables","input","id","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","getDataID","onError","error","message","onCompleted","success"],"mappings":"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","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 const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter((item) => item.getDataID() !== session.id),\n 'sessions'\n );\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"],"file":"SessionListItem.js"}