fixed reloads

This commit is contained in:
ValueOn AG 2026-03-31 00:06:33 +02:00
parent 71bf6baae5
commit 624797246e
2 changed files with 8 additions and 5 deletions

View file

@ -42,10 +42,11 @@ export function useSubscription(mandateId?: string): UseSubscriptionReturn {
const [plan, setPlan] = useState<SubscriptionPlan | null>(null); const [plan, setPlan] = useState<SubscriptionPlan | null>(null);
const [scheduled, setScheduled] = useState<MandateSubscription | null>(null); const [scheduled, setScheduled] = useState<MandateSubscription | null>(null);
const [active, setActive] = useState(false); const [active, setActive] = useState(false);
const { request, isLoading: loading, error: apiError } = useApiRequest(); const { request, isLoading: loading, error: apiError, clearCache } = useApiRequest();
const [error, setError] = useState<string | null>(null); const [error, setError] = useState<string | null>(null);
const loadPlans = useCallback(async () => { const loadPlans = useCallback(async () => {
clearCache('/api/subscription/plans', 'get');
try { try {
const data = await fetchSelectablePlans(request, mandateId); const data = await fetchSelectablePlans(request, mandateId);
setPlans(Array.isArray(data) ? data : []); setPlans(Array.isArray(data) ? data : []);
@ -53,9 +54,10 @@ export function useSubscription(mandateId?: string): UseSubscriptionReturn {
console.error('Error loading plans:', err); console.error('Error loading plans:', err);
setPlans([]); setPlans([]);
} }
}, [request, mandateId]); }, [request, mandateId, clearCache]);
const loadStatus = useCallback(async () => { const loadStatus = useCallback(async () => {
clearCache('/api/subscription/status', 'get');
try { try {
const data: SubscriptionStatusResponse = await fetchSubscriptionStatus(request, mandateId); const data: SubscriptionStatusResponse = await fetchSubscriptionStatus(request, mandateId);
setActive(data.active); setActive(data.active);
@ -69,7 +71,7 @@ export function useSubscription(mandateId?: string): UseSubscriptionReturn {
setPlan(null); setPlan(null);
setScheduled(null); setScheduled(null);
} }
}, [request, mandateId]); }, [request, mandateId, clearCache]);
const activatePlan = useCallback(async (planKey: string) => { const activatePlan = useCallback(async (planKey: string) => {
try { try {

View file

@ -605,6 +605,7 @@ export const BillingAdmin: React.FC = () => {
const [adminTab, setAdminTab] = useState<AdminTabType>( const [adminTab, setAdminTab] = useState<AdminTabType>(
['settings', 'credit', 'subscription', 'transactions'].includes(_initialAdminTab) ? _initialAdminTab : 'settings' ['settings', 'credit', 'subscription', 'transactions'].includes(_initialAdminTab) ? _initialAdminTab : 'settings'
); );
const [subscriptionTabKey, setSubscriptionTabKey] = useState(0);
useEffect(() => { useEffect(() => {
if (adminTab === 'subscription' || searchParams.get('tab') === 'subscription') return; if (adminTab === 'subscription' || searchParams.get('tab') === 'subscription') return;
@ -736,7 +737,7 @@ export const BillingAdmin: React.FC = () => {
<button onClick={() => setAdminTab('credit')} style={_tabStyle(adminTab === 'credit')}> <button onClick={() => setAdminTab('credit')} style={_tabStyle(adminTab === 'credit')}>
Guthaben Guthaben
</button> </button>
<button onClick={() => setAdminTab('subscription')} style={_tabStyle(adminTab === 'subscription')}> <button onClick={() => { setAdminTab('subscription'); setSubscriptionTabKey(k => k + 1); }} style={_tabStyle(adminTab === 'subscription')}>
Abonnement Abonnement
</button> </button>
<button onClick={() => setAdminTab('transactions')} style={_tabStyle(adminTab === 'transactions')}> <button onClick={() => setAdminTab('transactions')} style={_tabStyle(adminTab === 'transactions')}>
@ -769,7 +770,7 @@ export const BillingAdmin: React.FC = () => {
)} )}
{adminTab === 'subscription' && ( {adminTab === 'subscription' && (
<SubscriptionTab mandateId={selectedMandateId} /> <SubscriptionTab key={subscriptionTabKey} mandateId={selectedMandateId} />
)} )}
{adminTab === 'transactions' && ( {adminTab === 'transactions' && (