Implement AI consent gating, user preference settings, and Ko-fi hint
This commit is contained in:
@@ -6,7 +6,9 @@ import {
|
||||
getThemePreference,
|
||||
setColorSchemePreference,
|
||||
setOwmApiKey,
|
||||
setThemePreference
|
||||
setThemePreference,
|
||||
getAiAuthorized,
|
||||
setAiAuthorized
|
||||
} from './userPreferences.js'
|
||||
|
||||
const USER_ID = 'test-user-123'
|
||||
@@ -58,4 +60,13 @@ describe('userPreferences', () => {
|
||||
expect(getThemePreference(USER_ID)).toBe('ocean')
|
||||
expect(getColorSchemePreference(USER_ID)).toBe('light')
|
||||
})
|
||||
|
||||
it('stores AI authorization preference per user', () => {
|
||||
localStorage.setItem('active_userid', USER_ID)
|
||||
expect(getAiAuthorized()).toBe(false)
|
||||
setAiAuthorized(USER_ID, true)
|
||||
expect(getAiAuthorized()).toBe(true)
|
||||
expect(getAiAuthorized(USER_ID)).toBe(true)
|
||||
expect(getAiAuthorized('other-user')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -89,3 +89,20 @@ export function setOwmApiKey(userId: string, value: string): void {
|
||||
localStorage.removeItem(owmKey(userId))
|
||||
}
|
||||
}
|
||||
|
||||
function aiAuthorizedKey(userId: string): string {
|
||||
return `user_pref_ai_authorized_${userId}`
|
||||
}
|
||||
|
||||
export function getAiAuthorized(userId?: string | null): boolean {
|
||||
const id = resolveUserId(userId)
|
||||
if (id) {
|
||||
return localStorage.getItem(aiAuthorizedKey(id)) === 'true'
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export function setAiAuthorized(userId: string, value: boolean): void {
|
||||
localStorage.setItem(aiAuthorizedKey(userId), String(value))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user