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;
}
}