@techstuff-dev/foundation-api-utils 1.9.0 → 1.11.0

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.
@@ -32,6 +32,7 @@ export type UserDetails = {
32
32
  firstName?: string;
33
33
  lastName?: string;
34
34
  userEmail?: string;
35
+ avatar?: string;
35
36
  termsAccepted?: string;
36
37
  dateOfBirth?: string;
37
38
  contactPreference: boolean;
@@ -102,11 +103,12 @@ export interface AuthState {
102
103
  userEmail?: string;
103
104
  lastName?: string;
104
105
  firstName?: string;
106
+ avatar?: string;
105
107
  dateOfBirth?: string;
106
108
  termsAccepted: any;
107
109
  contactPreference: any;
108
110
  uuid?: string;
109
- subscription?: any;
111
+ subscription?: string;
110
112
  customerId?: string;
111
113
  };
112
114
  email?: string;
@@ -187,8 +189,134 @@ export interface UpdateUserRequest {
187
189
  lastName: string;
188
190
  termsAccepted: string;
189
191
  userEmail: string;
192
+ avatar?: string;
190
193
  uuid: string;
191
194
  }
192
195
  export interface UpdateUserResponse {
193
196
  results: string;
194
197
  }
198
+ export interface UserSubRequest {
199
+ id: string;
200
+ email: string;
201
+ sub: string;
202
+ }
203
+ export interface UserSubResponse {
204
+ response: {
205
+ id: string;
206
+ object: string;
207
+ address: null;
208
+ balance: number;
209
+ created: number;
210
+ currency: string;
211
+ default_currency: string;
212
+ default_source: null;
213
+ delinquent: boolean;
214
+ description: null;
215
+ discount: null;
216
+ email: string;
217
+ invoice_prefix: string;
218
+ invoice_settings: {
219
+ custom_fields: null;
220
+ default_payment_method: string;
221
+ footer: null;
222
+ rendering_options: null;
223
+ };
224
+ livemode: boolean;
225
+ metadata: {};
226
+ name: string;
227
+ phone: null;
228
+ preferred_locales: [];
229
+ shipping: null;
230
+ sources: {
231
+ object: string;
232
+ data: [];
233
+ has_more: boolean;
234
+ total_count: number;
235
+ url: string;
236
+ };
237
+ subscriptions: {
238
+ object: string;
239
+ data: [];
240
+ has_more: boolean;
241
+ total_count: number;
242
+ url: string;
243
+ };
244
+ tax_exempt: string;
245
+ tax_ids: {
246
+ object: string;
247
+ data: [];
248
+ has_more: boolean;
249
+ total_count: number;
250
+ url: string;
251
+ };
252
+ test_clock: null;
253
+ };
254
+ customerId: string;
255
+ subscription: {
256
+ amount: number;
257
+ cancelAt: null;
258
+ created: number;
259
+ currency: string;
260
+ id: string;
261
+ interval: string;
262
+ nextPayment: number;
263
+ planDescription: string;
264
+ planID: string;
265
+ status: string;
266
+ };
267
+ payment: {
268
+ response: {
269
+ id: string;
270
+ object: string;
271
+ allow_redisplay: string;
272
+ billing_details: {
273
+ address: {
274
+ city: null;
275
+ country: null;
276
+ line1: null;
277
+ line2: null;
278
+ postal_code: null;
279
+ state: null;
280
+ };
281
+ email: null;
282
+ name: string;
283
+ phone: null;
284
+ };
285
+ card: {
286
+ brand: string;
287
+ checks: {
288
+ address_line1_check: null;
289
+ address_postal_code_check: null;
290
+ cvc_check: string;
291
+ };
292
+ country: string;
293
+ display_brand: string;
294
+ exp_month: number;
295
+ exp_year: number;
296
+ fingerprint: string;
297
+ funding: string;
298
+ generated_from: null;
299
+ last4: string;
300
+ networks: {
301
+ available: string[];
302
+ preferred: null;
303
+ };
304
+ three_d_secure_usage: {
305
+ supported: boolean;
306
+ };
307
+ wallet: null;
308
+ };
309
+ created: number;
310
+ customer: string;
311
+ livemode: boolean;
312
+ metadata: {};
313
+ type: string;
314
+ };
315
+ formatted: {
316
+ id: string;
317
+ maskedNumber: string;
318
+ expirationDate: string;
319
+ cardType: string;
320
+ };
321
+ };
322
+ }
package/dist/index.esm.js CHANGED
@@ -85,6 +85,7 @@ var initialState = {
85
85
  details: {
86
86
  userSub: '',
87
87
  uuid: '',
88
+ subscription: '',
88
89
  subscriptionDetails: {
89
90
  status: '',
90
91
  },
@@ -114,7 +115,7 @@ var authSlice = createSlice({
114
115
  initialState: initialState,
115
116
  reducers: {
116
117
  setCredentials: function (state, data) {
117
- return __assign(__assign({}, state), { session: data.payload.accessToken, authenticated: true, verifying: true, user: data.payload });
118
+ return __assign(__assign({}, state), { session: data.payload.accessToken, authenticated: true, verifying: true, user: __assign(__assign({}, state.user), data.payload) });
118
119
  },
119
120
  resetCreating: function (state) {
120
121
  return __assign(__assign({}, state), { creating: {
@@ -122,6 +123,9 @@ var authSlice = createSlice({
122
123
  payment: '',
123
124
  } });
124
125
  },
126
+ updateSubscription: function (state, data) {
127
+ return __assign(__assign({}, state), { user: __assign(__assign({}, state.user), { details: __assign(__assign({}, state.user.details), { subscription: data.payload.subscription, subscriptionDetails: data.payload.subscriptionDetails }) }) });
128
+ },
125
129
  logout: function () { return initialState; },
126
130
  },
127
131
  selectors: {
@@ -135,12 +139,28 @@ var authSlice = createSlice({
135
139
  getUserSession: function (auth) { return (auth.authenticated ? auth.session : false); },
136
140
  selectCurrentUserSub: function (auth) { return auth.user.details.uuid; },
137
141
  selectCurrentUserRefreshToken: function (auth) { return auth.user.refreshToken; },
142
+ selectUserTokens: function (auth) {
143
+ return {
144
+ accessToken: auth.user.accessToken,
145
+ refreshToken: auth.user.refreshToken,
146
+ idToken: auth.user.idToken,
147
+ };
148
+ },
149
+ selectUserSubscriptionStatus: function (auth) {
150
+ return auth.user.details.subscriptionDetails.status;
151
+ },
152
+ selectSubscription: function (auth) {
153
+ return auth.user.details.subscription;
154
+ },
155
+ selectSubscriptionPrice: function (auth) {
156
+ return auth.user.details.subscriptionDetails.price;
157
+ },
138
158
  },
139
159
  });
140
160
  // Action creators are generated for each case reducer function.
141
- var setCredentials = (_a$1 = authSlice.actions, _a$1.setCredentials), resetCreating = _a$1.resetCreating, logout = _a$1.logout;
161
+ var setCredentials = (_a$1 = authSlice.actions, _a$1.setCredentials), resetCreating = _a$1.resetCreating, logout = _a$1.logout, updateSubscription = _a$1.updateSubscription;
142
162
  // Selectors returned by `slice.selectors` take the root state as their first argument.
143
- var isAuthenticated = (_b$1 = authSlice.selectors, _b$1.isAuthenticated); _b$1.selectAccessToken; _b$1.selectRefreshToken; _b$1.selectCurrentUser; _b$1.selectUserCreating; _b$1.selectUserCreatingDetails; _b$1.isVerifying; _b$1.getUserSession; _b$1.selectCurrentUserSub; _b$1.selectCurrentUserRefreshToken;
163
+ var isAuthenticated = (_b$1 = authSlice.selectors, _b$1.isAuthenticated), selectAccessToken = _b$1.selectAccessToken, selectRefreshToken = _b$1.selectRefreshToken, selectCurrentUser = _b$1.selectCurrentUser, selectUserCreating = _b$1.selectUserCreating, selectUserCreatingDetails = _b$1.selectUserCreatingDetails, isVerifying = _b$1.isVerifying, getUserSession = _b$1.getUserSession, selectCurrentUserSub = _b$1.selectCurrentUserSub, selectCurrentUserRefreshToken = _b$1.selectCurrentUserRefreshToken, selectUserTokens = _b$1.selectUserTokens, selectUserSubscriptionStatus = _b$1.selectUserSubscriptionStatus, selectSubscription = _b$1.selectSubscription, selectSubscriptionPrice = _b$1.selectSubscriptionPrice;
144
164
  authSlice.reducer;
145
165
 
146
166
  // TODO: typing.
@@ -530,11 +550,11 @@ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
530
550
  var isWeb = process.env.NEXT_PUBLIC_WEB_APP;
531
551
  var ENV = isWeb ? process.env : require('react-native-config').default;
532
552
  // export const ENV = process.env;
533
- var API_PREFIX = ((_a = process.env) === null || _a === void 0 ? void 0 : _a.NEXT_PUBLIC_API_PREFIX) || ENV.API_PREFIX;
553
+ ((_a = process.env) === null || _a === void 0 ? void 0 : _a.NEXT_PUBLIC_API_PREFIX) || ENV.API_PREFIX;
534
554
  // Auth specific API
535
555
  var API_AUTH_PREFIX = ((_b = process.env) === null || _b === void 0 ? void 0 : _b.NEXT_PUBLIC_API_AUTH_PREFIX) || ENV.API_AUTH_PREFIX;
536
556
  // Payments specific API
537
- ((_c = process.env) === null || _c === void 0 ? void 0 : _c.NEXT_PUBLIC_API_PAYMENTS_PREFIX) || ENV.API_PAYMENTS_PREFIX;
557
+ var API_PAYMENTS_PREFIX = ((_c = process.env) === null || _c === void 0 ? void 0 : _c.NEXT_PUBLIC_API_PAYMENTS_PREFIX) || ENV.API_PAYMENTS_PREFIX;
538
558
  ((_d = process.env) === null || _d === void 0 ? void 0 : _d.NEXT_PUBLIC_APP_BASE_URL) || ENV.APP_BASE_URL;
539
559
  var APP_ES_INSTANCE = ((_e = process.env) === null || _e === void 0 ? void 0 : _e.NEXT_PUBLIC_APP_ES_INSTANCE) || ENV.APP_ES_INSTANCE;
540
560
  var APP_ES_AUTH = ((_f = process.env) === null || _f === void 0 ? void 0 : _f.NEXT_PUBLIC_APP_ES_AUTH) || ENV.APP_ES_AUTH;
@@ -557,8 +577,19 @@ var APP_ES_AUTH = ((_f = process.env) === null || _f === void 0 ? void 0 : _f.NE
557
577
  var authApi = createApi({
558
578
  reducerPath: 'authApi',
559
579
  baseQuery: fetchBaseQuery({
560
- baseUrl: API_PREFIX || API_AUTH_PREFIX,
561
- prepareHeaders: function (headers) {
580
+ baseUrl: API_AUTH_PREFIX,
581
+ prepareHeaders: function (headers, _a) {
582
+ var getState = _a.getState;
583
+ var state = getState();
584
+ headers.set('Content-Type', 'application/json');
585
+ // add accessToken to headers from slice using selectAccessToken selector
586
+ var tokens = selectUserTokens(state);
587
+ console.log('tokens: ', tokens);
588
+ if (tokens) {
589
+ headers.set('accesstoken', tokens.accessToken);
590
+ headers.set('idtoken', tokens.idToken);
591
+ headers.set('refreshtoken', tokens.refreshToken);
592
+ }
562
593
  return headers;
563
594
  },
564
595
  credentials: 'include',
@@ -690,7 +721,7 @@ var authApi = createApi({
690
721
  }); },
691
722
  }),
692
723
  logout: builder.query({
693
- query: function (data) { return ({
724
+ query: function () { return ({
694
725
  url: '/user/logout',
695
726
  method: 'POST',
696
727
  }); },
@@ -811,7 +842,7 @@ var authApi = createApi({
811
842
  }),
812
843
  getUserInfo: builder.query({
813
844
  query: function (uuid) { return ({
814
- url: "/user/".concat(uuid),
845
+ url: "/data/user/".concat(uuid),
815
846
  method: 'GET',
816
847
  }); },
817
848
  }),
@@ -845,7 +876,7 @@ var contentApi = createApi({
845
876
  return headers;
846
877
  },
847
878
  }),
848
- tagTypes: ['Data'],
879
+ tagTypes: ['Data', 'Workout'],
849
880
  // keepUnusedDataFor: 300,
850
881
  endpoints: function (builder) { return ({
851
882
  getData: builder.query({
@@ -916,6 +947,7 @@ var contentApi = createApi({
916
947
  },
917
948
  });
918
949
  },
950
+ providesTags: ['Workout'],
919
951
  }),
920
952
  }); },
921
953
  });
@@ -926,6 +958,68 @@ contentApi.useGetDataQuery; contentApi.useLazyGetDataQuery;
926
958
  // useLazyGetWorkoutsQuery,
927
959
  contentApi.useGetWorkoutByIdQuery; contentApi.useLazyGetWorkoutByIdQuery;
928
960
 
961
+ console.log('API_PAYMENTS_PREFIX: ', API_PAYMENTS_PREFIX);
962
+ var paymentApi = createApi({
963
+ reducerPath: 'paymentApi',
964
+ baseQuery: fetchBaseQuery({
965
+ baseUrl: API_PAYMENTS_PREFIX,
966
+ prepareHeaders: function (headers, _a) {
967
+ var getState = _a.getState;
968
+ var state = getState();
969
+ headers.set('Content-Type', 'application/json');
970
+ // add accessToken to headers from slice using selectAccessToken selector
971
+ var tokens = selectUserTokens(state);
972
+ console.log('tokens: ', tokens);
973
+ if (tokens) {
974
+ headers.set('accesstoken', tokens.accessToken);
975
+ headers.set('idtoken', tokens.idToken);
976
+ headers.set('refreshtoken', tokens.refreshToken);
977
+ }
978
+ return headers;
979
+ },
980
+ credentials: 'include',
981
+ }),
982
+ tagTypes: ['UserSubscription'],
983
+ keepUnusedDataFor: 300,
984
+ endpoints: function (builder) { return ({
985
+ /**
986
+ * USER API.
987
+ */
988
+ checkUserSubscription: builder.query({
989
+ query: function (data) { return ({
990
+ url: '/payment/subscriber',
991
+ method: 'POST',
992
+ body: {
993
+ id: data.id,
994
+ email: data.email,
995
+ sub: data.sub,
996
+ },
997
+ }); },
998
+ // async onQueryStarted(arg, { dispatch, queryFulfilled }) {
999
+ // try {
1000
+ // const response = await queryFulfilled;
1001
+ // const decoded = jwtDecode(response?.data?.idToken);
1002
+ // const profile = formatUserPayload(decoded as UserPayload);
1003
+ // const creds = {
1004
+ // accessToken: response?.data?.accessToken,
1005
+ // idToken: response?.data?.idToken,
1006
+ // refreshToken: response?.data?.refreshToken,
1007
+ // accessTokenExpiry: response?.data?.accessTokenExpiry,
1008
+ // details: { ...profile },
1009
+ // };
1010
+ // dispatch(setCredentials(creds));
1011
+ // } catch (err) {
1012
+ // // `onError` log out user.
1013
+ // dispatch(logout());
1014
+ // }
1015
+ // },
1016
+ providesTags: ['UserSubscription'],
1017
+ }),
1018
+ }); },
1019
+ });
1020
+ // Export hooks for usage in functional components.
1021
+ paymentApi.useCheckUserSubscriptionQuery; paymentApi.useLazyCheckUserSubscriptionQuery;
1022
+
929
1023
  var useLoggedIn = function () {
930
1024
  var isLoggedIn = useSelector(isAuthenticated);
931
1025
  return useMemo(function () { return isLoggedIn; }, [isLoggedIn]);
@@ -957,7 +1051,7 @@ function createPersistStorage() {
957
1051
  }
958
1052
 
959
1053
  // Infer the `RootState` type from the root reducer
960
- var rootReducer = combineSlices(authSlice, authApi, contentApi);
1054
+ var rootReducer = combineSlices(authSlice, authApi, contentApi, paymentApi);
961
1055
  // eg. ['auth', 'creating'], or an empty array if you don't want to whitelist any.
962
1056
  // const storageWhiteList: string[] = [];
963
1057
  // `makeStore` encapsulates the store configuration to allow
@@ -971,13 +1065,18 @@ var makeNativeStore = function () {
971
1065
  storage: storage,
972
1066
  // whitelist: storageWhiteList,
973
1067
  };
974
- var middlewares = [authApi.middleware, contentApi.middleware];
1068
+ var middlewares = [
1069
+ authApi.middleware,
1070
+ contentApi.middleware,
1071
+ paymentApi.middleware,
1072
+ ];
975
1073
  // `combineSlices` automatically combines the reducers using
976
1074
  // their `reducerPath`s, therefore we no longer need to call `combineReducers`.
977
1075
  var persistedReducer = persistReducer(persistConfig, rootReducer);
978
1076
  var customEnhancers = [];
979
1077
  // Make sure compilation stops in next.js web app.
980
- if (!process.env.NEXT_PUBLIC_WEB_APP && process.env.NODE_ENV === 'development') {
1078
+ if (!process.env.NEXT_PUBLIC_WEB_APP &&
1079
+ process.env.NODE_ENV === 'development') {
981
1080
  var Reactotron = require('reactotron-react-native').default;
982
1081
  var reactotronRedux = require('reactotron-redux').reactotronRedux;
983
1082
  var reactotron = Reactotron.configure({ name: 'nrgAtHome' })
@@ -1012,7 +1111,11 @@ var makeWebStore = function () {
1012
1111
  storage: storage,
1013
1112
  // whitelist: storageWhiteList,
1014
1113
  };
1015
- var middlewares = [authApi.middleware, contentApi.middleware];
1114
+ var middlewares = [
1115
+ authApi.middleware,
1116
+ contentApi.middleware,
1117
+ paymentApi.middleware,
1118
+ ];
1016
1119
  // `combineSlices` automatically combines the reducers using
1017
1120
  // their `reducerPath`s, therefore we no longer need to call `combineReducers`.
1018
1121
  var persistedReducer = persistReducer(persistConfig, rootReducer);
@@ -1038,5 +1141,5 @@ var makeWebStore = function () {
1038
1141
  var nativeStore = !isWeb && makeNativeStore();
1039
1142
  var webStore = isWeb && makeWebStore();
1040
1143
 
1041
- export { authApi, contentApi, formatChallengeDays, formatChallenges, formatFaqs, formatGuests, formatLongform, formatPages, formatPress, formatPromos, formatSchedule, formatSections, formatSeries, formatSettings, formatShortform, formatUserPayload, formatVideos, formatWorkout, nativeStore, useAppDispatch, useAppSelector, useAppStore, useLoggedIn, webStore };
1144
+ export { authApi, authSlice, contentApi, formatChallengeDays, formatChallenges, formatFaqs, formatGuests, formatLongform, formatPages, formatPress, formatPromos, formatSchedule, formatSections, formatSeries, formatSettings, formatShortform, formatUserPayload, formatVideos, formatWorkout, getUserSession, isAuthenticated, isVerifying, logout, nativeStore, paymentApi, resetCreating, selectAccessToken, selectCurrentUser, selectCurrentUserRefreshToken, selectCurrentUserSub, selectRefreshToken, selectSubscription, selectSubscriptionPrice, selectUserCreating, selectUserCreatingDetails, selectUserSubscriptionStatus, selectUserTokens, setCredentials, updateSubscription, useAppDispatch, useAppSelector, useAppStore, useLoggedIn, webStore };
1042
1145
  //# sourceMappingURL=index.esm.js.map