import { getNetworks } from '../lib/api'
import { isLoggedIn } from '../lib/auth'
let currentNetwork = 'bsky.social'
let currentLang = localStorage.getItem('preferred-lang') || 'en'
export function getCurrentNetwork(): string {
return currentNetwork
}
export function setCurrentNetwork(network: string): void {
currentNetwork = network
}
export function getCurrentLang(): string {
return currentLang
}
export function setCurrentLang(lang: string): void {
currentLang = lang
localStorage.setItem('preferred-lang', lang)
}
export function renderModeTabs(handle: string, activeTab: 'blog' | 'browser' | 'post' | 'chat' = 'blog', isLocalUser: boolean = false): string {
let tabs = `
/
${handle}
at
`
// Chat tab only for local user (admin)
if (isLocalUser) {
tabs += `chat`
}
if (isLoggedIn()) {
tabs += `post`
}
tabs += `
`
return `${tabs}
`
}
// Render language selector (above content)
export function renderLangSelector(langs: string[]): string {
if (langs.length < 2) return ''
return `
`
}
export async function setupModeTabs(onNetworkChange: (network: string) => void, availableLangs?: string[], onLangChange?: (lang: string) => void): Promise {
const pdsTab = document.getElementById('pds-tab')
const pdsDropdown = document.getElementById('pds-dropdown')
if (pdsTab && pdsDropdown) {
// Load networks
const networks = await getNetworks()
// Build options
const optionsHtml = Object.keys(networks).map(key => {
const isSelected = key === currentNetwork
return `
${key}
✓
`
}).join('')
pdsDropdown.innerHTML = optionsHtml
// Toggle dropdown
pdsTab.addEventListener('click', (e) => {
e.stopPropagation()
pdsDropdown.classList.toggle('show')
})
// Handle option selection
pdsDropdown.querySelectorAll('.pds-option').forEach(opt => {
opt.addEventListener('click', (e) => {
e.stopPropagation()
const network = (opt as HTMLElement).dataset.network || ''
currentNetwork = network
// Update UI
pdsDropdown.querySelectorAll('.pds-option').forEach(o => {
o.classList.remove('selected')
})
opt.classList.add('selected')
pdsDropdown.classList.remove('show')
onNetworkChange(network)
})
})
}
// Setup language selector
const langTab = document.getElementById('lang-tab')
const langDropdown = document.getElementById('lang-dropdown')
if (langTab && langDropdown && availableLangs && availableLangs.length > 0) {
// Build language options
const langOptionsHtml = availableLangs.map(lang => {
const isSelected = lang === currentLang
return `
${lang.toUpperCase()}
✓
`
}).join('')
langDropdown.innerHTML = langOptionsHtml
// Toggle dropdown
langTab.addEventListener('click', (e) => {
e.stopPropagation()
langDropdown.classList.toggle('show')
})
// Handle option selection
langDropdown.querySelectorAll('.lang-option').forEach(opt => {
opt.addEventListener('click', (e) => {
e.stopPropagation()
const lang = (opt as HTMLElement).dataset.lang || ''
setCurrentLang(lang)
// Update UI
langDropdown.querySelectorAll('.lang-option').forEach(o => {
o.classList.remove('selected')
})
opt.classList.add('selected')
langDropdown.classList.remove('show')
if (onLangChange) onLangChange(lang)
})
})
}
// Close dropdowns on outside click
document.addEventListener('click', () => {
pdsDropdown?.classList.remove('show')
langDropdown?.classList.remove('show')
})
}