feat: public split visibility, RLS recursion fixes, and consolidated tasting permission management

- Added public discovery section for active splits on the landing page
- Refactored split detail page for guest support and login redirects
- Extracted SplitCard component for reuse
- Consolidated RLS policies for bottles and tastings to resolve permission errors
- Added unified SQL consolidation script for RLS and naming fixes
- Enhanced service logging for better database error diagnostics
This commit is contained in:
2025-12-28 22:02:46 +01:00
parent 332bfdaf02
commit 9d6a8b358f
25 changed files with 2014 additions and 495 deletions

View File

@@ -1,4 +1,27 @@
export type TranslationKeys = {
splits: {
joinTitle: string;
amount: string;
shipping: string;
whisky: string;
glass: string;
total: string;
requestSent: string;
requestSentDesc: string;
loginToParticipate: string;
loginToParticipateDesc: string;
publicExplore: string;
waitlist: string;
sendRequest: string;
youAreParticipating: string;
byHost: string;
shareLink: string;
backToStart: string;
noSplitsFound: string;
falscheTeilung: string;
clFlasche: string;
jahre: string;
};
common: {
save: string;
cancel: string;
@@ -38,6 +61,11 @@ export type TranslationKeys = {
collection: string;
reTry: string;
all: string;
tagline: string;
bottleCount: string;
imprint: string;
privacy: string;
settings: string;
};
grid: {
searchPlaceholder: string;
@@ -163,5 +191,68 @@ export type TranslationKeys = {
noSessions: string;
expiryWarning: string;
};
nav: {
home: string;
shelf: string;
activity: string;
search: string;
profile: string;
};
hub: {
title: string;
subtitle: string;
tabs: {
tastings: string;
splits: string;
};
sections: {
startSession: string;
startSplit: string;
activeNow: string;
yourSessions: string;
yourSplits: string;
participating: string;
};
placeholders: {
sessionName: string;
noSessions: string;
noSplits: string;
openSplitCreator: string;
};
};
tutorial: {
skip: string;
next: string;
finish: string;
steps: {
welcome: { title: string; desc: string };
scan: { title: string; desc: string };
taste: { title: string; desc: string };
activity: { title: string; desc: string };
ready: { title: string; desc: string };
};
};
settings: {
title: string;
language: string;
cookieSettings: string;
cookieDesc: string;
cookieNecessary: string;
cookieFunctional: string;
privacy: string;
privacyDesc: string;
privacyLink: string;
memberSince: string;
password: {
title: string;
newPassword: string;
confirmPassword: string;
match: string;
mismatch: string;
tooShort: string;
success: string;
change: string;
};
};
aroma: Record<string, string>;
};