WhatsApp/Signal/Formstack/admin updates
This commit is contained in:
parent
bcecf61a46
commit
d0cc5a21de
451 changed files with 16139 additions and 39623 deletions
|
|
@ -5,19 +5,26 @@ import { getService } from "./utils";
|
|||
export const getBot = async (
|
||||
_req: NextRequest,
|
||||
params: ServiceParams,
|
||||
): Promise<NextResponse> => getService(params)?.getBot(params);
|
||||
): Promise<NextResponse> => (await getService(params))?.getBot(params);
|
||||
|
||||
export const sendMessage = async (
|
||||
req: NextRequest,
|
||||
params: ServiceParams,
|
||||
): Promise<NextResponse> => getService(params)?.sendMessage(req, params);
|
||||
): Promise<NextResponse> =>
|
||||
(await getService(params))?.sendMessage(req, params);
|
||||
|
||||
export const receiveMessage = async (
|
||||
req: NextRequest,
|
||||
params: ServiceParams,
|
||||
): Promise<NextResponse> => getService(params)?.receiveMessage(req, params);
|
||||
): Promise<NextResponse> =>
|
||||
(await getService(params))?.receiveMessage(req, params);
|
||||
|
||||
export const handleWebhook = async (
|
||||
req: NextRequest,
|
||||
params: ServiceParams,
|
||||
): Promise<NextResponse> => getService(params)?.handleWebhook(req);
|
||||
): Promise<NextResponse> => (await getService(params))?.handleWebhook(req);
|
||||
|
||||
export const relinkBot = async (
|
||||
_req: NextRequest,
|
||||
params: ServiceParams,
|
||||
): Promise<NextResponse> => (await getService(params))?.relink(params);
|
||||
|
|
|
|||
|
|
@ -51,16 +51,15 @@ export type ServiceConfig = {
|
|||
};
|
||||
|
||||
export type ServiceParams = {
|
||||
params: {
|
||||
params: Promise<{
|
||||
service: string;
|
||||
token?: string;
|
||||
};
|
||||
}>;
|
||||
};
|
||||
|
||||
export class Service {
|
||||
async getBot({
|
||||
params: { service, token },
|
||||
}: ServiceParams): Promise<NextResponse> {
|
||||
async getBot({ params }: ServiceParams): Promise<NextResponse> {
|
||||
const { service, token } = await params;
|
||||
const table = getServiceTable(service);
|
||||
const row = await db
|
||||
.selectFrom(table)
|
||||
|
|
@ -71,16 +70,15 @@ export class Service {
|
|||
return NextResponse.json(row);
|
||||
}
|
||||
|
||||
async registerBot({
|
||||
params: { service, token },
|
||||
}: ServiceParams): Promise<NextResponse> {
|
||||
async registerBot({ params: _params }: ServiceParams): Promise<NextResponse> {
|
||||
return NextResponse.error() as any;
|
||||
}
|
||||
|
||||
async sendMessage(
|
||||
req: NextRequest,
|
||||
{ params: { service, token } }: ServiceParams,
|
||||
{ params }: ServiceParams,
|
||||
): Promise<NextResponse> {
|
||||
const { service, token } = await params;
|
||||
const table = getServiceTable(service);
|
||||
const row = await db
|
||||
.selectFrom(table)
|
||||
|
|
@ -103,14 +101,14 @@ export class Service {
|
|||
},
|
||||
};
|
||||
|
||||
console.log(response);
|
||||
return NextResponse.json(response);
|
||||
}
|
||||
|
||||
async receiveMessage(
|
||||
req: NextRequest,
|
||||
{ params: { service, token } }: ServiceParams,
|
||||
{ params }: ServiceParams,
|
||||
): Promise<NextResponse> {
|
||||
const { service, token } = await params;
|
||||
const json = await req.json();
|
||||
const worker = await getWorkerUtils();
|
||||
await worker.addJob(`${service}/receive-${service}-message`, {
|
||||
|
|
@ -124,4 +122,8 @@ export class Service {
|
|||
async handleWebhook(_req: NextRequest): Promise<NextResponse> {
|
||||
return NextResponse.error() as any;
|
||||
}
|
||||
|
||||
async relink({ params: _params }: ServiceParams): Promise<NextResponse> {
|
||||
return NextResponse.error() as any;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ const fetchNoCache = async (url: string, options = {}) => {
|
|||
};
|
||||
|
||||
export class Signal extends Service {
|
||||
async getBot({ params: { token } }: ServiceParams) {
|
||||
async getBot({ params }: ServiceParams) {
|
||||
const { token } = await params;
|
||||
const row = await db
|
||||
.selectFrom("SignalBot")
|
||||
.selectAll()
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@ import { Facebook } from "./facebook";
|
|||
import { Signal } from "./signal";
|
||||
import { Whatsapp } from "./whatsapp";
|
||||
|
||||
export const getService = ({ params: { service } }: ServiceParams): Service => {
|
||||
export const getService = async ({
|
||||
params,
|
||||
}: ServiceParams): Promise<Service> => {
|
||||
const { service } = await params;
|
||||
if (service === "facebook") {
|
||||
return new Facebook();
|
||||
} else if (service === "signal") {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ import { revalidatePath } from "next/cache";
|
|||
import { Service, ServiceParams } from "./service";
|
||||
|
||||
export class Whatsapp extends Service {
|
||||
async getBot({ params: { token } }: ServiceParams) {
|
||||
async getBot({ params }: ServiceParams) {
|
||||
const { token } = await params;
|
||||
const row = await db
|
||||
.selectFrom("WhatsappBot")
|
||||
.selectAll()
|
||||
|
|
@ -30,4 +31,30 @@ export class Whatsapp extends Service {
|
|||
|
||||
return NextResponse.json(json);
|
||||
}
|
||||
|
||||
async relink({ params }: ServiceParams) {
|
||||
const { token } = await params;
|
||||
const row = await db
|
||||
.selectFrom("WhatsappBot")
|
||||
.selectAll()
|
||||
.where("token", "=", token as string)
|
||||
.executeTakeFirstOrThrow();
|
||||
const id = row.id;
|
||||
|
||||
// Step 1: Call unverify to remove the bot directory and disconnect
|
||||
const unverifyUrl = `${process.env.BRIDGE_WHATSAPP_URL}/api/bots/${id}/unverify`;
|
||||
await fetch(unverifyUrl, { method: "POST" });
|
||||
|
||||
// Step 2: Reset verified flag in database
|
||||
await db
|
||||
.updateTable("WhatsappBot")
|
||||
.set({ verified: false })
|
||||
.where("id", "=", id)
|
||||
.execute();
|
||||
|
||||
// Step 3: Revalidate the path to refresh the UI
|
||||
revalidatePath(`/whatsapp/${id}`);
|
||||
|
||||
return NextResponse.json({ success: true, message: "WhatsApp connection reset. Please scan the new QR code." });
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue