chore: add new routes for addresses
This commit is contained in:
@@ -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>
|
||||
}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user