diff --git a/src/api/promo.ts b/src/api/promo.ts index 89a0f09..459f141 100644 --- a/src/api/promo.ts +++ b/src/api/promo.ts @@ -101,7 +101,9 @@ export const promoApi = { // Deactivate current active promo discount deactivateDiscount: async (): Promise => { - const response = await apiClient.post('/cabinet/promocode/deactivate-discount'); + const response = await apiClient.post( + '/cabinet/promocode/deactivate-discount', + ); return response.data; }, }; diff --git a/src/pages/AdminApps.tsx b/src/pages/AdminApps.tsx index 8ed24d2..df15423 100644 --- a/src/pages/AdminApps.tsx +++ b/src/pages/AdminApps.tsx @@ -590,7 +590,7 @@ export default function AdminApps() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [selectedPlatform, setSelectedPlatform] = useState('ios'); const [editingApp, setEditingApp] = useState<{ app: AppDefinition; isNew: boolean } | null>(null); diff --git a/src/pages/AdminBroadcastCreate.tsx b/src/pages/AdminBroadcastCreate.tsx index 0bc4f2d..7d555fc 100644 --- a/src/pages/AdminBroadcastCreate.tsx +++ b/src/pages/AdminBroadcastCreate.tsx @@ -119,7 +119,7 @@ export default function AdminBroadcastCreate() { const queryClient = useQueryClient(); const fileInputRef = useRef(null); - useBackButton(() => navigate('/admin/broadcasts')); + useBackButton(() => navigate('/admin/broadcasts', { replace: true })); // Channel selection const [channel, setChannel] = useState('telegram'); diff --git a/src/pages/AdminBroadcastDetail.tsx b/src/pages/AdminBroadcastDetail.tsx index 244d725..2b760e6 100644 --- a/src/pages/AdminBroadcastDetail.tsx +++ b/src/pages/AdminBroadcastDetail.tsx @@ -159,7 +159,7 @@ export default function AdminBroadcastDetail() { const broadcastId = id ? parseInt(id, 10) : null; - useBackButton(() => navigate('/admin/broadcasts')); + useBackButton(() => navigate('/admin/broadcasts', { replace: true })); // Fetch broadcast details const { diff --git a/src/pages/AdminBroadcasts.tsx b/src/pages/AdminBroadcasts.tsx index f8fd05c..ede052c 100644 --- a/src/pages/AdminBroadcasts.tsx +++ b/src/pages/AdminBroadcasts.tsx @@ -132,7 +132,7 @@ export default function AdminBroadcasts() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [page, setPage] = useState(0); const limit = 20; diff --git a/src/pages/AdminCampaignCreate.tsx b/src/pages/AdminCampaignCreate.tsx index e5d8566..b82a133 100644 --- a/src/pages/AdminCampaignCreate.tsx +++ b/src/pages/AdminCampaignCreate.tsx @@ -156,7 +156,7 @@ export default function AdminCampaignCreate() { const navigate = useNavigate(); const queryClient = useQueryClient(); - useBackButton(() => navigate('/admin/campaigns')); + useBackButton(() => navigate('/admin/campaigns', { replace: true })); // Form state const [name, setName] = useState(''); diff --git a/src/pages/AdminCampaignEdit.tsx b/src/pages/AdminCampaignEdit.tsx index 6c50895..796d05a 100644 --- a/src/pages/AdminCampaignEdit.tsx +++ b/src/pages/AdminCampaignEdit.tsx @@ -133,7 +133,7 @@ export default function AdminCampaignEdit() { const campaignId = parseInt(id || '0'); - useBackButton(() => navigate('/admin/campaigns')); + useBackButton(() => navigate('/admin/campaigns', { replace: true })); // Fetch campaign const { diff --git a/src/pages/AdminCampaignStats.tsx b/src/pages/AdminCampaignStats.tsx index 1c7403b..78e64b7 100644 --- a/src/pages/AdminCampaignStats.tsx +++ b/src/pages/AdminCampaignStats.tsx @@ -98,7 +98,7 @@ export default function AdminCampaignStats() { const [copied, setCopied] = useState(false); const [showUsers, setShowUsers] = useState(false); - useBackButton(() => navigate('/admin/campaigns')); + useBackButton(() => navigate('/admin/campaigns', { replace: true })); // Fetch stats const { diff --git a/src/pages/AdminCampaigns.tsx b/src/pages/AdminCampaigns.tsx index 7ed0359..2217d2e 100644 --- a/src/pages/AdminCampaigns.tsx +++ b/src/pages/AdminCampaigns.tsx @@ -68,7 +68,7 @@ export default function AdminCampaigns() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [deleteConfirm, setDeleteConfirm] = useState(null); diff --git a/src/pages/AdminDashboard.tsx b/src/pages/AdminDashboard.tsx index 6babd35..9a2490e 100644 --- a/src/pages/AdminDashboard.tsx +++ b/src/pages/AdminDashboard.tsx @@ -366,7 +366,7 @@ export default function AdminDashboard() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [stats, setStats] = useState(null); const [loading, setLoading] = useState(true); diff --git a/src/pages/AdminPaymentMethodEdit.tsx b/src/pages/AdminPaymentMethodEdit.tsx index 15927c2..c4de007 100644 --- a/src/pages/AdminPaymentMethodEdit.tsx +++ b/src/pages/AdminPaymentMethodEdit.tsx @@ -73,7 +73,7 @@ export default function AdminPaymentMethodEdit() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin/payment-methods')); + useBackButton(() => navigate('/admin/payment-methods', { replace: true })); // Fetch payment methods const { data: methods, isLoading } = useQuery({ diff --git a/src/pages/AdminPaymentMethods.tsx b/src/pages/AdminPaymentMethods.tsx index 7d10f56..ebbf18a 100644 --- a/src/pages/AdminPaymentMethods.tsx +++ b/src/pages/AdminPaymentMethods.tsx @@ -240,7 +240,7 @@ export default function AdminPaymentMethods() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [methods, setMethods] = useState([]); const [orderChanged, setOrderChanged] = useState(false); diff --git a/src/pages/AdminPayments.tsx b/src/pages/AdminPayments.tsx index c80d6df..30d0663 100644 --- a/src/pages/AdminPayments.tsx +++ b/src/pages/AdminPayments.tsx @@ -29,7 +29,7 @@ export default function AdminPayments() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [page, setPage] = useState(1); const [methodFilter, setMethodFilter] = useState(''); diff --git a/src/pages/AdminPromoGroupCreate.tsx b/src/pages/AdminPromoGroupCreate.tsx index 436ccdf..a8accb1 100644 --- a/src/pages/AdminPromoGroupCreate.tsx +++ b/src/pages/AdminPromoGroupCreate.tsx @@ -56,7 +56,7 @@ export default function AdminPromoGroupCreate() { const queryClient = useQueryClient(); const isEdit = !!id; - useBackButton(() => navigate('/admin/promo-groups')); + useBackButton(() => navigate('/admin/promo-groups', { replace: true })); // Form state const [name, setName] = useState(''); diff --git a/src/pages/AdminPromoGroups.tsx b/src/pages/AdminPromoGroups.tsx index a4aa870..f259af9 100644 --- a/src/pages/AdminPromoGroups.tsx +++ b/src/pages/AdminPromoGroups.tsx @@ -62,7 +62,7 @@ export default function AdminPromoGroups() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [deleteConfirm, setDeleteConfirm] = useState(null); diff --git a/src/pages/AdminPromoOfferSend.tsx b/src/pages/AdminPromoOfferSend.tsx index fb68f0d..43cdf99 100644 --- a/src/pages/AdminPromoOfferSend.tsx +++ b/src/pages/AdminPromoOfferSend.tsx @@ -76,7 +76,7 @@ export default function AdminPromoOfferSend() { const navigate = useNavigate(); const queryClient = useQueryClient(); - useBackButton(() => navigate('/admin/promo-offers')); + useBackButton(() => navigate('/admin/promo-offers', { replace: true })); const [selectedTemplateId, setSelectedTemplateId] = useState(null); const [sendMode, setSendMode] = useState<'segment' | 'user'>('segment'); diff --git a/src/pages/AdminPromoOfferTemplateEdit.tsx b/src/pages/AdminPromoOfferTemplateEdit.tsx index 40f4ff5..7e2210b 100644 --- a/src/pages/AdminPromoOfferTemplateEdit.tsx +++ b/src/pages/AdminPromoOfferTemplateEdit.tsx @@ -22,7 +22,7 @@ export default function AdminPromoOfferTemplateEdit() { const { id } = useParams<{ id: string }>(); const queryClient = useQueryClient(); - useBackButton(() => navigate('/admin/promo-offers')); + useBackButton(() => navigate('/admin/promo-offers', { replace: true })); // Form state const [name, setName] = useState(''); diff --git a/src/pages/AdminPromoOffers.tsx b/src/pages/AdminPromoOffers.tsx index 06eaad7..75e21bf 100644 --- a/src/pages/AdminPromoOffers.tsx +++ b/src/pages/AdminPromoOffers.tsx @@ -109,7 +109,7 @@ export default function AdminPromoOffers() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [activeTab, setActiveTab] = useState<'templates' | 'logs'>('templates'); diff --git a/src/pages/AdminPromocodeCreate.tsx b/src/pages/AdminPromocodeCreate.tsx index 8c615e2..dcaffd0 100644 --- a/src/pages/AdminPromocodeCreate.tsx +++ b/src/pages/AdminPromocodeCreate.tsx @@ -51,7 +51,7 @@ export default function AdminPromocodeCreate() { const isEdit = !!id; // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin/promocodes')); + useBackButton(() => navigate('/admin/promocodes', { replace: true })); // Form state const [code, setCode] = useState(''); diff --git a/src/pages/AdminPromocodeStats.tsx b/src/pages/AdminPromocodeStats.tsx index f6f7662..0ead519 100644 --- a/src/pages/AdminPromocodeStats.tsx +++ b/src/pages/AdminPromocodeStats.tsx @@ -89,7 +89,7 @@ export default function AdminPromocodeStats() { const navigate = useNavigate(); const { id } = useParams<{ id: string }>(); - useBackButton(() => navigate('/admin/promocodes')); + useBackButton(() => navigate('/admin/promocodes', { replace: true })); const { data: promocode, diff --git a/src/pages/AdminPromocodes.tsx b/src/pages/AdminPromocodes.tsx index 684b2f8..561cae7 100644 --- a/src/pages/AdminPromocodes.tsx +++ b/src/pages/AdminPromocodes.tsx @@ -114,7 +114,7 @@ export default function AdminPromocodes() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [deleteConfirm, setDeleteConfirm] = useState(null); const [copiedCode, setCopiedCode] = useState(null); diff --git a/src/pages/AdminRemnawave.tsx b/src/pages/AdminRemnawave.tsx index c95072e..8183a6d 100644 --- a/src/pages/AdminRemnawave.tsx +++ b/src/pages/AdminRemnawave.tsx @@ -879,7 +879,7 @@ export default function AdminRemnawave() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); // State const [activeTab, setActiveTab] = useState('overview'); diff --git a/src/pages/AdminRemnawaveSquadDetail.tsx b/src/pages/AdminRemnawaveSquadDetail.tsx index a4383a6..89dff09 100644 --- a/src/pages/AdminRemnawaveSquadDetail.tsx +++ b/src/pages/AdminRemnawaveSquadDetail.tsx @@ -55,7 +55,7 @@ export default function AdminRemnawaveSquadDetail() { const { uuid } = useParams<{ uuid: string }>(); const navigate = useNavigate(); - useBackButton(() => navigate('/admin/remnawave')); + useBackButton(() => navigate('/admin/remnawave', { replace: true })); // Fetch all squads and find the one we need const { diff --git a/src/pages/AdminServerEdit.tsx b/src/pages/AdminServerEdit.tsx index 2ad4e04..889ce68 100644 --- a/src/pages/AdminServerEdit.tsx +++ b/src/pages/AdminServerEdit.tsx @@ -49,7 +49,7 @@ export default function AdminServerEdit() { const serverId = parseInt(id || '0'); - useBackButton(() => navigate('/admin/servers')); + useBackButton(() => navigate('/admin/servers', { replace: true })); const { data: server, diff --git a/src/pages/AdminServers.tsx b/src/pages/AdminServers.tsx index 941a49f..b70ae80 100644 --- a/src/pages/AdminServers.tsx +++ b/src/pages/AdminServers.tsx @@ -59,7 +59,7 @@ export default function AdminServers() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); // Queries const { data: serversData, isLoading } = useQuery({ diff --git a/src/pages/AdminSettings.tsx b/src/pages/AdminSettings.tsx index 8e145ff..e9e86c2 100644 --- a/src/pages/AdminSettings.tsx +++ b/src/pages/AdminSettings.tsx @@ -51,7 +51,7 @@ export default function AdminSettings() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); // State const [activeSection, setActiveSection] = useState('branding'); diff --git a/src/pages/AdminTariffCreate.tsx b/src/pages/AdminTariffCreate.tsx index af70c84..c7e2386 100644 --- a/src/pages/AdminTariffCreate.tsx +++ b/src/pages/AdminTariffCreate.tsx @@ -92,7 +92,7 @@ export default function AdminTariffCreate() { const queryClient = useQueryClient(); const isEdit = !!id; - useBackButton(() => navigate('/admin/tariffs')); + useBackButton(() => navigate('/admin/tariffs', { replace: true })); // Step: null = type selection, 'period' or 'daily' = form const [tariffType, setTariffType] = useState(null); diff --git a/src/pages/AdminTariffs.tsx b/src/pages/AdminTariffs.tsx index 55850c6..7180759 100644 --- a/src/pages/AdminTariffs.tsx +++ b/src/pages/AdminTariffs.tsx @@ -77,7 +77,7 @@ export default function AdminTariffs() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); // Queries const { data: tariffsData, isLoading } = useQuery({ diff --git a/src/pages/AdminTicketSettings.tsx b/src/pages/AdminTicketSettings.tsx index 72df75e..8fccfaa 100644 --- a/src/pages/AdminTicketSettings.tsx +++ b/src/pages/AdminTicketSettings.tsx @@ -22,7 +22,7 @@ export default function AdminTicketSettings() { const navigate = useNavigate(); const queryClient = useQueryClient(); - useBackButton(() => navigate('/admin/tickets')); + useBackButton(() => navigate('/admin/tickets', { replace: true })); const { data: settings, diff --git a/src/pages/AdminTickets.tsx b/src/pages/AdminTickets.tsx index fc6c7cc..903e2c6 100644 --- a/src/pages/AdminTickets.tsx +++ b/src/pages/AdminTickets.tsx @@ -124,7 +124,7 @@ export default function AdminTickets() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [selectedTicketId, setSelectedTicketId] = useState(null); const [statusFilter, setStatusFilter] = useState(''); diff --git a/src/pages/AdminUserDetail.tsx b/src/pages/AdminUserDetail.tsx index eb1087b..69481a9 100644 --- a/src/pages/AdminUserDetail.tsx +++ b/src/pages/AdminUserDetail.tsx @@ -82,7 +82,7 @@ export default function AdminUserDetail() { const navigate = useNavigate(); const { id } = useParams<{ id: string }>(); - useBackButton(() => navigate('/admin/users')); + useBackButton(() => navigate('/admin/users', { replace: true })); const localeMap: Record = { ru: 'ru-RU', en: 'en-US', zh: 'zh-CN', fa: 'fa-IR' }; const locale = localeMap[i18n.language] || 'ru-RU'; diff --git a/src/pages/AdminUsers.tsx b/src/pages/AdminUsers.tsx index 4132af4..7f7e8fd 100644 --- a/src/pages/AdminUsers.tsx +++ b/src/pages/AdminUsers.tsx @@ -399,7 +399,7 @@ export default function AdminUsers() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [users, setUsers] = useState([]); const [stats, setStats] = useState(null); diff --git a/src/pages/AdminWheel.tsx b/src/pages/AdminWheel.tsx index 213e7a0..7645663 100644 --- a/src/pages/AdminWheel.tsx +++ b/src/pages/AdminWheel.tsx @@ -292,7 +292,7 @@ export default function AdminWheel() { const { capabilities } = usePlatform(); // Use native Telegram back button in Mini App - useBackButton(() => navigate('/admin')); + useBackButton(() => navigate('/admin', { replace: true })); const [activeTab, setActiveTab] = useState('settings'); const [expandedPrizeId, setExpandedPrizeId] = useState(null);