import { z } from "zod" import * as api from "@/lib/api" import { protectedProcedure } from "@/server/trpc" import { getSasToken } from "./getSasToken" const outputSchema = z.object({ linkingState: z.enum(["unlinked", "notLinked", "error"]), }) export const unlinkAccount = protectedProcedure .output(outputSchema) .mutation(async function ({ ctx }) { const sasAuthToken = getSasToken() const apiResponse = await api.post(api.endpoints.v1.Profile.unlink, { headers: { Authorization: `Bearer ${ctx.session.token.access_token}`, }, body: { partner: "sas_eb", partnerSpecific: { eurobonusAccessToken: sasAuthToken, }, }, }) if (apiResponse.status === 204 || apiResponse.status === 202) { console.log("[SAS] unlink account success") return { linkingState: "unlinked" } } if (apiResponse.status === 400) { const result = await apiResponse.json() console.log("[SAS] unlink account error with response", result) return { linkingState: "error" } } if (apiResponse.status === 404) { console.log("[SAS] tried unlinking an account that was not linked") return { linkingState: "notLinked" } } console.log( `[SAS] unlink account error with status code ${apiResponse.status} and response ${await apiResponse.text()}` ) return { linkingState: "error" } })