@replyke/core 5.1.5-beta.2 → 5.1.5-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/context/index.d.ts +1 -1
- package/dist/cjs/context/index.js +5 -3
- package/dist/cjs/context/index.js.map +1 -1
- package/dist/cjs/context/replyke-context.d.ts +0 -1
- package/dist/cjs/context/replyke-context.js +2 -3
- package/dist/cjs/context/replyke-context.js.map +1 -1
- package/dist/cjs/context/replyke-store-context.d.ts +3 -2
- package/dist/cjs/context/replyke-store-context.js +23 -6
- package/dist/cjs/context/replyke-store-context.js.map +1 -1
- package/dist/cjs/hooks/auth-redux/index.d.ts +2 -0
- package/dist/cjs/hooks/auth-redux/index.js +11 -0
- package/dist/cjs/hooks/auth-redux/index.js.map +1 -0
- package/dist/cjs/hooks/auth-redux/useAuthRedux.d.ts +32 -0
- package/dist/cjs/hooks/auth-redux/useAuthRedux.js +180 -0
- package/dist/cjs/hooks/auth-redux/useAuthRedux.js.map +1 -0
- package/dist/cjs/hooks/auth-redux/useUserRedux.d.ts +6 -0
- package/dist/cjs/hooks/auth-redux/useUserRedux.js +20 -0
- package/dist/cjs/hooks/auth-redux/useUserRedux.js.map +1 -0
- package/dist/cjs/index.d.ts +7 -5
- package/dist/cjs/index.js +15 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/store/api/baseApi.js +12 -4
- package/dist/cjs/store/api/baseApi.js.map +1 -1
- package/dist/cjs/store/index.d.ts +2 -0
- package/dist/cjs/store/middleware.js +6 -8
- package/dist/cjs/store/middleware.js.map +1 -1
- package/dist/cjs/store/rootReducer.d.ts +2 -0
- package/dist/cjs/store/rootReducer.js +5 -0
- package/dist/cjs/store/rootReducer.js.map +1 -1
- package/dist/cjs/store/slices/authSlice.d.ts +24 -0
- package/dist/cjs/store/slices/authSlice.js +79 -0
- package/dist/cjs/store/slices/authSlice.js.map +1 -0
- package/dist/cjs/store/slices/authThunks.d.ts +40 -0
- package/dist/cjs/store/slices/authThunks.js +357 -0
- package/dist/cjs/store/slices/authThunks.js.map +1 -0
- package/dist/esm/context/index.d.ts +1 -1
- package/dist/esm/context/index.js +3 -1
- package/dist/esm/context/index.js.map +1 -1
- package/dist/esm/context/replyke-context.d.ts +0 -1
- package/dist/esm/context/replyke-context.js +2 -3
- package/dist/esm/context/replyke-context.js.map +1 -1
- package/dist/esm/context/replyke-store-context.d.ts +3 -2
- package/dist/esm/context/replyke-store-context.js +25 -8
- package/dist/esm/context/replyke-store-context.js.map +1 -1
- package/dist/esm/hooks/auth-redux/index.d.ts +2 -0
- package/dist/esm/hooks/auth-redux/index.js +3 -0
- package/dist/esm/hooks/auth-redux/index.js.map +1 -0
- package/dist/esm/hooks/auth-redux/useAuthRedux.d.ts +32 -0
- package/dist/esm/hooks/auth-redux/useAuthRedux.js +174 -0
- package/dist/esm/hooks/auth-redux/useAuthRedux.js.map +1 -0
- package/dist/esm/hooks/auth-redux/useUserRedux.d.ts +6 -0
- package/dist/esm/hooks/auth-redux/useUserRedux.js +17 -0
- package/dist/esm/hooks/auth-redux/useUserRedux.js.map +1 -0
- package/dist/esm/index.d.ts +7 -5
- package/dist/esm/index.js +13 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/store/api/baseApi.js +12 -4
- package/dist/esm/store/api/baseApi.js.map +1 -1
- package/dist/esm/store/index.d.ts +2 -0
- package/dist/esm/store/middleware.js +6 -8
- package/dist/esm/store/middleware.js.map +1 -1
- package/dist/esm/store/rootReducer.d.ts +2 -0
- package/dist/esm/store/rootReducer.js +2 -0
- package/dist/esm/store/rootReducer.js.map +1 -1
- package/dist/esm/store/slices/authSlice.d.ts +24 -0
- package/dist/esm/store/slices/authSlice.js +69 -0
- package/dist/esm/store/slices/authSlice.js.map +1 -0
- package/dist/esm/store/slices/authThunks.d.ts +40 -0
- package/dist/esm/store/slices/authThunks.js +351 -0
- package/dist/esm/store/slices/authThunks.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,11 +2,12 @@ import React from "react";
|
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
export interface ReplykeStoreProviderProps {
|
|
4
4
|
children: ReactNode;
|
|
5
|
+
projectId: string;
|
|
6
|
+
signedToken?: string | null;
|
|
5
7
|
}
|
|
6
8
|
/**
|
|
7
9
|
* Redux store provider for Replyke
|
|
8
|
-
* This component provides the Redux store
|
|
9
|
-
* Can be used standalone or wrapped around the existing ReplykeProvider
|
|
10
|
+
* This component provides the Redux store and initializes auth state
|
|
10
11
|
*/
|
|
11
12
|
export declare const ReplykeStoreProvider: React.FC<ReplykeStoreProviderProps>;
|
|
12
13
|
export default ReplykeStoreProvider;
|
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { Provider, useDispatch } from "react-redux";
|
|
3
4
|
import { replykeStore } from "../store";
|
|
5
|
+
import { initializeAuthThunk } from "../store/slices/authThunks";
|
|
6
|
+
/**
|
|
7
|
+
* Component that initializes auth state in Redux
|
|
8
|
+
* Must be inside the Redux Provider to dispatch actions
|
|
9
|
+
*/
|
|
10
|
+
var AuthInitializer = function (_a) {
|
|
11
|
+
var children = _a.children, projectId = _a.projectId, signedToken = _a.signedToken;
|
|
12
|
+
var dispatch = useDispatch();
|
|
13
|
+
useEffect(function () {
|
|
14
|
+
// Initialize auth with project and signed token
|
|
15
|
+
dispatch(initializeAuthThunk({
|
|
16
|
+
projectId: projectId,
|
|
17
|
+
signedToken: signedToken
|
|
18
|
+
}));
|
|
19
|
+
}, [dispatch, projectId, signedToken]);
|
|
20
|
+
return _jsx(_Fragment, { children: children });
|
|
21
|
+
};
|
|
4
22
|
/**
|
|
5
23
|
* Redux store provider for Replyke
|
|
6
|
-
* This component provides the Redux store
|
|
7
|
-
* Can be used standalone or wrapped around the existing ReplykeProvider
|
|
24
|
+
* This component provides the Redux store and initializes auth state
|
|
8
25
|
*/
|
|
9
26
|
export var ReplykeStoreProvider = function (_a) {
|
|
10
|
-
var children = _a.children;
|
|
11
|
-
return (_jsx(Provider, { store: replykeStore, children: children }));
|
|
27
|
+
var children = _a.children, projectId = _a.projectId, signedToken = _a.signedToken;
|
|
28
|
+
return (_jsx(Provider, { store: replykeStore, children: _jsx(AuthInitializer, { projectId: projectId, signedToken: signedToken, children: children }) }));
|
|
12
29
|
};
|
|
13
|
-
//
|
|
14
|
-
//
|
|
30
|
+
// Clean Redux-only architecture
|
|
31
|
+
// Always integrated with ReplykeProvider
|
|
15
32
|
export default ReplykeStoreProvider;
|
|
16
33
|
//# sourceMappingURL=replyke-store-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replyke-store-context.js","sourceRoot":"","sources":["../../../src/context/replyke-store-context.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"replyke-store-context.js","sourceRoot":"","sources":["../../../src/context/replyke-store-context.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAQjE;;;GAGG;AACH,IAAM,eAAe,GAIhB,UAAC,EAAoC;QAAlC,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,WAAW,iBAAA;IACtC,IAAM,QAAQ,GAAG,WAAW,EAAe,CAAC;IAE5C,SAAS,CAAC;QACR,gDAAgD;QAChD,QAAQ,CAAC,mBAAmB,CAAC;YAC3B,SAAS,WAAA;YACT,WAAW,aAAA;SACZ,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvC,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAwC,UAAC,EAIzE;QAHC,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,WAAW,iBAAA;IAEX,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3B,KAAC,eAAe,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,YAC5D,QAAQ,GACO,GACT,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,gCAAgC;AAChC,yCAAyC;AAEzC,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/auth-redux/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,YAAY,EAA2B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface UseAuthReduxValues {
|
|
2
|
+
loadingInitial: boolean;
|
|
3
|
+
accessToken: string | null;
|
|
4
|
+
refreshToken: string | null;
|
|
5
|
+
setRefreshToken: React.Dispatch<React.SetStateAction<string | null>>;
|
|
6
|
+
signUpWithEmailAndPassword: (props: {
|
|
7
|
+
email: string;
|
|
8
|
+
password: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
username?: string;
|
|
11
|
+
avatar?: string;
|
|
12
|
+
bio?: string;
|
|
13
|
+
location?: {
|
|
14
|
+
latitude: number;
|
|
15
|
+
longitude: number;
|
|
16
|
+
};
|
|
17
|
+
birthdate?: Date;
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
secureMetadata?: Record<string, any>;
|
|
20
|
+
}) => Promise<void>;
|
|
21
|
+
signInWithEmailAndPassword: (props: {
|
|
22
|
+
email: string;
|
|
23
|
+
password: string;
|
|
24
|
+
}) => Promise<void>;
|
|
25
|
+
signOut: () => Promise<void>;
|
|
26
|
+
changePassword: (props: {
|
|
27
|
+
password: string;
|
|
28
|
+
newPassword: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
requestNewAccessToken: () => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export default function useAuthRedux(): UseAuthReduxValues;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
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);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
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;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
49
|
+
import { useCallback } from 'react';
|
|
50
|
+
import { selectAccessToken, selectRefreshToken, selectLoadingInitial, setRefreshToken } from '../../store/slices/authSlice';
|
|
51
|
+
import { signUpWithEmailAndPasswordThunk, signInWithEmailAndPasswordThunk, signOutThunk, changePasswordThunk, requestNewAccessTokenThunk } from '../../store/slices/authThunks';
|
|
52
|
+
import useProject from '../projects/useProject';
|
|
53
|
+
export default function useAuthRedux() {
|
|
54
|
+
var _this = this;
|
|
55
|
+
var dispatch = useDispatch();
|
|
56
|
+
var projectId = useProject().projectId;
|
|
57
|
+
// Selectors
|
|
58
|
+
var loadingInitial = useSelector(function (state) { return selectLoadingInitial(state); });
|
|
59
|
+
var accessToken = useSelector(function (state) { return selectAccessToken(state); });
|
|
60
|
+
var refreshToken = useSelector(function (state) { return selectRefreshToken(state); });
|
|
61
|
+
// Actions
|
|
62
|
+
var handleSignUpWithEmailAndPassword = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
63
|
+
var result;
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0:
|
|
67
|
+
if (!projectId) {
|
|
68
|
+
throw new Error("No projectId available.");
|
|
69
|
+
}
|
|
70
|
+
return [4 /*yield*/, dispatch(signUpWithEmailAndPasswordThunk(__assign({ projectId: projectId }, props)))];
|
|
71
|
+
case 1:
|
|
72
|
+
result = _a.sent();
|
|
73
|
+
if (signUpWithEmailAndPasswordThunk.rejected.match(result)) {
|
|
74
|
+
throw new Error(result.payload);
|
|
75
|
+
}
|
|
76
|
+
return [2 /*return*/];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}); }, [dispatch, projectId]);
|
|
80
|
+
var handleSignInWithEmailAndPassword = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
81
|
+
var result;
|
|
82
|
+
return __generator(this, function (_a) {
|
|
83
|
+
switch (_a.label) {
|
|
84
|
+
case 0:
|
|
85
|
+
if (!projectId) {
|
|
86
|
+
throw new Error("No projectId available.");
|
|
87
|
+
}
|
|
88
|
+
return [4 /*yield*/, dispatch(signInWithEmailAndPasswordThunk(__assign({ projectId: projectId }, props)))];
|
|
89
|
+
case 1:
|
|
90
|
+
result = _a.sent();
|
|
91
|
+
if (signInWithEmailAndPasswordThunk.rejected.match(result)) {
|
|
92
|
+
throw new Error(result.payload);
|
|
93
|
+
}
|
|
94
|
+
return [2 /*return*/];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}); }, [dispatch, projectId]);
|
|
98
|
+
var handleSignOut = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
99
|
+
var result;
|
|
100
|
+
return __generator(this, function (_a) {
|
|
101
|
+
switch (_a.label) {
|
|
102
|
+
case 0:
|
|
103
|
+
if (!projectId) {
|
|
104
|
+
throw new Error("No projectId available.");
|
|
105
|
+
}
|
|
106
|
+
return [4 /*yield*/, dispatch(signOutThunk({ projectId: projectId }))];
|
|
107
|
+
case 1:
|
|
108
|
+
result = _a.sent();
|
|
109
|
+
if (signOutThunk.rejected.match(result)) {
|
|
110
|
+
throw new Error(result.payload);
|
|
111
|
+
}
|
|
112
|
+
return [2 /*return*/];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}); }, [dispatch, projectId]);
|
|
116
|
+
var handleChangePassword = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
117
|
+
var result;
|
|
118
|
+
return __generator(this, function (_a) {
|
|
119
|
+
switch (_a.label) {
|
|
120
|
+
case 0:
|
|
121
|
+
if (!projectId) {
|
|
122
|
+
throw new Error("No projectId available.");
|
|
123
|
+
}
|
|
124
|
+
return [4 /*yield*/, dispatch(changePasswordThunk(__assign({ projectId: projectId }, props)))];
|
|
125
|
+
case 1:
|
|
126
|
+
result = _a.sent();
|
|
127
|
+
if (changePasswordThunk.rejected.match(result)) {
|
|
128
|
+
throw new Error(result.payload);
|
|
129
|
+
}
|
|
130
|
+
return [2 /*return*/];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}); }, [dispatch, projectId]);
|
|
134
|
+
var handleRequestNewAccessToken = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
135
|
+
var result;
|
|
136
|
+
return __generator(this, function (_a) {
|
|
137
|
+
switch (_a.label) {
|
|
138
|
+
case 0:
|
|
139
|
+
if (!projectId)
|
|
140
|
+
return [2 /*return*/];
|
|
141
|
+
return [4 /*yield*/, dispatch(requestNewAccessTokenThunk({ projectId: projectId }))];
|
|
142
|
+
case 1:
|
|
143
|
+
result = _a.sent();
|
|
144
|
+
if (requestNewAccessTokenThunk.fulfilled.match(result)) {
|
|
145
|
+
return [2 /*return*/, result.payload];
|
|
146
|
+
}
|
|
147
|
+
return [2 /*return*/];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}); }, [dispatch, projectId]);
|
|
151
|
+
var handleSetRefreshToken = useCallback(function (token) {
|
|
152
|
+
// Handle both direct value and function setter patterns
|
|
153
|
+
if (typeof token === 'function') {
|
|
154
|
+
var currentToken = refreshToken;
|
|
155
|
+
var newToken = token(currentToken);
|
|
156
|
+
dispatch(setRefreshToken(newToken));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
dispatch(setRefreshToken(token));
|
|
160
|
+
}
|
|
161
|
+
}, [dispatch, refreshToken]);
|
|
162
|
+
return {
|
|
163
|
+
loadingInitial: loadingInitial,
|
|
164
|
+
accessToken: accessToken,
|
|
165
|
+
refreshToken: refreshToken,
|
|
166
|
+
setRefreshToken: handleSetRefreshToken,
|
|
167
|
+
signUpWithEmailAndPassword: handleSignUpWithEmailAndPassword,
|
|
168
|
+
signInWithEmailAndPassword: handleSignInWithEmailAndPassword,
|
|
169
|
+
signOut: handleSignOut,
|
|
170
|
+
changePassword: handleChangePassword,
|
|
171
|
+
requestNewAccessToken: handleRequestNewAccessToken,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=useAuthRedux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthRedux.js","sourceRoot":"","sources":["../../../../src/hooks/auth-redux/useAuthRedux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { selectUser, setUser } from '../../store/slices/authSlice';
|
|
4
|
+
export default function useUserRedux() {
|
|
5
|
+
var dispatch = useDispatch();
|
|
6
|
+
// Selectors
|
|
7
|
+
var user = useSelector(function (state) { return selectUser(state); });
|
|
8
|
+
// Actions
|
|
9
|
+
var handleSetUser = useCallback(function (newUser) {
|
|
10
|
+
dispatch(setUser(newUser));
|
|
11
|
+
}, [dispatch]);
|
|
12
|
+
return {
|
|
13
|
+
user: user,
|
|
14
|
+
setUser: handleSetUser,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useUserRedux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUserRedux.js","sourceRoot":"","sources":["../../../../src/hooks/auth-redux/useUserRedux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,OAAO,EACR,MAAM,8BAA8B,CAAC;AAQtC,MAAM,CAAC,OAAO,UAAU,YAAY;IAClC,IAAM,QAAQ,GAAG,WAAW,EAAe,CAAC;IAE5C,YAAY;IACZ,IAAM,IAAI,GAAG,WAAW,CAAC,UAAC,KAAgB,IAAK,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC;IAElE,UAAU;IACV,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,OAAiB;QAClD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO;QACL,IAAI,MAAA;QACJ,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -4,18 +4,20 @@ export { getUserName } from "./helpers/getUserName";
|
|
|
4
4
|
export { default as getPublicFileUrl } from "./helpers/getPublicFileUrl";
|
|
5
5
|
export { reportReasons } from "./constants/reportReasons";
|
|
6
6
|
export type { ReportReasonKey } from "./constants/reportReasons";
|
|
7
|
-
export { ReplykeProvider, //
|
|
8
|
-
EntityListProvider, EntityProvider, ListsProvider, AppNotificationsProvider, CommentSectionProvider, } from "./context";
|
|
9
|
-
export {
|
|
7
|
+
export { ReplykeProvider, // Always includes Redux auth and notification management
|
|
8
|
+
EntityListProvider, EntityProvider, ListsProvider, AppNotificationsProvider, CommentSectionProvider, ReplykeStoreProvider, } from "./context";
|
|
9
|
+
export { AuthProvider, } from "./context";
|
|
10
10
|
export { useProject, useProjectData } from "./hooks/projects";
|
|
11
11
|
export { useSignTestingJwt } from "./hooks/crypto";
|
|
12
|
-
export { useAuth,
|
|
12
|
+
export { useAuthRedux as useAuth, useUserRedux as useUser, type UseAuthReduxValues as UseAuthValues, type UseUserReduxValues as UseUserValues, } from "./hooks/auth-redux";
|
|
13
|
+
export { useAuth as useAuthContext, useAuthData, useRequestNewAccessToken, useSignUpWithEmailAndPassword, useSignInWithEmailAndPassword, useSignOut, useChangePassword, useVerifyExternalUser, } from "./hooks/auth";
|
|
13
14
|
export { useAppNotifications, useAppNotificationsData, useCountUnreadNotifications, useFetchAppNotifications, useMarkNotificationAsRead, } from "./hooks/app-notifications";
|
|
14
15
|
export { useAppNotificationsRedux, useAppNotificationsDataRedux, type UseAppNotificationsDataProps, type UseAppNotificationsDataValues, } from "./hooks/app-notifications-redux";
|
|
15
16
|
export { useEntity, useEntityData, useCreateEntity, useFetchEntity, useFetchEntityByForeignId, useFetchEntityByShortId, useUpdateEntity, useEntityVotes, useDeleteEntity, useEntityList, useEntityListData, useInfusedData, } from "./hooks/entities";
|
|
16
17
|
export { useCommentSection, useCommentSectionData, useCreateComment, useFetchManyComments, useFetchComment, useFetchCommentByForeignId, useReplies, useUpdateComment, useCommentVotes, useDeleteComment, useEntityComments, useProfileComments, } from "./hooks/comments";
|
|
17
18
|
export { useLists, useListsData, useCreateList, useFetchRootList, useFetchSubLists, useIsEntitySaved, useUpdateList, useAddToList, useRemoveFromList, useDeleteList, } from "./hooks/lists";
|
|
18
|
-
export {
|
|
19
|
+
export { useUserData, useFetchUser, useFetchUserByForeignId, useFetchUserFollowersCount, useFetchUserFollowingCount, useCheckUsernameAvailability, useFetchUserSuggestions, useMentions, useUpdateUser, useFetchFollow, useFollowUser, useUnfollowUser, } from "./hooks/users";
|
|
20
|
+
export { useUser as useUserContext, } from "./hooks/users";
|
|
19
21
|
export { useCreateReport } from "./hooks/reports";
|
|
20
22
|
export { useGetMetadata } from "./hooks/utils";
|
|
21
23
|
export { useUploadFile } from "./hooks/storage";
|
package/dist/esm/index.js
CHANGED
|
@@ -5,18 +5,21 @@ export { getUserName } from "./helpers/getUserName";
|
|
|
5
5
|
export { default as getPublicFileUrl } from "./helpers/getPublicFileUrl";
|
|
6
6
|
// Constants
|
|
7
7
|
export { reportReasons } from "./constants/reportReasons";
|
|
8
|
-
// Context providers
|
|
9
|
-
export { ReplykeProvider, //
|
|
10
|
-
EntityListProvider, EntityProvider, ListsProvider, AppNotificationsProvider, CommentSectionProvider,
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
// Context providers (now Redux-powered by default)
|
|
9
|
+
export { ReplykeProvider, // Always includes Redux auth and notification management
|
|
10
|
+
EntityListProvider, EntityProvider, ListsProvider, AppNotificationsProvider, CommentSectionProvider, ReplykeStoreProvider, // Advanced: standalone Redux provider
|
|
11
|
+
} from "./context";
|
|
12
|
+
// Legacy Context providers (for reference)
|
|
13
|
+
export { AuthProvider, // Legacy - use Redux-powered ReplykeProvider instead
|
|
13
14
|
} from "./context";
|
|
14
15
|
// -- projects
|
|
15
16
|
export { useProject, useProjectData } from "./hooks/projects";
|
|
16
17
|
// -- crypto
|
|
17
18
|
export { useSignTestingJwt } from "./hooks/crypto";
|
|
18
|
-
// -- authentication
|
|
19
|
-
export {
|
|
19
|
+
// -- authentication (now Redux-powered)
|
|
20
|
+
export { useAuthRedux as useAuth, useUserRedux as useUser, } from "./hooks/auth-redux";
|
|
21
|
+
// Legacy auth exports (for reference - keep existing Context implementation available)
|
|
22
|
+
export { useAuth as useAuthContext, useAuthData, useRequestNewAccessToken, useSignUpWithEmailAndPassword, useSignInWithEmailAndPassword, useSignOut, useChangePassword, useVerifyExternalUser, } from "./hooks/auth";
|
|
20
23
|
// -- app notifications
|
|
21
24
|
export { useAppNotifications, useAppNotificationsData, useCountUnreadNotifications, useFetchAppNotifications, useMarkNotificationAsRead, } from "./hooks/app-notifications";
|
|
22
25
|
// -- app notifications (Redux-powered)
|
|
@@ -28,7 +31,9 @@ export { useCommentSection, useCommentSectionData, useCreateComment, useFetchMan
|
|
|
28
31
|
// -- lists
|
|
29
32
|
export { useLists, useListsData, useCreateList, useFetchRootList, useFetchSubLists, useIsEntitySaved, useUpdateList, useAddToList, useRemoveFromList, useDeleteList, } from "./hooks/lists";
|
|
30
33
|
// -- users
|
|
31
|
-
export {
|
|
34
|
+
export { useUserData, useFetchUser, useFetchUserByForeignId, useFetchUserFollowersCount, useFetchUserFollowingCount, useCheckUsernameAvailability, useFetchUserSuggestions, useMentions, useUpdateUser, useFetchFollow, useFollowUser, useUnfollowUser, } from "./hooks/users";
|
|
35
|
+
// Legacy user exports (for reference - keep existing Context implementation available)
|
|
36
|
+
export { useUser as useUserContext, } from "./hooks/users";
|
|
32
37
|
// -- reports
|
|
33
38
|
export { useCreateReport } from "./hooks/reports";
|
|
34
39
|
// -- general
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,mDAAmD;AACnD,OAAO,EACL,eAAe,EAAE,yDAAyD;AAC1E,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EAAE,sCAAsC;EAC7D,MAAM,WAAW,CAAC;AAEnB,2CAA2C;AAC3C,OAAO,EACL,YAAY,EAAE,qDAAqD;EACpE,MAAM,WAAW,CAAC;AAEnB,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9D,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,wCAAwC;AACxC,OAAO,EACL,YAAY,IAAI,OAAO,EACvB,YAAY,IAAI,OAAO,GAGxB,MAAM,oBAAoB,CAAC;AAE5B,uFAAuF;AACvF,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,WAAW,EACX,wBAAwB,EACxB,6BAA6B,EAC7B,6BAA6B,EAC7B,UAAU,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,uCAAuC;AACvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAG7B,MAAM,iCAAiC,CAAC;AAEzC,cAAc;AACd,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,WAAW;AACX,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,WAAW;AACX,OAAO,EACL,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,uFAAuF;AACvF,OAAO,EACL,OAAO,IAAI,cAAc,GAC1B,MAAM,eAAe,CAAC;AAEvB,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC"}
|
|
@@ -3,11 +3,19 @@ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
|
|
3
3
|
// Base query that uses the current project context and auth
|
|
4
4
|
var createBaseQuery = function () {
|
|
5
5
|
return fetchBaseQuery({
|
|
6
|
-
baseUrl: process.env.REACT_APP_API_BASE_URL || 'https://api.replyke.com',
|
|
6
|
+
baseUrl: process.env.REACT_APP_API_BASE_URL || 'https://api.replyke.com/api/v5',
|
|
7
7
|
credentials: 'include', // Equivalent to withCredentials: true
|
|
8
|
-
prepareHeaders: function (headers) {
|
|
9
|
-
|
|
10
|
-
//
|
|
8
|
+
prepareHeaders: function (headers, _a) {
|
|
9
|
+
var getState = _a.getState;
|
|
10
|
+
// Add Content-Type header
|
|
11
|
+
headers.set('Content-Type', 'application/json');
|
|
12
|
+
// Get access token from Redux state
|
|
13
|
+
var state = getState();
|
|
14
|
+
var accessToken = state.auth.accessToken;
|
|
15
|
+
// Add Authorization header if we have a token
|
|
16
|
+
if (accessToken) {
|
|
17
|
+
headers.set('Authorization', "Bearer ".concat(accessToken));
|
|
18
|
+
}
|
|
11
19
|
return headers;
|
|
12
20
|
},
|
|
13
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseApi.js","sourceRoot":"","sources":["../../../../src/store/api/baseApi.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"baseApi.js","sourceRoot":"","sources":["../../../../src/store/api/baseApi.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGzE,4DAA4D;AAC5D,IAAM,eAAe,GAAG;IACtB,OAAO,cAAc,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,gCAAgC;QAC/E,WAAW,EAAE,SAAS,EAAE,sCAAsC;QAC9D,cAAc,EAAE,UAAC,OAAO,EAAE,EAAY;gBAAV,QAAQ,cAAA;YAClC,0BAA0B;YAC1B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAEhD,oCAAoC;YACpC,IAAM,KAAK,GAAG,QAAQ,EAAe,CAAC;YACtC,IAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;YAE3C,8CAA8C;YAC9C,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAU,WAAW,CAAE,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,eAAe,EAAE;IAC5B,QAAQ,EAAE;QACR,iBAAiB;QACjB,oBAAoB;QACpB,YAAY;QACZ,cAAc;QACd,UAAU;QACV,UAAU;KACX;IACD,SAAS,EAAE,cAAM,OAAA,CAAC,EAAE,CAAC,EAAJ,CAAI,EAAE,6CAA6C;CACrE,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,UAAO,KAAK,OAAO,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
|
|
2
2
|
api: import("@reduxjs/toolkit/query").CombinedState<{}, "AppNotification", "api">;
|
|
3
|
+
auth: import("./slices/authSlice").AuthState;
|
|
3
4
|
appNotifications: import("./slices").AppNotificationsState;
|
|
4
5
|
}, import("@reduxjs/toolkit").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{
|
|
5
6
|
dispatch: import("@reduxjs/toolkit").ThunkDispatch<{
|
|
6
7
|
api: import("@reduxjs/toolkit/query").CombinedState<{}, "AppNotification", "api">;
|
|
8
|
+
auth: import("./slices/authSlice").AuthState;
|
|
7
9
|
appNotifications: import("./slices").AppNotificationsState;
|
|
8
10
|
}, undefined, import("@reduxjs/toolkit").UnknownAction>;
|
|
9
11
|
}>, import("@reduxjs/toolkit").StoreEnhancer]>>;
|
|
@@ -18,16 +18,14 @@ export var errorMiddleware = function (store) { return function (next) { return
|
|
|
18
18
|
throw error;
|
|
19
19
|
}
|
|
20
20
|
}; }; };
|
|
21
|
-
//
|
|
21
|
+
// Selective logger middleware for development - only logs important actions
|
|
22
22
|
export var loggerMiddleware = function (store) { return function (next) { return function (action) {
|
|
23
|
-
if (process.env.NODE_ENV === 'development') {
|
|
24
|
-
console.group("\uD83D\uDD04 Redux Action: ".concat(action.type));
|
|
25
|
-
console.log('Previous State:', store.getState());
|
|
26
|
-
console.log('Action:', action);
|
|
27
|
-
}
|
|
28
23
|
var result = next(action);
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
// Only log failed API calls and errors in development
|
|
25
|
+
if (process.env.NODE_ENV === 'development' && action.type.includes('/rejected')) {
|
|
26
|
+
console.group("\u274C Redux Action Failed: ".concat(action.type));
|
|
27
|
+
console.log('Error:', action.payload);
|
|
28
|
+
console.log('Action:', action);
|
|
31
29
|
console.groupEnd();
|
|
32
30
|
}
|
|
33
31
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/store/middleware.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,8CAA8C;AAC9C,MAAM,CAAC,IAAM,eAAe,GAAe,UAAC,KAAK,IAAK,OAAA,UAAC,IAAI,IAAK,OAAA,UAAC,MAAW;IAC1E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,EAAE,+BAAwB,MAAM,CAAC,IAAI,CAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,EAP+D,CAO/D,EAPqD,CAOrD,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/store/middleware.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,8CAA8C;AAC9C,MAAM,CAAC,IAAM,eAAe,GAAe,UAAC,KAAK,IAAK,OAAA,UAAC,IAAI,IAAK,OAAA,UAAC,MAAW;IAC1E,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,EAAE,+BAAwB,MAAM,CAAC,IAAI,CAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,EAP+D,CAO/D,EAPqD,CAOrD,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,IAAM,gBAAgB,GAAe,UAAC,KAAK,IAAK,OAAA,UAAC,IAAI,IAAK,OAAA,UAAC,MAAW;IAC3E,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5B,sDAAsD;IACtD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,sCAA0B,MAAM,CAAC,IAAI,CAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,EAZgE,CAYhE,EAZsD,CAYtD,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,IAAM,gBAAgB;IAC3B,eAAe;GACZ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OACtE,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export declare const rootReducer: import("@reduxjs/toolkit").Reducer<{
|
|
2
2
|
api: import("@reduxjs/toolkit/query").CombinedState<{}, "AppNotification", "api">;
|
|
3
|
+
auth: import("./slices/authSlice").AuthState;
|
|
3
4
|
appNotifications: import("./slices/appNotificationsSlice").AppNotificationsState;
|
|
4
5
|
}, import("@reduxjs/toolkit").UnknownAction, Partial<{
|
|
5
6
|
api: import("@reduxjs/toolkit/query").CombinedState<{}, "AppNotification", "api"> | undefined;
|
|
7
|
+
auth: import("./slices/authSlice").AuthState | undefined;
|
|
6
8
|
appNotifications: import("./slices/appNotificationsSlice").AppNotificationsState | undefined;
|
|
7
9
|
}>>;
|
|
8
10
|
export type RootState = ReturnType<typeof rootReducer>;
|
|
@@ -2,11 +2,13 @@ var _a;
|
|
|
2
2
|
import { combineReducers } from "@reduxjs/toolkit";
|
|
3
3
|
import { baseApi } from "./api/baseApi";
|
|
4
4
|
import { appNotificationsSlice } from "./slices/appNotificationsSlice";
|
|
5
|
+
import authReducer from "./slices/authSlice";
|
|
5
6
|
// Combine all reducers
|
|
6
7
|
export var rootReducer = combineReducers((_a = {},
|
|
7
8
|
// API slice reducer (manages RTK Query cache)
|
|
8
9
|
_a[baseApi.reducerPath] = baseApi.reducer,
|
|
9
10
|
// Feature slices
|
|
11
|
+
_a.auth = authReducer,
|
|
10
12
|
_a.appNotifications = appNotificationsSlice.reducer,
|
|
11
13
|
_a));
|
|
12
14
|
//# sourceMappingURL=rootReducer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rootReducer.js","sourceRoot":"","sources":["../../../src/store/rootReducer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"rootReducer.js","sourceRoot":"","sources":["../../../src/store/rootReducer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,uBAAuB;AACvB,MAAM,CAAC,IAAM,WAAW,GAAG,eAAe;IACxC,8CAA8C;IAC9C,GAAC,OAAO,CAAC,WAAW,IAAG,OAAO,CAAC,OAAO;IAEtC,iBAAiB;IACjB,OAAI,GAAE,WAAW;IACjB,mBAAgB,GAAE,qBAAqB,CAAC,OAAO;QAM/C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { RootState } from '../index';
|
|
2
|
+
import type { AuthUser } from '../../interfaces/models/User';
|
|
3
|
+
export interface AuthState {
|
|
4
|
+
accessToken: string | null;
|
|
5
|
+
refreshToken: string | null;
|
|
6
|
+
user: AuthUser | null;
|
|
7
|
+
loadingInitial: boolean;
|
|
8
|
+
isAuthenticating: boolean;
|
|
9
|
+
initialized: boolean;
|
|
10
|
+
signedToken: string | null;
|
|
11
|
+
}
|
|
12
|
+
export declare const setTokens: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
13
|
+
accessToken: string | null;
|
|
14
|
+
refreshToken?: string | null;
|
|
15
|
+
}, "auth/setTokens">, clearTokens: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"auth/clearTokens">, setUser: import("@reduxjs/toolkit").ActionCreatorWithPayload<AuthUser | null, "auth/setUser">, setLoadingInitial: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "auth/setLoadingInitial">, setAuthenticating: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "auth/setAuthenticating">, setInitialized: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "auth/setInitialized">, setSignedToken: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "auth/setSignedToken">, resetAuth: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"auth/resetAuth">, setRefreshToken: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "auth/setRefreshToken">;
|
|
16
|
+
export declare const selectAccessToken: (state: RootState) => string | null;
|
|
17
|
+
export declare const selectRefreshToken: (state: RootState) => string | null;
|
|
18
|
+
export declare const selectUser: (state: RootState) => AuthUser | null;
|
|
19
|
+
export declare const selectLoadingInitial: (state: RootState) => boolean;
|
|
20
|
+
export declare const selectIsAuthenticating: (state: RootState) => boolean;
|
|
21
|
+
export declare const selectInitialized: (state: RootState) => boolean;
|
|
22
|
+
export declare const selectSignedToken: (state: RootState) => string | null;
|
|
23
|
+
declare const _default: import("@reduxjs/toolkit").Reducer<AuthState>;
|
|
24
|
+
export default _default;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
var initialState = {
|
|
4
|
+
accessToken: null,
|
|
5
|
+
refreshToken: null,
|
|
6
|
+
user: null,
|
|
7
|
+
loadingInitial: true,
|
|
8
|
+
isAuthenticating: false,
|
|
9
|
+
initialized: false,
|
|
10
|
+
signedToken: null,
|
|
11
|
+
};
|
|
12
|
+
var authSlice = createSlice({
|
|
13
|
+
name: 'auth',
|
|
14
|
+
initialState: initialState,
|
|
15
|
+
reducers: {
|
|
16
|
+
// Token management
|
|
17
|
+
setTokens: function (state, action) {
|
|
18
|
+
state.accessToken = action.payload.accessToken;
|
|
19
|
+
if (action.payload.refreshToken !== undefined) {
|
|
20
|
+
state.refreshToken = action.payload.refreshToken;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
clearTokens: function (state) {
|
|
24
|
+
state.accessToken = null;
|
|
25
|
+
state.refreshToken = null;
|
|
26
|
+
},
|
|
27
|
+
// User management
|
|
28
|
+
setUser: function (state, action) {
|
|
29
|
+
state.user = action.payload;
|
|
30
|
+
},
|
|
31
|
+
// Loading states
|
|
32
|
+
setLoadingInitial: function (state, action) {
|
|
33
|
+
state.loadingInitial = action.payload;
|
|
34
|
+
},
|
|
35
|
+
setAuthenticating: function (state, action) {
|
|
36
|
+
state.isAuthenticating = action.payload;
|
|
37
|
+
},
|
|
38
|
+
// Initialization
|
|
39
|
+
setInitialized: function (state, action) {
|
|
40
|
+
state.initialized = action.payload;
|
|
41
|
+
},
|
|
42
|
+
setSignedToken: function (state, action) {
|
|
43
|
+
state.signedToken = action.payload;
|
|
44
|
+
},
|
|
45
|
+
// Complete auth reset (for signout)
|
|
46
|
+
resetAuth: function (state) {
|
|
47
|
+
state.accessToken = null;
|
|
48
|
+
state.refreshToken = null;
|
|
49
|
+
state.user = null;
|
|
50
|
+
state.isAuthenticating = false;
|
|
51
|
+
// Keep loadingInitial and initialized as they are
|
|
52
|
+
},
|
|
53
|
+
// Individual token setter for compatibility
|
|
54
|
+
setRefreshToken: function (state, action) {
|
|
55
|
+
state.refreshToken = action.payload;
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
export var setTokens = (_a = authSlice.actions, _a.setTokens), clearTokens = _a.clearTokens, setUser = _a.setUser, setLoadingInitial = _a.setLoadingInitial, setAuthenticating = _a.setAuthenticating, setInitialized = _a.setInitialized, setSignedToken = _a.setSignedToken, resetAuth = _a.resetAuth, setRefreshToken = _a.setRefreshToken;
|
|
60
|
+
// Selectors
|
|
61
|
+
export var selectAccessToken = function (state) { return state.auth.accessToken; };
|
|
62
|
+
export var selectRefreshToken = function (state) { return state.auth.refreshToken; };
|
|
63
|
+
export var selectUser = function (state) { return state.auth.user; };
|
|
64
|
+
export var selectLoadingInitial = function (state) { return state.auth.loadingInitial; };
|
|
65
|
+
export var selectIsAuthenticating = function (state) { return state.auth.isAuthenticating; };
|
|
66
|
+
export var selectInitialized = function (state) { return state.auth.initialized; };
|
|
67
|
+
export var selectSignedToken = function (state) { return state.auth.signedToken; };
|
|
68
|
+
export default authSlice.reducer;
|
|
69
|
+
//# sourceMappingURL=authSlice.js.map
|