chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import type { uiComponent } from "@team-plain/typescript-sdk";
|
||||
import { PlainClient } from "@team-plain/typescript-sdk";
|
||||
import { env } from "~/env.server";
|
||||
|
||||
type Input = {
|
||||
userId: string;
|
||||
email: string;
|
||||
name: string;
|
||||
title: string;
|
||||
components: ReturnType<typeof uiComponent.text>[];
|
||||
labelTypeIds?: string[];
|
||||
};
|
||||
|
||||
export async function sendToPlain({ userId, email, name, title, components, labelTypeIds }: Input) {
|
||||
if (!env.PLAIN_API_KEY) {
|
||||
return;
|
||||
}
|
||||
|
||||
const client = new PlainClient({
|
||||
apiKey: env.PLAIN_API_KEY,
|
||||
});
|
||||
|
||||
const upsertCustomerRes = await client.upsertCustomer({
|
||||
identifier: {
|
||||
emailAddress: email,
|
||||
},
|
||||
onCreate: {
|
||||
externalId: userId,
|
||||
fullName: name,
|
||||
email: {
|
||||
email: email,
|
||||
isVerified: true,
|
||||
},
|
||||
},
|
||||
onUpdate: {
|
||||
externalId: { value: userId },
|
||||
fullName: { value: name },
|
||||
email: {
|
||||
email: email,
|
||||
isVerified: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (upsertCustomerRes.error) {
|
||||
console.error("Failed to upsert customer in Plain", upsertCustomerRes.error);
|
||||
return;
|
||||
}
|
||||
|
||||
const createThreadRes = await client.createThread({
|
||||
customerIdentifier: {
|
||||
customerId: upsertCustomerRes.data.customer.id,
|
||||
},
|
||||
title: title,
|
||||
components: components,
|
||||
labelTypeIds,
|
||||
});
|
||||
|
||||
if (createThreadRes.error) {
|
||||
console.error("Failed to create thread in Plain", createThreadRes.error);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user