aboutsummaryrefslogtreecommitdiffstats
path: root/middleware/src/app/api/notifications/set/route.ts
blob: 3a584fbbdd19036137c7eea0f2e09176c800fb36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { Redis } from "@upstash/redis";

export const runtime = "edge";
const redis = new Redis({
  url: process.env.KV_REST_API_URL!,
  token: process.env.KV_REST_API_TOKEN!,
});

// /api/fcm?topic=<topic>&token=<fcm_token>&action=subscribe|unsubscribe
export async function GET(req: Request) {
  const { searchParams } = new URL(req.url);
  const topic = searchParams.get("topic");
  const token = searchParams.get("token");
  const action = searchParams.get("action"); // "subscribe" | "unsubscribe"

  if (!topic || !token || !action) {
    return new Response(JSON.stringify({ error: "Missing params" }), { status: 400 });
  }
  const key = `fcm-${topic}`;

  if (action === "subscribe") {
    await redis.sadd(key, token);
  } else if (action === "unsubscribe") {
    await redis.srem(key, token);
  } else {
    return new Response(JSON.stringify({ error: "Invalid action" }), { status: 400 });
  }

  return new Response(JSON.stringify({ success: true }), { status: 200 });
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage