@replyke/core 7.0.0-beta.83 → 7.0.0-beta.85

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 (215) hide show
  1. package/dist/cjs/config/axios.js +0 -1
  2. package/dist/cjs/config/axios.js.map +1 -1
  3. package/dist/cjs/config/useAxiosPrivate.js +16 -10
  4. package/dist/cjs/config/useAxiosPrivate.js.map +1 -1
  5. package/dist/cjs/context/replyke-integration-context.js +16 -1
  6. package/dist/cjs/context/replyke-integration-context.js.map +1 -1
  7. package/dist/cjs/context/replyke-store-context.js +17 -6
  8. package/dist/cjs/context/replyke-store-context.js.map +1 -1
  9. package/dist/cjs/hooks/auth/index.d.ts +6 -0
  10. package/dist/cjs/hooks/auth/index.js +13 -1
  11. package/dist/cjs/hooks/auth/index.js.map +1 -1
  12. package/dist/cjs/hooks/auth/useAccountSync.d.ts +2 -0
  13. package/dist/cjs/hooks/auth/useAccountSync.js +165 -0
  14. package/dist/cjs/hooks/auth/useAccountSync.js.map +1 -0
  15. package/dist/cjs/hooks/auth/useAccounts.d.ts +7 -0
  16. package/dist/cjs/hooks/auth/useAccounts.js +23 -0
  17. package/dist/cjs/hooks/auth/useAccounts.js.map +1 -0
  18. package/dist/cjs/hooks/auth/useAddAccount.d.ts +5 -0
  19. package/dist/cjs/hooks/auth/useAddAccount.js +27 -0
  20. package/dist/cjs/hooks/auth/useAddAccount.js.map +1 -0
  21. package/dist/cjs/hooks/auth/useAuth.d.ts +1 -1
  22. package/dist/cjs/hooks/auth/useRemoveAccount.d.ts +6 -0
  23. package/dist/cjs/hooks/auth/useRemoveAccount.js +128 -0
  24. package/dist/cjs/hooks/auth/useRemoveAccount.js.map +1 -0
  25. package/dist/cjs/hooks/auth/useSignOutAll.d.ts +4 -0
  26. package/dist/cjs/hooks/auth/useSignOutAll.js +71 -0
  27. package/dist/cjs/hooks/auth/useSignOutAll.js.map +1 -0
  28. package/dist/cjs/hooks/auth/useSwitchAccount.d.ts +6 -0
  29. package/dist/cjs/hooks/auth/useSwitchAccount.js +103 -0
  30. package/dist/cjs/hooks/auth/useSwitchAccount.js.map +1 -0
  31. package/dist/cjs/hooks/collections/useCollections.js +0 -1
  32. package/dist/cjs/hooks/collections/useCollections.js.map +1 -1
  33. package/dist/cjs/hooks/collections/useIsEntitySaved.js +0 -1
  34. package/dist/cjs/hooks/collections/useIsEntitySaved.js.map +1 -1
  35. package/dist/cjs/hooks/entities/useCreateEntity.js +1 -2
  36. package/dist/cjs/hooks/entities/useCreateEntity.js.map +1 -1
  37. package/dist/cjs/hooks/entities/useDeleteEntity.js +1 -3
  38. package/dist/cjs/hooks/entities/useDeleteEntity.js.map +1 -1
  39. package/dist/cjs/hooks/entities/useFetchDrafts.d.ts +2 -0
  40. package/dist/cjs/hooks/entities/useFetchDrafts.js +4 -0
  41. package/dist/cjs/hooks/entities/useFetchDrafts.js.map +1 -1
  42. package/dist/cjs/hooks/entities/usePublishDraft.js +1 -1
  43. package/dist/cjs/hooks/entities/usePublishDraft.js.map +1 -1
  44. package/dist/cjs/hooks/entities/useUpdateEntity.js +1 -1
  45. package/dist/cjs/hooks/entities/useUpdateEntity.js.map +1 -1
  46. package/dist/cjs/hooks/relationships/connections/useAcceptConnection.js +1 -1
  47. package/dist/cjs/hooks/relationships/connections/useAcceptConnection.js.map +1 -1
  48. package/dist/cjs/hooks/relationships/connections/useDeclineConnection.js +1 -1
  49. package/dist/cjs/hooks/relationships/connections/useDeclineConnection.js.map +1 -1
  50. package/dist/cjs/hooks/relationships/connections/useFetchConnectionStatus.js +1 -1
  51. package/dist/cjs/hooks/relationships/connections/useFetchConnectionStatus.js.map +1 -1
  52. package/dist/cjs/hooks/relationships/connections/useFetchConnections.js +0 -1
  53. package/dist/cjs/hooks/relationships/connections/useFetchConnections.js.map +1 -1
  54. package/dist/cjs/hooks/relationships/connections/useFetchConnectionsCount.js +1 -1
  55. package/dist/cjs/hooks/relationships/connections/useFetchConnectionsCount.js.map +1 -1
  56. package/dist/cjs/hooks/relationships/connections/useFetchReceivedPendingConnections.js +0 -1
  57. package/dist/cjs/hooks/relationships/connections/useFetchReceivedPendingConnections.js.map +1 -1
  58. package/dist/cjs/hooks/relationships/connections/useFetchSentPendingConnections.js +0 -1
  59. package/dist/cjs/hooks/relationships/connections/useFetchSentPendingConnections.js.map +1 -1
  60. package/dist/cjs/hooks/relationships/connections/useRemoveConnection.js +1 -1
  61. package/dist/cjs/hooks/relationships/connections/useRemoveConnection.js.map +1 -1
  62. package/dist/cjs/hooks/relationships/connections/useRemoveConnectionByUserId.js +1 -1
  63. package/dist/cjs/hooks/relationships/connections/useRemoveConnectionByUserId.js.map +1 -1
  64. package/dist/cjs/hooks/relationships/connections/useRequestConnection.js +1 -1
  65. package/dist/cjs/hooks/relationships/connections/useRequestConnection.js.map +1 -1
  66. package/dist/cjs/hooks/relationships/follows/useFetchFollowStatus.js +1 -3
  67. package/dist/cjs/hooks/relationships/follows/useFetchFollowStatus.js.map +1 -1
  68. package/dist/cjs/hooks/relationships/follows/useFetchFollowers.js +0 -1
  69. package/dist/cjs/hooks/relationships/follows/useFetchFollowers.js.map +1 -1
  70. package/dist/cjs/hooks/relationships/follows/useFetchFollowersCount.js +1 -1
  71. package/dist/cjs/hooks/relationships/follows/useFetchFollowersCount.js.map +1 -1
  72. package/dist/cjs/hooks/relationships/follows/useFetchFollowing.js +0 -1
  73. package/dist/cjs/hooks/relationships/follows/useFetchFollowing.js.map +1 -1
  74. package/dist/cjs/hooks/relationships/follows/useFetchFollowingCount.js +1 -1
  75. package/dist/cjs/hooks/relationships/follows/useFetchFollowingCount.js.map +1 -1
  76. package/dist/cjs/hooks/relationships/follows/useFollowUser.js +1 -1
  77. package/dist/cjs/hooks/relationships/follows/useFollowUser.js.map +1 -1
  78. package/dist/cjs/hooks/relationships/follows/useUnfollowByFollowId.js +1 -3
  79. package/dist/cjs/hooks/relationships/follows/useUnfollowByFollowId.js.map +1 -1
  80. package/dist/cjs/hooks/relationships/follows/useUnfollowUserByUserId.js +1 -3
  81. package/dist/cjs/hooks/relationships/follows/useUnfollowUserByUserId.js.map +1 -1
  82. package/dist/cjs/hooks/reports/useCreateReport.js +1 -1
  83. package/dist/cjs/hooks/reports/useCreateReport.js.map +1 -1
  84. package/dist/cjs/hooks/storage/useUploadFile.js +0 -1
  85. package/dist/cjs/hooks/storage/useUploadFile.js.map +1 -1
  86. package/dist/cjs/hooks/storage/useUploadImage.js +0 -1
  87. package/dist/cjs/hooks/storage/useUploadImage.js.map +1 -1
  88. package/dist/cjs/index.d.ts +3 -0
  89. package/dist/cjs/index.js +13 -3
  90. package/dist/cjs/index.js.map +1 -1
  91. package/dist/cjs/interfaces/IAccountStorage.d.ts +6 -0
  92. package/dist/cjs/interfaces/IAccountStorage.js +3 -0
  93. package/dist/cjs/interfaces/IAccountStorage.js.map +1 -0
  94. package/dist/cjs/store/api/baseApi.js +0 -1
  95. package/dist/cjs/store/api/baseApi.js.map +1 -1
  96. package/dist/cjs/store/hooks.d.ts +1 -0
  97. package/dist/cjs/store/index.d.ts +2 -0
  98. package/dist/cjs/store/replykeReducers.d.ts +2 -0
  99. package/dist/cjs/store/replykeReducers.js +2 -0
  100. package/dist/cjs/store/replykeReducers.js.map +1 -1
  101. package/dist/cjs/store/rootReducer.d.ts +3 -0
  102. package/dist/cjs/store/slices/accountsSlice.d.ts +41 -0
  103. package/dist/cjs/store/slices/accountsSlice.js +71 -0
  104. package/dist/cjs/store/slices/accountsSlice.js.map +1 -0
  105. package/dist/cjs/store/slices/authThunks.d.ts +3 -0
  106. package/dist/cjs/store/slices/authThunks.js +102 -28
  107. package/dist/cjs/store/slices/authThunks.js.map +1 -1
  108. package/dist/esm/config/axios.js +0 -1
  109. package/dist/esm/config/axios.js.map +1 -1
  110. package/dist/esm/config/useAxiosPrivate.js +16 -10
  111. package/dist/esm/config/useAxiosPrivate.js.map +1 -1
  112. package/dist/esm/context/replyke-integration-context.js +18 -3
  113. package/dist/esm/context/replyke-integration-context.js.map +1 -1
  114. package/dist/esm/context/replyke-store-context.js +19 -8
  115. package/dist/esm/context/replyke-store-context.js.map +1 -1
  116. package/dist/esm/hooks/auth/index.d.ts +6 -0
  117. package/dist/esm/hooks/auth/index.js +6 -0
  118. package/dist/esm/hooks/auth/index.js.map +1 -1
  119. package/dist/esm/hooks/auth/useAccountSync.d.ts +2 -0
  120. package/dist/esm/hooks/auth/useAccountSync.js +162 -0
  121. package/dist/esm/hooks/auth/useAccountSync.js.map +1 -0
  122. package/dist/esm/hooks/auth/useAccounts.d.ts +7 -0
  123. package/dist/esm/hooks/auth/useAccounts.js +20 -0
  124. package/dist/esm/hooks/auth/useAccounts.js.map +1 -0
  125. package/dist/esm/hooks/auth/useAddAccount.d.ts +5 -0
  126. package/dist/esm/hooks/auth/useAddAccount.js +24 -0
  127. package/dist/esm/hooks/auth/useAddAccount.js.map +1 -0
  128. package/dist/esm/hooks/auth/useAuth.d.ts +1 -1
  129. package/dist/esm/hooks/auth/useRemoveAccount.d.ts +6 -0
  130. package/dist/esm/hooks/auth/useRemoveAccount.js +122 -0
  131. package/dist/esm/hooks/auth/useRemoveAccount.js.map +1 -0
  132. package/dist/esm/hooks/auth/useSignOutAll.d.ts +4 -0
  133. package/dist/esm/hooks/auth/useSignOutAll.js +65 -0
  134. package/dist/esm/hooks/auth/useSignOutAll.js.map +1 -0
  135. package/dist/esm/hooks/auth/useSwitchAccount.d.ts +6 -0
  136. package/dist/esm/hooks/auth/useSwitchAccount.js +97 -0
  137. package/dist/esm/hooks/auth/useSwitchAccount.js.map +1 -0
  138. package/dist/esm/hooks/collections/useCollections.js +0 -1
  139. package/dist/esm/hooks/collections/useCollections.js.map +1 -1
  140. package/dist/esm/hooks/collections/useIsEntitySaved.js +0 -1
  141. package/dist/esm/hooks/collections/useIsEntitySaved.js.map +1 -1
  142. package/dist/esm/hooks/entities/useCreateEntity.js +1 -2
  143. package/dist/esm/hooks/entities/useCreateEntity.js.map +1 -1
  144. package/dist/esm/hooks/entities/useDeleteEntity.js +1 -3
  145. package/dist/esm/hooks/entities/useDeleteEntity.js.map +1 -1
  146. package/dist/esm/hooks/entities/useFetchDrafts.d.ts +2 -0
  147. package/dist/esm/hooks/entities/useFetchDrafts.js +4 -0
  148. package/dist/esm/hooks/entities/useFetchDrafts.js.map +1 -1
  149. package/dist/esm/hooks/entities/usePublishDraft.js +1 -1
  150. package/dist/esm/hooks/entities/usePublishDraft.js.map +1 -1
  151. package/dist/esm/hooks/entities/useUpdateEntity.js +1 -1
  152. package/dist/esm/hooks/entities/useUpdateEntity.js.map +1 -1
  153. package/dist/esm/hooks/relationships/connections/useAcceptConnection.js +1 -1
  154. package/dist/esm/hooks/relationships/connections/useAcceptConnection.js.map +1 -1
  155. package/dist/esm/hooks/relationships/connections/useDeclineConnection.js +1 -1
  156. package/dist/esm/hooks/relationships/connections/useDeclineConnection.js.map +1 -1
  157. package/dist/esm/hooks/relationships/connections/useFetchConnectionStatus.js +1 -1
  158. package/dist/esm/hooks/relationships/connections/useFetchConnectionStatus.js.map +1 -1
  159. package/dist/esm/hooks/relationships/connections/useFetchConnections.js +0 -1
  160. package/dist/esm/hooks/relationships/connections/useFetchConnections.js.map +1 -1
  161. package/dist/esm/hooks/relationships/connections/useFetchConnectionsCount.js +1 -1
  162. package/dist/esm/hooks/relationships/connections/useFetchConnectionsCount.js.map +1 -1
  163. package/dist/esm/hooks/relationships/connections/useFetchReceivedPendingConnections.js +0 -1
  164. package/dist/esm/hooks/relationships/connections/useFetchReceivedPendingConnections.js.map +1 -1
  165. package/dist/esm/hooks/relationships/connections/useFetchSentPendingConnections.js +0 -1
  166. package/dist/esm/hooks/relationships/connections/useFetchSentPendingConnections.js.map +1 -1
  167. package/dist/esm/hooks/relationships/connections/useRemoveConnection.js +1 -1
  168. package/dist/esm/hooks/relationships/connections/useRemoveConnection.js.map +1 -1
  169. package/dist/esm/hooks/relationships/connections/useRemoveConnectionByUserId.js +1 -1
  170. package/dist/esm/hooks/relationships/connections/useRemoveConnectionByUserId.js.map +1 -1
  171. package/dist/esm/hooks/relationships/connections/useRequestConnection.js +1 -1
  172. package/dist/esm/hooks/relationships/connections/useRequestConnection.js.map +1 -1
  173. package/dist/esm/hooks/relationships/follows/useFetchFollowStatus.js +1 -3
  174. package/dist/esm/hooks/relationships/follows/useFetchFollowStatus.js.map +1 -1
  175. package/dist/esm/hooks/relationships/follows/useFetchFollowers.js +0 -1
  176. package/dist/esm/hooks/relationships/follows/useFetchFollowers.js.map +1 -1
  177. package/dist/esm/hooks/relationships/follows/useFetchFollowersCount.js +1 -1
  178. package/dist/esm/hooks/relationships/follows/useFetchFollowersCount.js.map +1 -1
  179. package/dist/esm/hooks/relationships/follows/useFetchFollowing.js +0 -1
  180. package/dist/esm/hooks/relationships/follows/useFetchFollowing.js.map +1 -1
  181. package/dist/esm/hooks/relationships/follows/useFetchFollowingCount.js +1 -1
  182. package/dist/esm/hooks/relationships/follows/useFetchFollowingCount.js.map +1 -1
  183. package/dist/esm/hooks/relationships/follows/useFollowUser.js +1 -1
  184. package/dist/esm/hooks/relationships/follows/useFollowUser.js.map +1 -1
  185. package/dist/esm/hooks/relationships/follows/useUnfollowByFollowId.js +1 -3
  186. package/dist/esm/hooks/relationships/follows/useUnfollowByFollowId.js.map +1 -1
  187. package/dist/esm/hooks/relationships/follows/useUnfollowUserByUserId.js +1 -3
  188. package/dist/esm/hooks/relationships/follows/useUnfollowUserByUserId.js.map +1 -1
  189. package/dist/esm/hooks/reports/useCreateReport.js +1 -1
  190. package/dist/esm/hooks/reports/useCreateReport.js.map +1 -1
  191. package/dist/esm/hooks/storage/useUploadFile.js +0 -1
  192. package/dist/esm/hooks/storage/useUploadFile.js.map +1 -1
  193. package/dist/esm/hooks/storage/useUploadImage.js +0 -1
  194. package/dist/esm/hooks/storage/useUploadImage.js.map +1 -1
  195. package/dist/esm/index.d.ts +3 -0
  196. package/dist/esm/index.js +3 -0
  197. package/dist/esm/index.js.map +1 -1
  198. package/dist/esm/interfaces/IAccountStorage.d.ts +6 -0
  199. package/dist/esm/interfaces/IAccountStorage.js +2 -0
  200. package/dist/esm/interfaces/IAccountStorage.js.map +1 -0
  201. package/dist/esm/store/api/baseApi.js +0 -1
  202. package/dist/esm/store/api/baseApi.js.map +1 -1
  203. package/dist/esm/store/hooks.d.ts +1 -0
  204. package/dist/esm/store/index.d.ts +2 -0
  205. package/dist/esm/store/replykeReducers.d.ts +2 -0
  206. package/dist/esm/store/replykeReducers.js +2 -0
  207. package/dist/esm/store/replykeReducers.js.map +1 -1
  208. package/dist/esm/store/rootReducer.d.ts +3 -0
  209. package/dist/esm/store/slices/accountsSlice.d.ts +41 -0
  210. package/dist/esm/store/slices/accountsSlice.js +64 -0
  211. package/dist/esm/store/slices/accountsSlice.js.map +1 -0
  212. package/dist/esm/store/slices/authThunks.d.ts +3 -0
  213. package/dist/esm/store/slices/authThunks.js +101 -27
  214. package/dist/esm/store/slices/authThunks.js.map +1 -1
  215. package/package.json +1 -1
