Overhaul settings and implement user preferences. Also implements dark theme toggle as part of the user settings.

This commit is contained in:
Cameron Redmore 2025-04-25 17:32:33 +01:00
parent b84f0907a8
commit 727746030c
17 changed files with 760 additions and 378 deletions

View file

@ -7,14 +7,44 @@ export async function getSetting(key)
select: { value: true }
});
console.log(`getSetting(${key})`, setting);
return setting?.value ? JSON.parse(setting.value) : null;
}
export async function setSetting(key, value)
{
//Replace all CRLFs with LF
if (typeof value === 'string')
{
value = value.replace(/\r\n/g, '\n').trim();
}
await prisma.setting.upsert({
where: { key },
update: { value: JSON.stringify(value) },
create: { key, value }
create: { key, value: JSON.stringify(value) }
});
}
export async function getUserPreference(userId, key)
{
const pref = await prisma.userPreference.findUnique({
where: { userId_key: { userId, key } },
select: { value: true }
});
return pref?.value ? JSON.parse(pref.value) : null;
}
export async function setUserPreference(userId, key, value)
{
if (typeof value === 'string')
{
value = value.replace(/\r\n/g, '\n').trim();
}
await prisma.userPreference.upsert({
where: { userId_key: { userId, key } },
update: { value: JSON.stringify(value) },
create: { userId, key, value: JSON.stringify(value) }
});
}