mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-15 02:23:07 +00:00
- helpers puros movidos utilities->lib: slug, phone, wordStartFilter, voteEstimate (9 inversoes lib->utilities zeradas) - chaves de consent em src/lib/campaignConsentKeys.ts (client-safe); campaignInvite/campaignConsent re-exportam; onda0ConsentTexts referencia as constantes - 'server-only' em 21 loaders Payload/cache (CLI segue com --conditions=react-server) - ciclo de tipos supporterListFilters <-> supporterUi quebrado (SupporterListFilterInput estrutural; sqlFilters idem) - votePledgeData dividido: votePledgeViews (puro, client-safe) + votePledgeData (loaders, server-only) - padrao contract-module - predicados de role client-safe em src/lib/campaignRoles.ts; access/shared deriva deles (fonte unica); nav.ts para de importar o barrel campaignAccess (casts 'as CampaignUser' eliminados)
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
'use client'
|
|
|
|
import { createContext, useContext, useMemo, useState, type ReactNode } from 'react'
|
|
|
|
import { DEFAULT_VOTE_ESTIMATE_SCENARIO, type VoteEstimateScenario } from '@/lib/voteEstimate'
|
|
|
|
type MunicipalityEstimateScenarioContextValue = {
|
|
scenario: VoteEstimateScenario
|
|
setScenario: (scenario: VoteEstimateScenario) => void
|
|
}
|
|
|
|
const MunicipalityEstimateScenarioContext = createContext<MunicipalityEstimateScenarioContextValue | null>(null)
|
|
|
|
export const MunicipalityEstimateScenarioProvider = ({ children }: { children: ReactNode }) => {
|
|
const [scenario, setScenario] = useState<VoteEstimateScenario>(DEFAULT_VOTE_ESTIMATE_SCENARIO)
|
|
const value = useMemo(() => ({ scenario, setScenario }), [scenario])
|
|
|
|
return (
|
|
<MunicipalityEstimateScenarioContext.Provider value={value}>
|
|
{children}
|
|
</MunicipalityEstimateScenarioContext.Provider>
|
|
)
|
|
}
|
|
|
|
export const useMunicipalityEstimateScenario = (): MunicipalityEstimateScenarioContextValue => {
|
|
const value = useContext(MunicipalityEstimateScenarioContext)
|
|
if (!value) {
|
|
throw new Error('useMunicipalityEstimateScenario must be used within MunicipalityEstimateScenarioProvider')
|
|
}
|
|
return value
|
|
}
|
|
|
|
export const useMunicipalityEstimateScenarioOptional = (): MunicipalityEstimateScenarioContextValue | null =>
|
|
useContext(MunicipalityEstimateScenarioContext)
|