async function deleteSubscription()

in src/utils/fxa.ts [270:306]


async function deleteSubscription(bearerToken: string): Promise<boolean> {
  try {
    const subs = (await getSubscriptions(bearerToken)) ?? [];
    let subscriptionId;
    for (const sub of subs) {
      if (
        sub &&
        sub.productId &&
        sub.productId === process.env.PREMIUM_PRODUCT_ID
      ) {
        subscriptionId = sub.subscriptionId;
      }
    }
    if (subscriptionId) {
      const deleteUrl = `${envVars.OAUTH_ACCOUNT_URI}/oauth/subscriptions/active/${subscriptionId}`;
      const response = await fetch(deleteUrl, {
        method: "DELETE",
        headers: {
          Accept: "application/json",
          Authorization: `Bearer ${bearerToken}`,
        },
      });
      const responseJson = await response.json();
      if (!response.ok) throw new Error(responseJson);
      logger.info("delete_fxa_subscription_success");
    }
    return true;
  } catch (e) {
    if (e instanceof Error) {
      logger.error("delete_fxa_subscription", {
        stack: e.stack,
        message: e.message,
      });
    }
    return false;
  }
}