chore: add new routes for addresses

This commit is contained in:
2026-02-25 09:55:18 +01:00
parent 03cb05f3a5
commit 1376ce3583
8 changed files with 292 additions and 4 deletions
+7
View File
@@ -503,6 +503,13 @@ export const deleteAddress = async (
return { success: true, message: data.message };
};
export const getAllAddresses = async (): Promise<
{ invalid_address: string; correct_address: string }[]
> => {
const { data } = await apiClient.get(`${V2}/admin/protected/addresses`);
return data.addresses ?? [];
};
// ============================================
// STATS HELPERS
// ============================================
@@ -1,15 +1,16 @@
import React, { useState, useCallback, useMemo } from "react";
import React, { useState, useEffect, useCallback, useMemo } from "react";
import {
View,
Text,
StyleSheet,
FlatList,
TouchableOpacity,
RefreshControl,
} from "react-native";
import { Ionicons } from "@expo/vector-icons";
import { spacing, fontSize } from "../../theme";
import { useTheme } from "../../context/ThemeContext";
import { addAddress, deleteAddress } from "../../api/api_admin";
import { addAddress, deleteAddress, getAllAddresses } from "../../api/api_admin";
import { useAlert } from "../../hooks/useAlert";
import Card from "../../components/ui/Card";
import Modal from "../../components/ui/Modal";
@@ -27,11 +28,34 @@ export default function AddressScreen() {
const { alert, showError, showSuccess, showConfirm, hideAlert } = useAlert();
const [addresses, setAddresses] = useState<AddressEntry[]>([]);
const [loading, setLoading] = useState(true);
const [refreshing, setRefreshing] = useState(false);
const [addModal, setAddModal] = useState(false);
const [invalidInput, setInvalidInput] = useState("");
const [correctInput, setCorrectInput] = useState("");
const [saving, setSaving] = useState(false);
const loadAddresses = useCallback(async () => {
try {
const result = await getAllAddresses();
setAddresses(result);
} catch (e: any) {
showError("Erreur", e.response?.data?.error ?? e.message);
} finally {
setLoading(false);
}
}, [showError]);
useEffect(() => {
loadAddresses();
}, [loadAddresses]);
const onRefresh = async () => {
setRefreshing(true);
await loadAddresses();
setRefreshing(false);
};
const openAddModal = () => {
setInvalidInput("");
setCorrectInput("");
@@ -167,9 +191,14 @@ export default function AddressScreen() {
keyExtractor={(item, i) => `${item.invalid_address}-${i}`}
renderItem={renderItem}
contentContainerStyle={{ padding: spacing.l, paddingTop: spacing.s }}
refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
}
ListEmptyComponent={
<Text style={styles.empty}>
Aucune correction.{"\n"}Appuyez sur + pour en ajouter une.
{loading
? "Chargement..."
: "Aucune correction.\nAppuyez sur + pour en ajouter une."}
</Text>
}
/>