@casual-simulation/aux-records 3.2.2 → 3.2.4-alpha.5857788915

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.
@@ -29,6 +29,14 @@ export interface SubscriptionConfiguration {
29
29
  * Defaults to true.
30
30
  */
31
31
  purchasable?: boolean;
32
+ /**
33
+ * Whether the subscription is only purchasable by users.
34
+ */
35
+ userOnly?: boolean;
36
+ /**
37
+ * Whether the subscription is only purchasable by studios.
38
+ */
39
+ studioOnly?: boolean;
32
40
  /**
33
41
  * The tier that the subscription represents.
34
42
  * Defaults to "beta".
@@ -3,6 +3,7 @@ import { AuthStore } from './AuthStore';
3
3
  import { StripeInterface } from './StripeInterface';
4
4
  import { ServerError } from './Errors';
5
5
  import { SubscriptionConfiguration } from './SubscriptionConfiguration';
6
+ import { RecordsStore } from './RecordsStore';
6
7
  /**
7
8
  * Defines a class that is able to handle subscriptions.
8
9
  */
@@ -10,13 +11,15 @@ export declare class SubscriptionController {
10
11
  private _stripe;
11
12
  private _auth;
12
13
  private _authStore;
14
+ private _recordsStore;
13
15
  private _config;
14
- constructor(stripe: StripeInterface, auth: AuthController, authStore: AuthStore, config: SubscriptionConfiguration);
16
+ constructor(stripe: StripeInterface, auth: AuthController, authStore: AuthStore, recordsStore: RecordsStore, config: SubscriptionConfiguration);
15
17
  /**
16
18
  * Gets the status of the given user's scription.
17
19
  * @param request
18
20
  */
19
21
  getSubscriptionStatus(request: GetSubscriptionStatusRequest): Promise<GetSubscriptionStatusResult>;
22
+ private _getPurchasableSubscriptionsForRole;
20
23
  private _getPurchasableSubscriptions;
21
24
  /**
22
25
  * Creates a link that the user can be redirected to in order to manage their subscription.
@@ -45,7 +48,11 @@ export interface CreateManageSubscriptionRequest {
45
48
  /**
46
49
  * The User ID that the management session should be created for.
47
50
  */
48
- userId: string;
51
+ userId?: string;
52
+ /**
53
+ * The ID of the studio that the management session should be created for.
54
+ */
55
+ studioId?: string;
49
56
  /**
50
57
  * The subscription that was selected for purcahse by the user.
51
58
  */
@@ -73,7 +80,7 @@ export interface CreateManageSubscriptionFailure {
73
80
  /**
74
81
  * The error code.
75
82
  */
76
- errorCode: ServerError | ValidateSessionKeyFailure['errorCode'] | 'unacceptable_user_id' | 'unacceptable_request' | 'price_does_not_match' | 'not_supported';
83
+ errorCode: ServerError | ValidateSessionKeyFailure['errorCode'] | 'unacceptable_user_id' | 'unacceptable_studio_id' | 'unacceptable_request' | 'price_does_not_match' | 'not_supported';
77
84
  /**
78
85
  * The error message.
79
86
  */
@@ -87,7 +94,11 @@ export interface GetSubscriptionStatusRequest {
87
94
  /**
88
95
  * The ID of the user whose subscription status should be retrieved.
89
96
  */
90
- userId: string;
97
+ userId?: string;
98
+ /**
99
+ * The ID of the studio whose subscrition status should be retrieved.
100
+ */
101
+ studioId?: string;
91
102
  }
92
103
  export type GetSubscriptionStatusResult = GetSubscriptionStatusSuccess | GetSubscriptionStatusFailure;
93
104
  export interface GetSubscriptionStatusSuccess {
@@ -95,7 +106,11 @@ export interface GetSubscriptionStatusSuccess {
95
106
  /**
96
107
  * The ID of the user.
97
108
  */
98
- userId: string;
109
+ userId?: string;
110
+ /**
111
+ * The ID of the studio.
112
+ */
113
+ studioId?: string;
99
114
  /**
100
115
  * The publishable stripe API key.
101
116
  */
@@ -171,6 +186,10 @@ export interface SubscriptionStatus {
171
186
  * The currency that was used.
172
187
  */
173
188
  currency: string;
189
+ /**
190
+ * The feature list for the subscription.
191
+ */
192
+ featureList?: string[];
174
193
  }
175
194
  export interface PurchasableSubscription {
176
195
  /**
@@ -220,7 +239,7 @@ export interface GetSubscriptionStatusFailure {
220
239
  /**
221
240
  * The error code.
222
241
  */
223
- errorCode: ServerError | ValidateSessionKeyFailure['errorCode'] | 'unacceptable_user_id' | 'not_supported';
242
+ errorCode: ServerError | ValidateSessionKeyFailure['errorCode'] | 'unacceptable_user_id' | 'unacceptable_studio_id' | 'unacceptable_request' | 'not_supported';
224
243
  /**
225
244
  * The error message.
226
245
  */
@@ -13,10 +13,11 @@ import { isActiveSubscription, tryParseJson } from './Utils';
13
13
  * Defines a class that is able to handle subscriptions.
14
14
  */
15
15
  export class SubscriptionController {
16
- constructor(stripe, auth, authStore, config) {
16
+ constructor(stripe, auth, authStore, recordsStore, config) {
17
17
  this._stripe = stripe;
18
18
  this._auth = auth;
19
19
  this._authStore = authStore;
20
+ this._recordsStore = recordsStore;
20
21
  this._config = config;
21
22
  }
22
23
  /**
@@ -33,39 +34,97 @@ export class SubscriptionController {
33
34
  };
34
35
  }
35
36
  try {
36
- if (typeof request.userId !== 'string' || request.userId === '') {
37
+ if (request.userId && request.studioId) {
37
38
  return {
38
39
  success: false,
39
- errorCode: 'unacceptable_user_id',
40
- errorMessage: 'The given user ID is invalid. It must be a correctly formatted string.',
40
+ errorCode: 'unacceptable_request',
41
+ errorMessage: 'The given request is invalid. It must not specify both a user ID and a studio ID.',
41
42
  };
42
43
  }
43
- const keyResult = yield this._auth.validateSessionKey(request.sessionKey);
44
- if (keyResult.success === false) {
45
- return keyResult;
44
+ if (request.userId) {
45
+ if (typeof request.userId !== 'string' ||
46
+ request.userId === '') {
47
+ return {
48
+ success: false,
49
+ errorCode: 'unacceptable_user_id',
50
+ errorMessage: 'The given user ID is invalid. It must be a correctly formatted string.',
51
+ };
52
+ }
46
53
  }
47
- else if (keyResult.userId !== request.userId) {
48
- console.log('[SubscriptionController] [getSubscriptionStatus] Request User ID doesnt match session key User ID!');
54
+ else if (request.studioId) {
55
+ if (typeof request.studioId !== 'string' ||
56
+ request.studioId === '') {
57
+ return {
58
+ success: false,
59
+ errorCode: 'unacceptable_studio_id',
60
+ errorMessage: 'The given studio ID is invalid. It must be a correctly formatted string.',
61
+ };
62
+ }
63
+ }
64
+ else {
49
65
  return {
50
66
  success: false,
51
- errorCode: 'invalid_key',
52
- errorMessage: INVALID_KEY_ERROR_MESSAGE,
67
+ errorCode: 'unacceptable_request',
68
+ errorMessage: 'The given request is invalid. It must have a valid user ID or studio ID.',
53
69
  };
54
70
  }
55
- const user = yield this._authStore.findUser(keyResult.userId);
56
- let customerId = user.stripeCustomerId;
71
+ const keyResult = yield this._auth.validateSessionKey(request.sessionKey);
72
+ let customerId;
73
+ let role;
74
+ if (keyResult.success === false) {
75
+ return keyResult;
76
+ }
77
+ else {
78
+ if (request.userId) {
79
+ if (keyResult.userId !== request.userId) {
80
+ console.log('[SubscriptionController] [getSubscriptionStatus] Request User ID doesnt match session key User ID!');
81
+ return {
82
+ success: false,
83
+ errorCode: 'invalid_key',
84
+ errorMessage: INVALID_KEY_ERROR_MESSAGE,
85
+ };
86
+ }
87
+ const user = yield this._authStore.findUser(keyResult.userId);
88
+ customerId = user.stripeCustomerId;
89
+ role = 'user';
90
+ }
91
+ else if (request.studioId) {
92
+ const assignments = yield this._recordsStore.listStudioAssignments(request.studioId, {
93
+ userId: keyResult.userId,
94
+ role: 'admin',
95
+ });
96
+ if (assignments.length <= 0) {
97
+ console.log('[SubscriptionController] [getSubscriptionStatus] Request user does not have access to studio!');
98
+ return {
99
+ success: false,
100
+ errorCode: 'invalid_key',
101
+ errorMessage: INVALID_KEY_ERROR_MESSAGE,
102
+ };
103
+ }
104
+ const studio = yield this._recordsStore.getStudioById(request.studioId);
105
+ customerId = studio.stripeCustomerId;
106
+ role = 'studio';
107
+ }
108
+ }
109
+ // const user = await this._authStore.findUser(keyResult.userId);
110
+ // let customerId = user.stripeCustomerId;
57
111
  if (!customerId) {
58
112
  return {
59
113
  success: true,
60
114
  userId: keyResult.userId,
115
+ studioId: request.studioId,
61
116
  publishableKey: this._stripe.publishableKey,
62
117
  subscriptions: [],
63
- purchasableSubscriptions: yield this._getPurchasableSubscriptions(),
118
+ purchasableSubscriptions: yield this._getPurchasableSubscriptions(role),
64
119
  };
65
120
  }
66
121
  const listResult = yield this._stripe.listActiveSubscriptionsForCustomer(customerId);
67
122
  const subscriptions = listResult.subscriptions.map((s) => {
68
123
  const item = s.items[0];
124
+ const subscriptionInfo = this._config.subscriptions.find((sub) => {
125
+ return sub.eligibleProducts.some((p) => p === item.price.product.id);
126
+ });
127
+ const featureList = subscriptionInfo === null || subscriptionInfo === void 0 ? void 0 : subscriptionInfo.featureList;
69
128
  return {
70
129
  active: s.status === 'active',
71
130
  statusCode: s.status,
@@ -80,14 +139,16 @@ export class SubscriptionController {
80
139
  intervalCost: item.price.unit_amount,
81
140
  currency: item.price.currency,
82
141
  productName: item.price.product.name,
142
+ featureList,
83
143
  };
84
144
  });
85
145
  const purchasableSubscriptions = subscriptions.length > 0
86
146
  ? []
87
- : yield this._getPurchasableSubscriptions();
147
+ : yield this._getPurchasableSubscriptions(role);
88
148
  return {
89
149
  success: true,
90
150
  userId: keyResult.userId,
151
+ studioId: request.studioId,
91
152
  publishableKey: this._stripe.publishableKey,
92
153
  subscriptions,
93
154
  purchasableSubscriptions,
@@ -103,11 +164,21 @@ export class SubscriptionController {
103
164
  }
104
165
  });
105
166
  }
106
- _getPurchasableSubscriptions() {
167
+ _getPurchasableSubscriptionsForRole(role) {
168
+ return this._config.subscriptions.filter((s) => {
169
+ var _a, _b, _c;
170
+ const isPurchasable = (_a = s.purchasable) !== null && _a !== void 0 ? _a : true;
171
+ const isUserOnly = (_b = s.userOnly) !== null && _b !== void 0 ? _b : false;
172
+ const isStudioOnly = (_c = s.studioOnly) !== null && _c !== void 0 ? _c : false;
173
+ const matchesRole = (isUserOnly && role === 'user') ||
174
+ (isStudioOnly && role === 'studio') ||
175
+ (!isUserOnly && !isStudioOnly);
176
+ return isPurchasable && matchesRole;
177
+ });
178
+ }
179
+ _getPurchasableSubscriptions(role) {
107
180
  return __awaiter(this, void 0, void 0, function* () {
108
- const promises = this._config.subscriptions
109
- .filter((s) => { var _a; return (_a = s.purchasable) !== null && _a !== void 0 ? _a : true; })
110
- .map((s) => __awaiter(this, void 0, void 0, function* () {
181
+ const promises = this._getPurchasableSubscriptionsForRole(role).map((s) => __awaiter(this, void 0, void 0, function* () {
111
182
  return ({
112
183
  sub: s,
113
184
  info: yield this._stripe.getProductAndPriceInfo(s.product),
@@ -148,11 +219,38 @@ export class SubscriptionController {
148
219
  };
149
220
  }
150
221
  try {
151
- if (typeof request.userId !== 'string' || request.userId === '') {
222
+ if (request.userId && request.studioId) {
152
223
  return {
153
224
  success: false,
154
- errorCode: 'unacceptable_user_id',
155
- errorMessage: 'The given user ID is invalid. It must be a correctly formatted string.',
225
+ errorCode: 'unacceptable_request',
226
+ errorMessage: 'The given request is invalid. It must not specify both a user ID and a studio ID.',
227
+ };
228
+ }
229
+ if (request.userId) {
230
+ if (typeof request.userId !== 'string' ||
231
+ request.userId === '') {
232
+ return {
233
+ success: false,
234
+ errorCode: 'unacceptable_user_id',
235
+ errorMessage: 'The given user ID is invalid. It must be a correctly formatted string.',
236
+ };
237
+ }
238
+ }
239
+ else if (request.studioId) {
240
+ if (typeof request.studioId !== 'string' ||
241
+ request.studioId === '') {
242
+ return {
243
+ success: false,
244
+ errorCode: 'unacceptable_studio_id',
245
+ errorMessage: 'The given studio ID is invalid. It must be a correctly formatted string.',
246
+ };
247
+ }
248
+ }
249
+ else {
250
+ return {
251
+ success: false,
252
+ errorCode: 'unacceptable_request',
253
+ errorMessage: 'The given request is invalid. It must have a valid user ID or studio ID.',
156
254
  };
157
255
  }
158
256
  if (!!request.subscriptionId &&
@@ -172,27 +270,77 @@ export class SubscriptionController {
172
270
  };
173
271
  }
174
272
  const keyResult = yield this._auth.validateSessionKey(request.sessionKey);
273
+ let customerId;
274
+ let customerName;
275
+ let customerEmail;
276
+ let customerPhone;
277
+ let role;
278
+ let user;
279
+ let studio;
280
+ let customerMetadata = {};
281
+ let metadata = {};
175
282
  if (keyResult.success === false) {
176
283
  return keyResult;
177
284
  }
178
- else if (keyResult.userId !== request.userId) {
179
- console.log('[SubscriptionController] [createManageSubscriptionLink] Request User ID doesnt match session key User ID!');
180
- return {
181
- success: false,
182
- errorCode: 'invalid_key',
183
- errorMessage: INVALID_KEY_ERROR_MESSAGE,
184
- };
285
+ else if (request.userId) {
286
+ if (keyResult.userId !== request.userId) {
287
+ console.log('[SubscriptionController] [createManageSubscriptionLink] Request User ID doesnt match session key User ID!');
288
+ return {
289
+ success: false,
290
+ errorCode: 'invalid_key',
291
+ errorMessage: INVALID_KEY_ERROR_MESSAGE,
292
+ };
293
+ }
294
+ user = yield this._authStore.findUser(keyResult.userId);
295
+ customerId = user.stripeCustomerId;
296
+ customerName = user.name;
297
+ customerEmail = user.email;
298
+ customerPhone = user.phoneNumber;
299
+ metadata.userId = user.id;
300
+ customerMetadata.role = 'user';
301
+ customerMetadata.userId = user.id;
302
+ role = 'user';
303
+ console.log(`[SubscriptionController] [createManageSubscriptionLink] Creating a checkout/management session for User (${keyResult.userId}).`);
185
304
  }
186
- // if (this._config.subscriptions.length <= 0) {
187
- // return {
188
- // success: false,
189
- // errorCode: 'not_supported',
190
- // errorMessage: 'This method is not supported.',
191
- // };
192
- // }
193
- console.log(`[SubscriptionController] [createManageSubscriptionLink] Creating a checkout/management session for User (${keyResult.userId}).`);
194
- const user = yield this._authStore.findUser(keyResult.userId);
195
- let customerId = user.stripeCustomerId;
305
+ else if (request.studioId) {
306
+ const assignments = yield this._recordsStore.listStudioAssignments(request.studioId, {
307
+ role: 'admin',
308
+ });
309
+ const userAssignment = assignments.find((a) => a.userId === keyResult.userId);
310
+ if (!userAssignment) {
311
+ console.log('[SubscriptionController] [getSubscriptionStatus] Request user does not have access to studio!');
312
+ return {
313
+ success: false,
314
+ errorCode: 'invalid_key',
315
+ errorMessage: INVALID_KEY_ERROR_MESSAGE,
316
+ };
317
+ }
318
+ studio = yield this._recordsStore.getStudioById(request.studioId);
319
+ customerId = studio.stripeCustomerId;
320
+ customerName = studio.displayName;
321
+ customerMetadata.role = 'studio';
322
+ customerMetadata.studioId = studio.id;
323
+ metadata.studioId = studio.id;
324
+ let primaryAssignment;
325
+ if (userAssignment.isPrimaryContact) {
326
+ primaryAssignment = userAssignment;
327
+ }
328
+ else {
329
+ primaryAssignment = assignments.find((a) => a.isPrimaryContact);
330
+ }
331
+ if (primaryAssignment) {
332
+ customerEmail = primaryAssignment.user.email;
333
+ customerPhone = primaryAssignment.user.phoneNumber;
334
+ metadata.contactUserId = keyResult.userId;
335
+ customerMetadata.contactUserId = keyResult.userId;
336
+ }
337
+ role = 'studio';
338
+ console.log(`[SubscriptionController] [createManageSubscriptionLink] Creating a checkout/management session for Studio (userId: ${keyResult.userId}, studioId: ${studio.id}).`);
339
+ }
340
+ else {
341
+ throw new Error('Should not reach this point');
342
+ }
343
+ metadata.subjectId = keyResult.userId;
196
344
  if (!customerId) {
197
345
  if (this._config.subscriptions.length <= 0) {
198
346
  return {
@@ -203,16 +351,25 @@ export class SubscriptionController {
203
351
  }
204
352
  console.log('[SubscriptionController] [createManageSubscriptionLink] No Stripe Customer ID. Creating New Customer and Checkout Session in Stripe.');
205
353
  const result = yield this._stripe.createCustomer({
206
- name: user.name,
207
- email: user.email,
208
- phone: user.phoneNumber,
354
+ name: customerName,
355
+ email: customerEmail,
356
+ phone: customerPhone,
357
+ metadata: customerMetadata,
209
358
  });
210
- customerId = user.stripeCustomerId = result.id;
211
- console.log(`[SubscriptionController] [createManageSubscriptionLink] Saving Stripe Customer ID (${customerId}) to User Record (${user.id}).`);
212
- yield this._authStore.saveUser(Object.assign({}, user));
213
- return yield this._createCheckoutSession(request, user, customerId);
359
+ customerId = result.id;
360
+ if (user) {
361
+ user.stripeCustomerId = customerId;
362
+ console.log(`[SubscriptionController] [createManageSubscriptionLink] Saving Stripe Customer ID (${customerId}) to User Record (${user.id}).`);
363
+ yield this._authStore.saveUser(Object.assign({}, user));
364
+ }
365
+ else if (studio) {
366
+ studio.stripeCustomerId = customerId;
367
+ console.log(`[SubscriptionController] [createManageSubscriptionLink] Saving Stripe Customer ID (${customerId}) to Studio Record (${studio.id}).`);
368
+ yield this._recordsStore.updateStudio(Object.assign({}, studio));
369
+ }
370
+ return yield this._createCheckoutSession(request, customerId, metadata, role, user, studio);
214
371
  }
215
- console.log(`[SubscriptionController] [createManageSubscriptionLink] User (${user.id}) Has Stripe Customer ID (${user.stripeCustomerId}). Checking active subscriptions for customer.`);
372
+ console.log(`[SubscriptionController] [createManageSubscriptionLink] Has Stripe Customer ID (${customerId}). Checking active subscriptions for customer.`);
216
373
  const subs = yield this._stripe.listActiveSubscriptionsForCustomer(customerId);
217
374
  const hasSubscription = subs.subscriptions.some((s) => {
218
375
  const isManagable = s.status === 'active' ||
@@ -229,7 +386,7 @@ export class SubscriptionController {
229
386
  });
230
387
  if (hasSubscription) {
231
388
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Customer has a managable subscription. Creating a portal session.`);
232
- const session = yield this._stripe.createPortalSession(Object.assign(Object.assign({}, ((_a = this._config.portalConfig) !== null && _a !== void 0 ? _a : {})), { customer: customerId, return_url: this._config.returnUrl }));
389
+ const session = yield this._stripe.createPortalSession(Object.assign(Object.assign({}, ((_a = this._config.portalConfig) !== null && _a !== void 0 ? _a : {})), { customer: customerId, return_url: returnRoute(this._config.returnUrl, user, studio) }));
233
390
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Portal session success!`);
234
391
  return {
235
392
  success: true,
@@ -237,10 +394,10 @@ export class SubscriptionController {
237
394
  };
238
395
  }
239
396
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Customer does not have a managable subscription. Creating a checkout session.`);
240
- return yield this._createCheckoutSession(request, user, customerId);
397
+ return yield this._createCheckoutSession(request, customerId, metadata, role, user, studio);
241
398
  }
242
399
  catch (err) {
243
- console.log('[SubscriptionController] An error occurred while creating a manage subscription link:', err);
400
+ console.error('[SubscriptionController] An error occurred while creating a manage subscription link:', err);
244
401
  return {
245
402
  success: false,
246
403
  errorCode: 'server_error',
@@ -249,24 +406,25 @@ export class SubscriptionController {
249
406
  }
250
407
  });
251
408
  }
252
- _createCheckoutSession(request, user, customerId) {
409
+ _createCheckoutSession(request, customerId, metadata, role, user, studio) {
253
410
  var _a;
254
411
  return __awaiter(this, void 0, void 0, function* () {
412
+ const purchasableSubscriptions = this._getPurchasableSubscriptionsForRole(role);
255
413
  let sub;
256
414
  if (request.subscriptionId) {
257
- sub = this._config.subscriptions.find((s) => s.id === request.subscriptionId);
415
+ sub = purchasableSubscriptions.find((s) => s.id === request.subscriptionId);
258
416
  if (sub) {
259
417
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Using specified subscription (${request.subscriptionId}).`);
260
418
  }
261
419
  }
262
420
  if (!sub) {
263
- sub = this._config.subscriptions.find((s) => s.defaultSubscription);
421
+ sub = purchasableSubscriptions.find((s) => s.defaultSubscription);
264
422
  if (sub) {
265
423
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Using default subscription.`);
266
424
  }
267
425
  }
268
426
  if (!sub) {
269
- sub = this._config.subscriptions[0];
427
+ sub = purchasableSubscriptions[0];
270
428
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Using first subscription.`);
271
429
  }
272
430
  const productInfo = yield this._stripe.getProductAndPriceInfo(sub.product);
@@ -288,14 +446,12 @@ export class SubscriptionController {
288
446
  }
289
447
  }
290
448
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Creating Checkout Session.`);
291
- const session = yield this._stripe.createCheckoutSession(Object.assign(Object.assign({}, ((_a = this._config.checkoutConfig) !== null && _a !== void 0 ? _a : {})), { customer: customerId, success_url: this._config.successUrl, cancel_url: this._config.cancelUrl, line_items: [
449
+ const session = yield this._stripe.createCheckoutSession(Object.assign(Object.assign({}, ((_a = this._config.checkoutConfig) !== null && _a !== void 0 ? _a : {})), { customer: customerId, success_url: returnRoute(this._config.successUrl, user, studio), cancel_url: returnRoute(this._config.cancelUrl, user, studio), line_items: [
292
450
  {
293
451
  price: productInfo.default_price.id,
294
452
  quantity: 1,
295
453
  },
296
- ], mode: 'subscription', metadata: {
297
- userId: user.id,
298
- } }));
454
+ ], mode: 'subscription', metadata: metadata }));
299
455
  console.log(`[SubscriptionController] [createManageSubscriptionLink] Checkout Session Success!`);
300
456
  return {
301
457
  success: true,
@@ -377,17 +533,36 @@ export class SubscriptionController {
377
533
  const customerId = subscription.customer;
378
534
  console.log(`[SubscriptionController] [handleStripeWebhook] Customer ID: ${customerId}. Subscription status: ${status}. Tier: ${tier}. Is Active: ${active}.`);
379
535
  const user = yield this._authStore.findUserByStripeCustomerId(customerId);
380
- if (!user) {
381
- console.log(`[SubscriptionController] [handleStripeWebhook] No user found for Customer ID (${customerId})`);
382
- return {
383
- success: true,
384
- };
536
+ if (user) {
537
+ if (user.subscriptionStatus !== status ||
538
+ user.subscriptionId !== sub.id) {
539
+ console.log(`[SubscriptionController] [handleStripeWebhook] User (${user.id}) subscription status doesn't match stored. Updating...`);
540
+ yield this._authStore.saveUser(Object.assign(Object.assign({}, user), { subscriptionStatus: status, subscriptionId: sub.id }));
541
+ }
542
+ else {
543
+ return {
544
+ success: true,
545
+ };
546
+ }
385
547
  }
386
- if (user.subscriptionStatus !== status ||
387
- user.subscriptionId !== sub.id) {
388
- console.log(`[SubscriptionController] [handleStripeWebhook] User subscription status doesn't match stored. Updating...`);
389
- yield this._authStore.saveUser(Object.assign(Object.assign({}, user), { subscriptionStatus: status, subscriptionId: sub.id }));
548
+ console.log(`[SubscriptionController] [handleStripeWebhook] No user found for Customer ID (${customerId})`);
549
+ const studio = yield this._recordsStore.getStudioByStripeCustomerId(customerId);
550
+ if (studio) {
551
+ if (studio.subscriptionStatus !== status ||
552
+ studio.subscriptionId !== sub.id) {
553
+ console.log(`[SubscriptionController] [handleStripeWebhook] Studio ((${studio.id})) subscription status doesn't match stored. Updating...`);
554
+ yield this._recordsStore.updateStudio(Object.assign(Object.assign({}, studio), { subscriptionStatus: status, subscriptionId: sub.id }));
555
+ }
556
+ else {
557
+ return {
558
+ success: true,
559
+ };
560
+ }
390
561
  }
562
+ console.log(`[SubscriptionController] [handleStripeWebhook] No studio found for Customer ID (${customerId})`);
563
+ return {
564
+ success: true,
565
+ };
391
566
  }
392
567
  return {
393
568
  success: true,
@@ -433,4 +608,15 @@ function isValidSubscription(sub) {
433
608
  typeof sub.product === 'string' &&
434
609
  typeof sub.defaultSubscription === 'boolean');
435
610
  }
611
+ function returnRoute(basePath, user, studio) {
612
+ if (user) {
613
+ return basePath;
614
+ }
615
+ else {
616
+ return studiosRoute(basePath, studio.id, studio.displayName);
617
+ }
618
+ }
619
+ function studiosRoute(basePath, studioId, studioName) {
620
+ return new URL(`/studios/${encodeURIComponent(studioId)}/${encodeURIComponent(studioName)}`, basePath).href;
621
+ }
436
622
  //# sourceMappingURL=SubscriptionController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionController.js","sourceRoot":"","sources":["SubscriptionController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionController.js","sourceRoot":"","sources":["SubscriptionController.ts"],"names":[],"mappings":"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"}