forked from jamesp/sasa-membership
stuff changed:
- ui has been made 'kinda better' (after making it worse for a while lol - ESP rfid readers are now supported [ill upload the code for them in another repo later] - admin system has been secured a bit better and seems to be working well
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { membershipService, MembershipTier, MembershipTierCreateData, MembershipTierUpdateData } from '../services/membershipService';
|
||||
import { useToast } from '../contexts/ToastContext';
|
||||
import { useConfirm } from '../contexts/ConfirmContext';
|
||||
|
||||
const MembershipTiers: React.FC = () => {
|
||||
const toast = useToast();
|
||||
const { confirm } = useConfirm();
|
||||
const navigate = useNavigate();
|
||||
const [tiers, setTiers] = useState<MembershipTier[]>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
@@ -20,7 +24,7 @@ const MembershipTiers: React.FC = () => {
|
||||
setTiers(tierData);
|
||||
} catch (error) {
|
||||
console.error('Failed to load tiers:', error);
|
||||
alert('Failed to load membership tiers');
|
||||
toast.error('Failed to load membership tiers.');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -32,7 +36,7 @@ const MembershipTiers: React.FC = () => {
|
||||
setShowCreateForm(false);
|
||||
loadTiers();
|
||||
} catch (error: any) {
|
||||
alert(error.response?.data?.detail || 'Failed to create tier');
|
||||
toast.error(error.response?.data?.detail || 'Failed to create tier.');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -42,12 +46,18 @@ const MembershipTiers: React.FC = () => {
|
||||
setEditingTier(null);
|
||||
loadTiers();
|
||||
} catch (error: any) {
|
||||
alert(error.response?.data?.detail || 'Failed to update tier');
|
||||
toast.error(error.response?.data?.detail || 'Failed to update tier.');
|
||||
}
|
||||
};
|
||||
|
||||
const handleDeleteTier = async (tierId: number) => {
|
||||
if (!confirm('Are you sure you want to delete this membership tier? This action cannot be undone.')) {
|
||||
const confirmed = await confirm({
|
||||
title: 'Delete membership tier',
|
||||
message: 'Are you sure you want to delete this membership tier? This action cannot be undone.',
|
||||
confirmLabel: 'Delete',
|
||||
tone: 'danger'
|
||||
});
|
||||
if (!confirmed) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -55,7 +65,7 @@ const MembershipTiers: React.FC = () => {
|
||||
await membershipService.deleteTier(tierId);
|
||||
loadTiers();
|
||||
} catch (error: any) {
|
||||
alert(error.response?.data?.detail || 'Failed to delete tier');
|
||||
toast.error(error.response?.data?.detail || 'Failed to delete tier.');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -393,4 +403,4 @@ const MembershipTierForm: React.FC<MembershipTierFormProps> = ({ tier, onSave, o
|
||||
);
|
||||
};
|
||||
|
||||
export default MembershipTiers;
|
||||
export default MembershipTiers;
|
||||
|
||||
Reference in New Issue
Block a user