feat(swift): Epic 4 - Navigation & Auth compleet
E4.S1 - Login form uitbreiden: - Interface selector (Swift/Klassiek) toegevoegd - Visuele keuze met icons (Layout/Zap) - Redirect naar gekozen interface na login E4.S2 - Preference opslag: - updateInterfacePreference() in lib/auth/client.ts - getInterfacePreference() voor ophalen - Opslag in user_metadata.preferred_interface E4.S3 - Redirect middleware: - /epd → redirect naar preferred interface - /login → redirect naar preferred interface (als ingelogd) - Default: klassiek (/epd/clients) E4.S4 - Fallback Picker: - FallbackPicker component voor lage confidence - Grid met 3 opties (Notitie, Zoeken, Overdracht) - Keyboard shortcuts [1], [2], [3] - Toont originele input voor context Voortgang: Epic 4 compleet (8 SP) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -268,3 +268,33 @@ export async function isDemoUser(): Promise<boolean> {
|
||||
export async function getDemoAccessLevel(): Promise<'read_only' | 'interactive' | 'presenter' | null> {
|
||||
return null
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user's preferred interface (Swift or Klassiek)
|
||||
* Stored in user_metadata.preferred_interface
|
||||
*/
|
||||
export type InterfacePreference = 'swift' | 'klassiek'
|
||||
|
||||
export async function updateInterfacePreference(preference: InterfacePreference) {
|
||||
const supabase = createClient()
|
||||
const { error } = await supabase.auth.updateUser({
|
||||
data: { preferred_interface: preference }
|
||||
})
|
||||
|
||||
if (error) {
|
||||
console.error('Failed to update interface preference:', error)
|
||||
throw error
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user's preferred interface from metadata
|
||||
* Returns 'klassiek' as default if not set
|
||||
*/
|
||||
export async function getInterfacePreference(): Promise<InterfacePreference> {
|
||||
const user = await getUser()
|
||||
const preference = user?.user_metadata?.preferred_interface as InterfacePreference | undefined
|
||||
return preference || 'klassiek'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user