canvas-website/src/lib/fathomApiKey.ts

115 lines
3.3 KiB
TypeScript

// Utility functions for managing Fathom API key in user identity storage
/**
* Get Fathom API key for the current user
* Checks user-specific storage first, then falls back to global storage
*/
export function getFathomApiKey(username?: string): string | null {
try {
// If username is provided, check user-specific storage
if (username) {
const userApiKeys = localStorage.getItem(`${username}_api_keys`)
if (userApiKeys) {
try {
const parsed = JSON.parse(userApiKeys)
if (parsed.fathomApiKey && parsed.fathomApiKey.trim() !== '') {
return parsed.fathomApiKey
}
} catch (e) {
// Continue to fallback
}
}
// Also check for standalone Fathom key with username prefix
const standaloneKey = localStorage.getItem(`${username}_fathom_api_key`)
if (standaloneKey && standaloneKey.trim() !== '') {
return standaloneKey
}
}
// Fallback to global storage
const globalKey = localStorage.getItem('fathom_api_key')
if (globalKey && globalKey.trim() !== '') {
return globalKey
}
return null
} catch (e) {
console.error('Error getting Fathom API key:', e)
return null
}
}
/**
* Save Fathom API key for the current user
* Stores in user-specific storage if username is provided, otherwise global storage
*/
export function saveFathomApiKey(apiKey: string, username?: string): void {
try {
if (username) {
// Get existing user API keys or create new object
const userApiKeysStr = localStorage.getItem(`${username}_api_keys`)
let userApiKeys: any = { keys: {} }
if (userApiKeysStr) {
try {
userApiKeys = JSON.parse(userApiKeysStr)
} catch (e) {
// Start fresh if parsing fails
}
}
// Add Fathom API key
userApiKeys.fathomApiKey = apiKey
// Save to user-specific storage
localStorage.setItem(`${username}_api_keys`, JSON.stringify(userApiKeys))
// Also save as standalone key for backward compatibility
localStorage.setItem(`${username}_fathom_api_key`, apiKey)
}
// Also save to global storage for backward compatibility
localStorage.setItem('fathom_api_key', apiKey)
} catch (e) {
console.error('Error saving Fathom API key:', e)
}
}
/**
* Remove Fathom API key for the current user
*/
export function removeFathomApiKey(username?: string): void {
try {
if (username) {
// Remove from user-specific storage
const userApiKeysStr = localStorage.getItem(`${username}_api_keys`)
if (userApiKeysStr) {
try {
const userApiKeys = JSON.parse(userApiKeysStr)
delete userApiKeys.fathomApiKey
localStorage.setItem(`${username}_api_keys`, JSON.stringify(userApiKeys))
} catch (e) {
// Continue
}
}
// Remove standalone key
localStorage.removeItem(`${username}_fathom_api_key`)
}
// Remove from global storage
localStorage.removeItem('fathom_api_key')
} catch (e) {
console.error('Error removing Fathom API key:', e)
}
}
/**
* Check if Fathom API key is configured for the current user
*/
export function isFathomApiKeyConfigured(username?: string): boolean {
return getFathomApiKey(username) !== null
}