Files
StevenandGitHub 4466ba436b chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

47 lines
1.2 KiB
TypeScript

"use server";
import { kv } from "@vercel/kv";
import { revalidatePath } from "next/cache";
import { Feature } from "./types";
export async function saveFeature(feature: Feature, formData: FormData) {
let newFeature = {
...feature,
title: formData.get("feature") as string,
};
await kv.hset(`item:${newFeature.id}`, newFeature);
await kv.zadd("items_by_score", {
score: Number(newFeature.score),
member: newFeature.id,
});
revalidatePath("/");
}
export async function saveEmail(formData: FormData) {
const email = formData.get("email");
function validateEmail(email: FormDataEntryValue) {
const re =
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
if (email && validateEmail(email)) {
await kv.sadd("emails", email);
revalidatePath("/");
}
}
export async function upvote(feature: Feature) {
const newScore = Number(feature.score) + 1;
await kv.hset(`item:${feature.id}`, {
...feature,
score: newScore,
});
await kv.zadd("items_by_score", { score: newScore, member: feature.id });
revalidatePath("/");
}