@@ -12,6 +12,5 @@ exports.default = axios_1.default.create({
12
12
  exports.axiosPrivate = axios_1.default.create({
13
13
  baseURL: BASE_URL,
14
14
  headers: { "Content-Type": "application/json" },
15
- withCredentials: true,
16
15
  });
17
16
  //# sourceMappingURL=axios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../src/config/axios.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,IAAM,QAAQ,GAAG,4BAA4B,CAAC;AAE9C,kBAAe,eAAK,CAAC,MAAM,CAAC;IAC1B,OAAO,EAAE,QAAQ;CAClB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,eAAK,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC/C,eAAe,EAAE,IAAI;CACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"axios.js","sourceRoot":"","sources":["../../../src/config/axios.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,IAAM,QAAQ,GAAG,4BAA4B,CAAC;AAE9C,kBAAe,eAAK,CAAC,MAAM,CAAC;IAC1B,OAAO,EAAE,QAAQ;CAClB,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,eAAK,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;CAChD,CAAC,CAAC"}
@@ -39,32 +39,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var react_1 = require("react");
40
40
  var axios_1 = require("./axios");
41
41
  var auth_1 = require("../hooks/auth");
42
+ // Module-level mutex: prevents concurrent token rotations from racing
43
+ var refreshPromise = null;
42
44
  var useAxiosPrivate = function () {
43
45
  var _a = (0, auth_1.useAuth)(), accessToken = _a.accessToken, requestNewAccessToken = _a.requestNewAccessToken;
44
46
  (0, react_1.useEffect)(function () {
45
47
  var requestIntercept = axios_1.axiosPrivate.interceptors.request.use(function (config) {
46
- // If we have no value for access token return the config as is
47
- // This is a new addition so maybe let's avoid it for not until everything works fine.
48
- // if (!accessToken) return config;
49
- // If we already have Auth headers set then just return the config
50
48
  if (config.headers["Authorization"])
51
49
  return config;
52
- // Otherwise we set the authorization headers
53
50
  config.headers["Authorization"] = "Bearer ".concat(accessToken);
54
51
  return config;
55
52
  }, function (error) { return Promise.reject(error); });
56
53
  var responseIntercept = axios_1.axiosPrivate.interceptors.response.use(function (response) { return response; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
57
54
  var prevRequest, newAccessToken;
58
- var _a;
59
- return __generator(this, function (_b) {
60
- switch (_b.label) {
55
+ var _a, _b, _c;
56
+ return __generator(this, function (_d) {
57
+ switch (_d.label) {
61
58
  case 0:
62
59
  prevRequest = error === null || error === void 0 ? void 0 : error.config;
63
60
  if (!(((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) === 403 && !(prevRequest === null || prevRequest === void 0 ? void 0 : prevRequest.sent))) return [3 /*break*/, 2];
64
61
  prevRequest.sent = true;
65
- return [4 /*yield*/, (requestNewAccessToken === null || requestNewAccessToken === void 0 ? void 0 : requestNewAccessToken())];
62
+ // Use mutex to prevent concurrent rotation races
63
+ if (!refreshPromise) {
64
+ refreshPromise = (_c = (_b = requestNewAccessToken === null || requestNewAccessToken === void 0 ? void 0 : requestNewAccessToken()) === null || _b === void 0 ? void 0 : _b.finally(function () {
65
+ refreshPromise = null;
66
+ })) !== null && _c !== void 0 ? _c : Promise.resolve(undefined);
67
+ }
68
+ return [4 /*yield*/, refreshPromise];
66
69
  case 1:
67
- newAccessToken = _b.sent();
70
+ newAccessToken = _d.sent();
71
+ if (!newAccessToken) {
72
+ return [2 /*return*/, Promise.reject(error)];
73
+ }
68
74
  prevRequest.headers["Authorization"] = "Bearer ".concat(newAccessToken);
69
75
  return [2 /*return*/, (0, axios_1.axiosPrivate)(prevRequest)];
70
76
  case 2: return [2 /*return*/, Promise.reject(error)];
@@ -1 +1 @@
1
- {"version":3,"file":"useAxiosPrivate.js","sourceRoot":"","sources":["../../../src/config/useAxiosPrivate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAkC;AAClC,iCAAuC;AACvC,sCAAwC;AAExC,IAAM,eAAe,GAAG;IAChB,IAAA,KAAyC,IAAA,cAAO,GAAE,EAAhD,WAAW,iBAAA,EAAE,qBAAqB,2BAAc,CAAC;IAEzD,IAAA,iBAAS,EAAC;QACR,IAAM,gBAAgB,GAAG,oBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC5D,UAAC,MAAM;YACL,+DAA+D;YAC/D,sFAAsF;YACtF,mCAAmC;YAEnC,kEAAkE;YAClE,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAAE,OAAO,MAAM,CAAC;YAEnD,6CAA6C;YAC7C,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,iBAAU,WAAW,CAAE,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAArB,CAAqB,CACjC,CAAC;QAEF,IAAM,iBAAiB,GAAG,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAC9D,UAAC,QAAQ,IAAK,OAAA,QAAQ,EAAR,CAAQ,EACtB,UAAO,KAAK;;;;;;wBACJ,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC;6BAC9B,CAAA,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAA,CAAA,EAArD,wBAAqD;wBACvD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;wBACD,qBAAM,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,EAAI,CAAA,EAAA;;wBAAhD,cAAc,GAAG,SAA+B;wBACtD,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,iBAAU,cAAc,CAAE,CAAC;wBAClE,sBAAO,IAAA,oBAAY,EAAC,WAAW,CAAC,EAAC;4BAEnC,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;aAC9B,CACF,CAAC;QAEF,OAAO;YACL,oBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC1D,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEzC,OAAO,oBAAY,CAAC;AACtB,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"useAxiosPrivate.js","sourceRoot":"","sources":["../../../src/config/useAxiosPrivate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAkC;AAClC,iCAAuC;AACvC,sCAAwC;AAExC,sEAAsE;AACtE,IAAI,cAAc,GAAuC,IAAI,CAAC;AAE9D,IAAM,eAAe,GAAG;IAChB,IAAA,KAAyC,IAAA,cAAO,GAAE,EAAhD,WAAW,iBAAA,EAAE,qBAAqB,2BAAc,CAAC;IAEzD,IAAA,iBAAS,EAAC;QACR,IAAM,gBAAgB,GAAG,oBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC5D,UAAC,MAAM;YACL,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAAE,OAAO,MAAM,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,iBAAU,WAAW,CAAE,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAArB,CAAqB,CACjC,CAAC;QAEF,IAAM,iBAAiB,GAAG,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAC9D,UAAC,QAAQ,IAAK,OAAA,QAAQ,EAAR,CAAQ,EACtB,UAAO,KAAK;;;;;;wBACJ,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC;6BAC9B,CAAA,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAA,CAAA,EAArD,wBAAqD;wBACvD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;wBAExB,iDAAiD;wBACjD,IAAI,CAAC,cAAc,EAAE,CAAC;4BACpB,cAAc,GAAG,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,EAAI,0CAAE,OAAO,CAAC;gCAClD,cAAc,GAAG,IAAI,CAAC;4BACxB,CAAC,CAAC,mCAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACnC,CAAC;wBAEsB,qBAAM,cAAc,EAAA;;wBAArC,cAAc,GAAG,SAAoB;wBAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;4BACpB,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;wBAC/B,CAAC;wBAED,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,iBAAU,cAAc,CAAE,CAAC;wBAClE,sBAAO,IAAA,oBAAY,EAAC,WAAW,CAAC,EAAC;4BAEnC,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;aAC9B,CACF,CAAC;QAEF,OAAO;YACL,oBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC1D,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEzC,OAAO,oBAAY,CAAC;AACtB,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -8,6 +8,7 @@ var jsx_runtime_1 = require("react/jsx-runtime");
8
8
  var react_1 = require("react");
9
9
  var hooks_1 = require("../store/hooks");
10
10
  var authThunks_1 = require("../store/slices/authThunks");
11
+ var accountsSlice_1 = require("../store/slices/accountsSlice");
11
12
  var replyke_context_1 = require("./replyke-context");
12
13
  var useProjectData_1 = __importDefault(require("../hooks/projects/useProjectData"));
13
14
  /**
@@ -17,9 +18,23 @@ var useProjectData_1 = __importDefault(require("../hooks/projects/useProjectData
17
18
  var AuthInitializer = function (_a) {
18
19
  var children = _a.children, projectId = _a.projectId, signedToken = _a.signedToken;
19
20
  var dispatch = (0, hooks_1.useReplykeDispatch)();
21
+ var accountsReady = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccountsReady);
22
+ var accountManagerRegistered = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccountManagerRegistered);
23
+ var _b = (0, react_1.useState)(false), hasWaitedForManager = _b[0], setHasWaitedForManager = _b[1];
24
+ // Give AccountManager one microtask to register itself
20
25
  (0, react_1.useEffect)(function () {
26
+ Promise.resolve().then(function () { return setHasWaitedForManager(true); });
27
+ }, []);
28
+ (0, react_1.useEffect)(function () {
29
+ // Still waiting for the microtask check
30
+ if (!hasWaitedForManager)
31
+ return;
32
+ // If an AccountManager registered, wait until it signals ready
33
+ if (accountManagerRegistered && !accountsReady)
34
+ return;
35
+ // Either: no AccountManager (core-only user) OR AccountManager is ready
21
36
  dispatch((0, authThunks_1.initializeAuthThunk)({ projectId: projectId, signedToken: signedToken }));
22
- }, [dispatch, projectId, signedToken]);
37
+ }, [dispatch, projectId, signedToken, hasWaitedForManager, accountManagerRegistered, accountsReady]);
23
38
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
24
39
  };
25
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"replyke-integration-context.js","sourceRoot":"","sources":["../../../src/context/replyke-integration-context.tsx"],"names":[],"mappings":";;;;;;;AAAA,+BAAyC;AAEzC,wCAAoD;AACpD,yDAAiE;AACjE,qDAAmD;AACnD,oFAA8D;AAQ9D;;;GAGG;AACH,IAAM,eAAe,GAIhB,UAAC,EAAoC;QAAlC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,WAAW,iBAAA;IACtC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,GAAE,CAAC;IAEtC,IAAA,iBAAS,EAAC;QACR,QAAQ,CAAC,IAAA,gCAAmB,EAAC,EAAE,SAAS,WAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvC,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACI,IAAM,0BAA0B,GAA8C,UAAC,EAIrF;QAHC,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,WAAW,iBAAA;IAEX,uDAAuD;IACvD,IAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;IAE3C,mDAAmD;IACnD,OAAO,CACL,uBAAC,gCAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAClC,uBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,YAC5D,QAAQ,GACO,GACM,CAC3B,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,0BAA0B,8BAgBrC;AAEF,kBAAe,kCAA0B,CAAC"}
1
+ {"version":3,"file":"replyke-integration-context.js","sourceRoot":"","sources":["../../../src/context/replyke-integration-context.tsx"],"names":[],"mappings":";;;;;;;AAAA,+BAAmD;AAEnD,wCAAwE;AACxE,yDAAiE;AACjE,+DAGuC;AACvC,qDAAmD;AACnD,oFAA8D;AAQ9D;;;GAGG;AACH,IAAM,eAAe,GAIhB,UAAC,EAAoC;QAAlC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,WAAW,iBAAA;IACtC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,GAAE,CAAC;IACtC,IAAM,aAAa,GAAG,IAAA,0BAAkB,EAAC,mCAAmB,CAAC,CAAC;IAC9D,IAAM,wBAAwB,GAAG,IAAA,0BAAkB,EAAC,8CAA8B,CAAC,CAAC;IAC9E,IAAA,KAAgD,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAA9D,mBAAmB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IAEtE,uDAAuD;IACvD,IAAA,iBAAS,EAAC;QACR,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,sBAAsB,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC;QACR,wCAAwC;QACxC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QAEjC,+DAA+D;QAC/D,IAAI,wBAAwB,IAAI,CAAC,aAAa;YAAE,OAAO;QAEvD,wEAAwE;QACxE,QAAQ,CAAC,IAAA,gCAAmB,EAAC,EAAE,SAAS,WAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC;IAErG,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACI,IAAM,0BAA0B,GAA8C,UAAC,EAIrF;QAHC,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,WAAW,iBAAA;IAEX,uDAAuD;IACvD,IAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;IAE3C,mDAAmD;IACnD,OAAO,CACL,uBAAC,gCAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAClC,uBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,YAC5D,QAAQ,GACO,GACM,CAC3B,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,0BAA0B,8BAgBrC;AAEF,kBAAe,kCAA0B,CAAC"}
@@ -7,6 +7,7 @@ var react_redux_1 = require("react-redux");
7
7
  var store_1 = require("../store");
8
8
  var hooks_1 = require("../store/hooks");
9
9
  var authThunks_1 = require("../store/slices/authThunks");
10
+ var accountsSlice_1 = require("../store/slices/accountsSlice");
10
11
  /**
11
12
  * Component that initializes auth state in Redux
12
13
  * Must be inside the Redux Provider to dispatch actions
@@ -14,13 +15,23 @@ var authThunks_1 = require("../store/slices/authThunks");
14
15
  var AuthInitializer = function (_a) {
15
16
  var children = _a.children, projectId = _a.projectId, signedToken = _a.signedToken;
16
17
  var dispatch = (0, hooks_1.useReplykeDispatch)();
18
+ var accountsReady = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccountsReady);
19
+ var accountManagerRegistered = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccountManagerRegistered);
20
+ var _b = (0, react_1.useState)(false), hasWaitedForManager = _b[0], setHasWaitedForManager = _b[1];
21
+ // Give AccountManager one microtask to register itself
17
22
  (0, react_1.useEffect)(function () {
18
- // Initialize auth with project and signed token
19
- dispatch((0, authThunks_1.initializeAuthThunk)({
20
- projectId: projectId,
21
- signedToken: signedToken
22
- }));
23
- }, [dispatch, projectId, signedToken]);
23
+ Promise.resolve().then(function () { return setHasWaitedForManager(true); });
24
+ }, []);
25
+ (0, react_1.useEffect)(function () {
26
+ // Still waiting for the microtask check
27
+ if (!hasWaitedForManager)
28
+ return;
29
+ // If an AccountManager registered, wait until it signals ready
30
+ if (accountManagerRegistered && !accountsReady)
31
+ return;
32
+ // Either: no AccountManager (core-only user) OR AccountManager is ready
33
+ dispatch((0, authThunks_1.initializeAuthThunk)({ projectId: projectId, signedToken: signedToken }));
34
+ }, [dispatch, projectId, signedToken, hasWaitedForManager, accountManagerRegistered, accountsReady]);
24
35
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
25
36
  };
26
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"replyke-store-context.js","sourceRoot":"","sources":["../../../src/context/replyke-store-context.tsx"],"names":[],"mappings":";;;;AAAA,+BAAyC;AACzC,2CAAuC;AACvC,kCAAwC;AAExC,wCAAoD;AACpD,yDAAiE;AAQjE;;;GAGG;AACH,IAAM,eAAe,GAIhB,UAAC,EAAoC;QAAlC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,WAAW,iBAAA;IACtC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,GAAE,CAAC;IAEtC,IAAA,iBAAS,EAAC;QACR,gDAAgD;QAChD,QAAQ,CAAC,IAAA,gCAAmB,EAAC;YAC3B,SAAS,WAAA;YACT,WAAW,aAAA;SACZ,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvC,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC;AAEF;;;GAGG;AACI,IAAM,oBAAoB,GAAwC,UAAC,EAIzE;QAHC,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,WAAW,iBAAA;IAEX,OAAO,CACL,uBAAC,sBAAQ,IAAC,KAAK,EAAE,oBAAY,YAC3B,uBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,YAC5D,QAAQ,GACO,GACT,CACZ,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEF,gCAAgC;AAChC,yCAAyC;AAEzC,kBAAe,4BAAoB,CAAC"}
1
+ {"version":3,"file":"replyke-store-context.js","sourceRoot":"","sources":["../../../src/context/replyke-store-context.tsx"],"names":[],"mappings":";;;;AAAA,+BAAmD;AACnD,2CAAuC;AACvC,kCAAwC;AAExC,wCAAwE;AACxE,yDAAiE;AACjE,+DAGuC;AAQvC;;;GAGG;AACH,IAAM,eAAe,GAIhB,UAAC,EAAoC;QAAlC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,WAAW,iBAAA;IACtC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,GAAE,CAAC;IACtC,IAAM,aAAa,GAAG,IAAA,0BAAkB,EAAC,mCAAmB,CAAC,CAAC;IAC9D,IAAM,wBAAwB,GAAG,IAAA,0BAAkB,EAAC,8CAA8B,CAAC,CAAC;IAC9E,IAAA,KAAgD,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAA9D,mBAAmB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IAEtE,uDAAuD;IACvD,IAAA,iBAAS,EAAC;QACR,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,sBAAsB,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC;QACR,wCAAwC;QACxC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QAEjC,+DAA+D;QAC/D,IAAI,wBAAwB,IAAI,CAAC,aAAa;YAAE,OAAO;QAEvD,wEAAwE;QACxE,QAAQ,CAAC,IAAA,gCAAmB,EAAC,EAAE,SAAS,WAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC;IAErG,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC;AAEF;;;GAGG;AACI,IAAM,oBAAoB,GAAwC,UAAC,EAIzE;QAHC,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,WAAW,iBAAA;IAEX,OAAO,CACL,uBAAC,sBAAQ,IAAC,KAAK,EAAE,oBAAY,YAC3B,uBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,YAC5D,QAAQ,GACO,GACT,CACZ,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEF,gCAAgC;AAChC,yCAAyC;AAEzC,kBAAe,4BAAoB,CAAC"}
@@ -1 +1,7 @@
1
1
  export { default as useAuth, type UseAuthValues, type SignUpWithEmailAndPasswordProps, type SignInWithEmailAndPasswordProps, type ChangePasswordProps } from './useAuth';
2
+ export { default as useAccountSync } from './useAccountSync';
3
+ export { default as useAccounts, type UseAccountsReturn } from './useAccounts';
4
+ export { default as useSwitchAccount, type UseSwitchAccountReturn } from './useSwitchAccount';
5
+ export { default as useAddAccount, type UseAddAccountReturn } from './useAddAccount';
6
+ export { default as useRemoveAccount, type UseRemoveAccountReturn } from './useRemoveAccount';
7
+ export { default as useSignOutAll, type UseSignOutAllReturn } from './useSignOutAll';
@@ -3,7 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useAuth = void 0;
6
+ exports.useSignOutAll = exports.useRemoveAccount = exports.useAddAccount = exports.useSwitchAccount = exports.useAccounts = exports.useAccountSync = exports.useAuth = void 0;
7
7
  var useAuth_1 = require("./useAuth");
8
8
  Object.defineProperty(exports, "useAuth", { enumerable: true, get: function () { return __importDefault(useAuth_1).default; } });
9
+ var useAccountSync_1 = require("./useAccountSync");
10
+ Object.defineProperty(exports, "useAccountSync", { enumerable: true, get: function () { return __importDefault(useAccountSync_1).default; } });
11
+ var useAccounts_1 = require("./useAccounts");
12
+ Object.defineProperty(exports, "useAccounts", { enumerable: true, get: function () { return __importDefault(useAccounts_1).default; } });
13
+ var useSwitchAccount_1 = require("./useSwitchAccount");
14
+ Object.defineProperty(exports, "useSwitchAccount", { enumerable: true, get: function () { return __importDefault(useSwitchAccount_1).default; } });
15
+ var useAddAccount_1 = require("./useAddAccount");
16
+ Object.defineProperty(exports, "useAddAccount", { enumerable: true, get: function () { return __importDefault(useAddAccount_1).default; } });
17
+ var useRemoveAccount_1 = require("./useRemoveAccount");
18
+ Object.defineProperty(exports, "useRemoveAccount", { enumerable: true, get: function () { return __importDefault(useRemoveAccount_1).default; } });
19
+ var useSignOutAll_1 = require("./useSignOutAll");
20
+ Object.defineProperty(exports, "useSignOutAll", { enumerable: true, get: function () { return __importDefault(useSignOutAll_1).default; } });
9
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/auth/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAyK;AAAhK,mHAAA,OAAO,OAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/auth/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAyK;AAAhK,mHAAA,OAAO,OAAW;AAC3B,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAClC,6CAA+E;AAAtE,2HAAA,OAAO,OAAe;AAC/B,uDAA8F;AAArF,qIAAA,OAAO,OAAoB;AACpC,iDAAqF;AAA5E,+HAAA,OAAO,OAAiB;AACjC,uDAA8F;AAArF,qIAAA,OAAO,OAAoB;AACpC,iDAAqF;AAA5E,+HAAA,OAAO,OAAiB"}
@@ -0,0 +1,2 @@
1
+ import type { IAccountStorage } from "../../interfaces/IAccountStorage";
2
+ export default function useAccountSync(storage: IAccountStorage, projectId: string): void;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.default = useAccountSync;
40
+ var react_1 = require("react");
41
+ var hooks_1 = require("../../store/hooks");
42
+ var accountsSlice_1 = require("../../store/slices/accountsSlice");
43
+ var authSlice_1 = require("../../store/slices/authSlice");
44
+ var userSlice_1 = require("../../store/slices/userSlice");
45
+ var handleError_1 = require("../../utils/handleError");
46
+ function base64UrlDecode(str) {
47
+ // Convert base64url to standard base64
48
+ var base64 = str.replace(/-/g, "+").replace(/_/g, "/");
49
+ if (typeof atob === "function")
50
+ return atob(base64);
51
+ // Fallback for React Native (Buffer available via Node.js polyfill or hermes)
52
+ if (typeof Buffer === "function")
53
+ return Buffer.from(base64, "base64").toString("utf-8");
54
+ return "";
55
+ }
56
+ function extractExpFromJwt(jwt) {
57
+ var _a;
58
+ try {
59
+ var payload = JSON.parse(base64UrlDecode(jwt.split(".")[1]));
60
+ return ((_a = payload.exp) !== null && _a !== void 0 ? _a : 0) * 1000;
61
+ }
62
+ catch (_b) {
63
+ return 0;
64
+ }
65
+ }
66
+ function useAccountSync(storage, projectId) {
67
+ var _this = this;
68
+ var dispatch = (0, hooks_1.useReplykeDispatch)();
69
+ var refreshToken = (0, hooks_1.useReplykeSelector)(authSlice_1.selectRefreshToken);
70
+ var user = (0, hooks_1.useReplykeSelector)(userSlice_1.selectUser); // from userSlice (canonical)
71
+ var accounts = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccounts);
72
+ var activeAccountId = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectActiveAccountId);
73
+ var isReady = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccountsReady);
74
+ var isInitialLoadRef = (0, react_1.useRef)(true);
75
+ // Phase A: Mount — register + load from storage
76
+ (0, react_1.useEffect)(function () {
77
+ dispatch((0, accountsSlice_1.registerAccountManager)());
78
+ var loadAccounts = function () { return __awaiter(_this, void 0, void 0, function () {
79
+ var map, error_1;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0:
83
+ _a.trys.push([0, 2, 3, 4]);
84
+ return [4 /*yield*/, storage.getAccountMap(projectId)];
85
+ case 1:
86
+ map = _a.sent();
87
+ if (map) {
88
+ dispatch((0, accountsSlice_1.setAccountMap)(map));
89
+ if (map.activeAccountId && map.accounts[map.activeAccountId]) {
90
+ dispatch((0, authSlice_1.setRefreshToken)(map.accounts[map.activeAccountId].refreshToken));
91
+ }
92
+ }
93
+ return [3 /*break*/, 4];
94
+ case 2:
95
+ error_1 = _a.sent();
96
+ (0, handleError_1.handleError)(error_1, "Failed to load account map from storage");
97
+ return [3 /*break*/, 4];
98
+ case 3:
99
+ dispatch((0, accountsSlice_1.setAccountsReady)(true));
100
+ return [7 /*endfinally*/];
101
+ case 4: return [2 /*return*/];
102
+ }
103
+ });
104
+ }); };
105
+ loadAccounts();
106
+ }, []); // projectId is stable for lifetime of ReplykeProvider
107
+ // Phase B: Watch refreshToken + user — upsert account entries
108
+ (0, react_1.useEffect)(function () {
109
+ var _a, _b, _c;
110
+ if (!isReady || !refreshToken || !(user === null || user === void 0 ? void 0 : user.id))
111
+ return;
112
+ var summary = {
113
+ id: user.id,
114
+ name: (_a = user.name) !== null && _a !== void 0 ? _a : null,
115
+ email: (_b = user.email) !== null && _b !== void 0 ? _b : null,
116
+ avatar: (_c = user.avatar) !== null && _c !== void 0 ? _c : null,
117
+ };
118
+ var entry = {
119
+ refreshToken: refreshToken,
120
+ tokenExpiresAt: extractExpFromJwt(refreshToken),
121
+ user: summary,
122
+ };
123
+ dispatch((0, accountsSlice_1.upsertAccount)({ userId: user.id, entry: entry }));
124
+ if (user.id !== activeAccountId) {
125
+ dispatch((0, accountsSlice_1.setActiveAccount)(user.id));
126
+ }
127
+ }, [refreshToken, user, isReady]);
128
+ // Phase C: Persist map on changes
129
+ (0, react_1.useEffect)(function () {
130
+ if (!isReady)
131
+ return;
132
+ // Skip persisting the initial load (that data came FROM storage)
133
+ if (isInitialLoadRef.current) {
134
+ isInitialLoadRef.current = false;
135
+ return;
136
+ }
137
+ var map = { activeAccountId: activeAccountId, accounts: accounts };
138
+ storage.setAccountMap(projectId, map).catch(function (error) {
139
+ (0, handleError_1.handleError)(error, "Failed to persist account map");
140
+ });
141
+ }, [accounts, activeAccountId, isReady]);
142
+ // Phase D: Cross-tab sync (web only)
143
+ (0, react_1.useEffect)(function () {
144
+ if (typeof window === "undefined")
145
+ return;
146
+ var storageKey = "replyke-accounts:".concat(projectId);
147
+ var handleStorageEvent = function (event) {
148
+ if (event.key !== storageKey || !event.newValue)
149
+ return;
150
+ try {
151
+ var map = JSON.parse(event.newValue);
152
+ dispatch((0, accountsSlice_1.setAccountMap)(map));
153
+ if (map.activeAccountId && map.accounts[map.activeAccountId]) {
154
+ dispatch((0, authSlice_1.setRefreshToken)(map.accounts[map.activeAccountId].refreshToken));
155
+ }
156
+ }
157
+ catch (error) {
158
+ (0, handleError_1.handleError)(error, "Failed to sync account map from storage event");
159
+ }
160
+ };
161
+ window.addEventListener("storage", handleStorageEvent);
162
+ return function () { return window.removeEventListener("storage", handleStorageEvent); };
163
+ }, [projectId, dispatch]);
164
+ }
165
+ //# sourceMappingURL=useAccountSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAccountSync.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccountSync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type AccountSummary } from "../../store/slices/accountsSlice";
2
+ export interface UseAccountsReturn {
3
+ accounts: AccountSummary[];
4
+ activeAccount: AccountSummary | null;
5
+ accountCount: number;
6
+ }
7
+ export default function useAccounts(): UseAccountsReturn;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = useAccounts;
4
+ var react_1 = require("react");
5
+ var hooks_1 = require("../../store/hooks");
6
+ var accountsSlice_1 = require("../../store/slices/accountsSlice");
7
+ function useAccounts() {
8
+ var accountsMap = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccounts);
9
+ var activeAccountId = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectActiveAccountId);
10
+ return (0, react_1.useMemo)(function () {
11
+ var _a, _b;
12
+ var accountSummaries = Object.values(accountsMap).map(function (entry) { return entry.user; });
13
+ var activeAccount = activeAccountId
14
+ ? (_b = (_a = accountsMap[activeAccountId]) === null || _a === void 0 ? void 0 : _a.user) !== null && _b !== void 0 ? _b : null
15
+ : null;
16
+ return {
17
+ accounts: accountSummaries,
18
+ activeAccount: activeAccount,
19
+ accountCount: accountSummaries.length,
20
+ };
21
+ }, [accountsMap, activeAccountId]);
22
+ }
23
+ //# sourceMappingURL=useAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAccounts.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccounts.ts"],"names":[],"mappings":";;AAcA,8BAkBC;AAhCD,+BAAgC;AAChC,2CAAuD;AACvD,kEAI0C;AAQ1C,SAAwB,WAAW;IACjC,IAAM,WAAW,GAAG,IAAA,0BAAkB,EAAC,8BAAc,CAAC,CAAC;IACvD,IAAM,eAAe,GAAG,IAAA,0BAAkB,EAAC,qCAAqB,CAAC,CAAC;IAElE,OAAO,IAAA,eAAO,EAAC;;QACb,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CACrD,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,IAAI,EAAV,CAAU,CACtB,CAAC;QACF,IAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,MAAA,MAAA,WAAW,CAAC,eAAe,CAAC,0CAAE,IAAI,mCAAI,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,aAAa,eAAA;YACb,YAAY,EAAE,gBAAgB,CAAC,MAAM;SACtC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface UseAddAccountReturn {
2
+ addAccount: () => void;
3
+ canAddAccount: boolean;
4
+ }
5
+ export default function useAddAccount(): UseAddAccountReturn;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = useAddAccount;
4
+ var react_1 = require("react");
5
+ var hooks_1 = require("../../store/hooks");
6
+ var authSlice_1 = require("../../store/slices/authSlice");
7
+ var userSlice_1 = require("../../store/slices/userSlice");
8
+ var accountsSlice_1 = require("../../store/slices/accountsSlice");
9
+ var baseApi_1 = require("../../store/api/baseApi");
10
+ function useAddAccount() {
11
+ var dispatch = (0, hooks_1.useReplykeDispatch)();
12
+ var accounts = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccounts);
13
+ var canAddAccount = Object.keys(accounts).length < accountsSlice_1.MAX_ACCOUNTS;
14
+ var addAccount = (0, react_1.useCallback)(function () {
15
+ if (!canAddAccount)
16
+ return;
17
+ // Clear active auth state so the sign-in UI appears.
18
+ // Existing accounts remain safely in the accounts map.
19
+ // After the user signs in, useAccountSync auto-upserts the new account.
20
+ dispatch((0, authSlice_1.resetAuth)());
21
+ dispatch((0, userSlice_1.clearUser)());
22
+ dispatch((0, accountsSlice_1.setActiveAccount)(null));
23
+ dispatch(baseApi_1.baseApi.util.resetApiState());
24
+ }, [dispatch, canAddAccount]);
25
+ return { addAccount: addAccount, canAddAccount: canAddAccount };
26
+ }
27
+ //# sourceMappingURL=useAddAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAddAccount.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAddAccount.ts"],"names":[],"mappings":";;AAgBA,gCAkBC;AAlCD,+BAAoC;AACpC,2CAA2E;AAC3E,0DAAyD;AACzD,0DAAyD;AACzD,kEAI0C;AAC1C,mDAAkD;AAOlD,SAAwB,aAAa;IACnC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,GAAE,CAAC;IACtC,IAAM,QAAQ,GAAG,IAAA,0BAAkB,EAAC,8BAAc,CAAC,CAAC;IACpD,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,4BAAY,CAAC;IAElE,IAAM,UAAU,GAAG,IAAA,mBAAW,EAAC;QAC7B,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,qDAAqD;QACrD,uDAAuD;QACvD,wEAAwE;QACxE,QAAQ,CAAC,IAAA,qBAAS,GAAE,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAA,qBAAS,GAAE,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QACjC,QAAQ,CAAC,iBAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,CAAC;AACvC,CAAC"}
@@ -34,6 +34,6 @@ export interface UseAuthValues {
34
34
  signInWithEmailAndPassword: (props: SignInWithEmailAndPasswordProps) => Promise<void>;
35
35
  signOut: () => Promise<void>;
36
36
  changePassword: (props: ChangePasswordProps) => Promise<void>;
37
- requestNewAccessToken: () => Promise<void>;
37
+ requestNewAccessToken: () => Promise<string | undefined>;
38
38
  }
39
39
  export default function useAuth(): UseAuthValues;
@@ -0,0 +1,6 @@
1
+ export interface UseRemoveAccountReturn {
2
+ removeAccount: (userId: string) => Promise<void>;
3
+ isRemoving: boolean;
4
+ error: string | null;
5
+ }
6
+ export default function useRemoveAccount(): UseRemoveAccountReturn;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.default = useRemoveAccount;
43
+ var react_1 = require("react");
44
+ var hooks_1 = require("../../store/hooks");
45
+ var accountsSlice_1 = require("../../store/slices/accountsSlice");
46
+ var authSlice_1 = require("../../store/slices/authSlice");
47
+ var userSlice_1 = require("../../store/slices/userSlice");
48
+ var authThunks_1 = require("../../store/slices/authThunks");
49
+ var baseApi_1 = require("../../store/api/baseApi");
50
+ var useProject_1 = __importDefault(require("../projects/useProject"));
51
+ var axios_1 = __importDefault(require("../../config/axios"));
52
+ var handleError_1 = require("../../utils/handleError");
53
+ function useRemoveAccount() {
54
+ var _this = this;
55
+ var dispatch = (0, hooks_1.useReplykeDispatch)();
56
+ var projectId = (0, useProject_1.default)().projectId;
57
+ var accounts = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectAccounts);
58
+ var activeAccountId = (0, hooks_1.useReplykeSelector)(accountsSlice_1.selectActiveAccountId);
59
+ var _a = (0, react_1.useState)(false), isRemoving = _a[0], setIsRemoving = _a[1];
60
+ var _b = (0, react_1.useState)(null), error = _b[0], setError = _b[1];
61
+ var removeAccount = (0, react_1.useCallback)(function (userId) { return __awaiter(_this, void 0, void 0, function () {
62
+ var targetAccount, isActiveAccount, signOutError_1, remainingIds, nextId, nextAccount, err_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ if (!projectId)
67
+ throw new Error("No projectId available");
68
+ targetAccount = accounts[userId];
69
+ if (!targetAccount)
70
+ throw new Error("Account ".concat(userId, " not found"));
71
+ setIsRemoving(true);
72
+ setError(null);
73
+ isActiveAccount = userId === activeAccountId;
74
+ _a.label = 1;
75
+ case 1:
76
+ _a.trys.push([1, 9, 10, 11]);
77
+ _a.label = 2;
78
+ case 2:
79
+ _a.trys.push([2, 4, , 5]);
80
+ return [4 /*yield*/, axios_1.default.post("/".concat(projectId, "/auth/sign-out"), { refreshToken: targetAccount.refreshToken })];
81
+ case 3:
82
+ _a.sent();
83
+ return [3 /*break*/, 5];
84
+ case 4:
85
+ signOutError_1 = _a.sent();
86
+ (0, handleError_1.handleError)(signOutError_1, "Server sign-out failed during account removal");
87
+ return [3 /*break*/, 5];
88
+ case 5:
89
+ // Remove from accounts map
90
+ dispatch((0, accountsSlice_1.removeAccount)(userId));
91
+ if (!isActiveAccount) return [3 /*break*/, 8];
92
+ remainingIds = Object.keys(accounts).filter(function (id) { return id !== userId; });
93
+ if (!(remainingIds.length > 0)) return [3 /*break*/, 7];
94
+ nextId = remainingIds[0];
95
+ nextAccount = accounts[nextId];
96
+ dispatch((0, authSlice_1.resetAuth)());
97
+ dispatch((0, userSlice_1.clearUser)());
98
+ dispatch(baseApi_1.baseApi.util.resetApiState());
99
+ dispatch((0, authSlice_1.setTokens)({
100
+ accessToken: null,
101
+ refreshToken: nextAccount.refreshToken,
102
+ }));
103
+ dispatch((0, authSlice_1.setInitialized)(false));
104
+ return [4 /*yield*/, dispatch((0, authThunks_1.requestNewAccessTokenThunk)({ projectId: projectId }))];
105
+ case 6:
106
+ _a.sent();
107
+ dispatch((0, authSlice_1.setInitialized)(true));
108
+ return [3 /*break*/, 8];
109
+ case 7:
110
+ dispatch((0, authSlice_1.resetAuth)());
111
+ dispatch((0, userSlice_1.clearUser)());
112
+ dispatch(baseApi_1.baseApi.util.resetApiState());
113
+ _a.label = 8;
114
+ case 8: return [3 /*break*/, 11];
115
+ case 9:
116
+ err_1 = _a.sent();
117
+ setError(err_1 instanceof Error ? err_1.message : "Failed to remove account");
118
+ return [3 /*break*/, 11];
119
+ case 10:
120
+ setIsRemoving(false);
121
+ return [7 /*endfinally*/];
122
+ case 11: return [2 /*return*/];
123
+ }
124
+ });
125
+ }); }, [dispatch, projectId, accounts, activeAccountId]);
126
+ return { removeAccount: removeAccount, isRemoving: isRemoving, error: error };
127
+ }
128
+ //# sourceMappingURL=useRemoveAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRemoveAccount.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useRemoveAccount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface UseSignOutAllReturn {
2
+ signOutAll: () => Promise<void>;
3
+ }
4
+ export default function useSignOutAll(): UseSignOutAllReturn;