51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
"use server";
|
|
|
|
import { cookies } from "next/headers";
|
|
import { getServerAuthSession } from "@/server/auth";
|
|
import type { BookmarksLayoutTypes, Timezones } from "./types";
|
|
import {
|
|
defaultUserLocalSettings,
|
|
parseUserLocalSettings,
|
|
USER_LOCAL_SETTINGS_COOKIE_NAME,
|
|
} from "./types";
|
|
|
|
export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) {
|
|
const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME);
|
|
const parsed = parseUserLocalSettings(userSettings?.value);
|
|
cookies().set({
|
|
name: USER_LOCAL_SETTINGS_COOKIE_NAME,
|
|
value: JSON.stringify({ ...parsed, bookmarkGridLayout: layout }),
|
|
maxAge: 34560000, // Chrome caps max age to 400 days
|
|
sameSite: "lax",
|
|
});
|
|
}
|
|
|
|
export async function updateTimezoneCookie(timezone: Timezones) {
|
|
const userSettings = (await cookies()).get(USER_LOCAL_SETTINGS_COOKIE_NAME);
|
|
const parsed = parseUserLocalSettings(userSettings?.value);
|
|
(await cookies()).set({
|
|
name: USER_LOCAL_SETTINGS_COOKIE_NAME,
|
|
value: JSON.stringify({ ...parsed, timezone: timezone }),
|
|
maxAge: 34560000, // Chrome caps max age to 400 days
|
|
sameSite: "lax",
|
|
});
|
|
}
|
|
|
|
export async function getUserLocalSettings() {
|
|
const parsed = parseUserLocalSettings(
|
|
(await cookies()).get(USER_LOCAL_SETTINGS_COOKIE_NAME)?.value
|
|
)
|
|
|
|
const session = (await getServerAuthSession());
|
|
const dbTimezone = session?.user?.timezone as string | undefined;
|
|
|
|
// if (parsed?.timezone) {
|
|
// // console.log("Found timezone in cookie:", parsed.timezone);
|
|
// return parsed;
|
|
// }
|
|
|
|
return {
|
|
bookmarkGridLayout: parsed?.bookmarkGridLayout ?? defaultUserLocalSettings().bookmarkGridLayout,
|
|
timezone: parsed!.timezone || dbTimezone || defaultUserLocalSettings().timezone,
|
|
}
|
|
} |