"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, } }