From 3023227a29fed91c8184067ee1d57bfac40dc840 Mon Sep 17 00:00:00 2001 From: Xor290 Date: Sun, 16 Aug 2026 14:28:58 +0200 Subject: [PATCH] chore: build --- mobile/app.json | 2 +- mobile/certs/certificate.pem | 36 +++---- mobile/src/api/api.ts | 25 +++++ .../screens/client/OrderTrackingScreen.tsx | 93 +++++++++++++++++++ 4 files changed, 137 insertions(+), 19 deletions(-) diff --git a/mobile/app.json b/mobile/app.json index d924ba68..391b7ac3 100644 --- a/mobile/app.json +++ b/mobile/app.json @@ -2,7 +2,7 @@ "expo": { "name": "Milieu Nantais", "slug": "frontend-client", - "version": "1.0.0", + "version": "1.0.1", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "dark", diff --git a/mobile/certs/certificate.pem b/mobile/certs/certificate.pem index a53e9f6b..d5c1f25c 100644 --- a/mobile/certs/certificate.pem +++ b/mobile/certs/certificate.pem @@ -1,18 +1,18 @@ ------BEGIN CERTIFICATE----- -MIIC9zCCAd+gAwIBAgIJOs/S1ceI7Zq6MA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNV -BAMTGk1pbGlldSBOYW50YWlzIC8gVWJlciBTdHVwMB4XDTI2MDcxMTIwNDI1MloX -DTM2MDcxMTIwNDI1MlowJTEjMCEGA1UEAxMaTWlsaWV1IE5hbnRhaXMgLyBVYmVy -IFN0dXAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQClkcj0h9gBuq9z -FVT1UwhBto2sTZglO3iwsgyPWx7I7twyY+kUU57rgHzI7YGieX599xM4oGjau8r7 -PjPK1160djTuRa9bWXnYBnotaU0Hp3rOicxbMygCGQoZtDqxRUMo4HxrBSYnZaVo -VYPqs/utSTA43El7SrzJddxBZK4WbJbfgdXDYrdeLz4Syrdx8DXBnCYmmmHhpQsE -orykYCUi7qd0CJi6kZGVOgR+Hq0B581DqnUA2H3iQWdk/0EZf6PN/gR0f9YlH3oN -N8tYLo7TOScSmUNJ5T2hFEuWuS/O6JKUI6a7MpIOv7XYxNDYWT/Ae9QNT8GcqVcW -39j2xSvvAgMBAAGjKjAoMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggr -BgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAQEAj+SMnO7/IFajlg6Uo6aJotM8vdPp -4Dgi18DURZ0evUsxm4lLHWQ//6zF8jVaqPwsKA9IuPW+8O8gC8iwCY3YfjbaC5Ad -vPlvpzU6bvaA//utLVVUlfkk87vs5QotJkshoImJJoDPfO/Q1yv1qrMHXPnGyyzV -K0K3rYeXVYMDeJ9y2742D+MEg0Zse7xmNcde2z5aUuFlK7ORBs03FohD2U5zUqUg -jaia/wN4lIMCdJJmoPRUydbLJ8yVns9whFxXU1eGqaFf27jBdI/nPMVmO1YPsxnk -VvOiP6n1T+aZ7qaeOY9hsSmJ9FBeh3pOtRrdxmA8wBxD3zAORfLl89mjsw== ------END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC9zCCAd+gAwIBAgIJdh2LLVj8WJMXMA0GCSqGSIb3DQEBCwUAMCUxIzAhBgNV +BAMTGk1pbGlldSBOYW50YWlzIC8gVWJlciBTdHVwMB4XDTI2MDgxNjEyMTA0OVoX +DTM2MDgxNjEyMTA0OVowJTEjMCEGA1UEAxMaTWlsaWV1IE5hbnRhaXMgLyBVYmVy +IFN0dXAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsUjXhTk71qOWK +XB+9jJ9FiP6+FXrPM9fj9a/75XjTNtIfS55m35rlkz4cfZvtjW1XziyMe+86/wGM +fg3iG8Zvu4DOS4aONFBz8kWosi6p2AAIPUQVIEdCEjL0V5r0MYfHvFu+GCLVbPeQ +hrd11Y6HwWEhCsKsK3OQXlN8PK9cpzeSeoCNdzA1iseFuAXoPu9Gm88lLThJgEvx +z95/piTa3OavRaYraP+ytd3/f87XbVrbtRGJq6sPIV9FHBt4z4AXcGwUIqTQ1Gwi +kMOaROMlQpzYlKS+yoZ72p6xs9dF0kBKsitlbavJ2E7ZrVoQh0Ufr4/6X26kKGwH +BvaH3E9vAgMBAAGjKjAoMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggr +BgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAQEAE5sO2Nvgum66dib70UsbxTO7/8Os +yHy/RT7zUsgeVVGK18nIbC/SiZVQ9FNLw3ps0bIrXX968Ym4KJ1di5gcw5nuiVpf +1QNiN0t7vS6Gxaj2l9/TwoL409ud1kMZ2lXKyHnwVaNontNt7Y+e6HnOLeYNEepn +5v8qfwOa0H3e6o2T71uCepvVLCbmIngnpF5APkDNUbGnJFpoyxrrleNboQ8CZYY4 +uEsrPBZSRlhWLMLsJQOgLiRlnAYgqxS9C3DlxpZbsvA9eIDJuPquzUOuNX1KTMQl +My9rR/pXYvwd7xuOD+crkGRL6bLW9HRq9FWKT6JWEkNSagmyGxcPv/ilgQ== +-----END CERTIFICATE----- diff --git a/mobile/src/api/api.ts b/mobile/src/api/api.ts index 20977ee1..93bdfdb9 100644 --- a/mobile/src/api/api.ts +++ b/mobile/src/api/api.ts @@ -457,6 +457,31 @@ export const respondToAddressProposal = async ( } }; +// Le client corrige lui-même l'adresse de sa commande (refusé si déjà en +// livraison ou terminée, cf. UpdateOwnCommandAddress côté backend). +export const updateOwnCommandAddress = async ( + commandId: number, + deliveryAddress: string, +): Promise<{ success: boolean; message: string }> => { + try { + const { data } = await apiClient.put( + `${V1}/commands/${commandId}/address`, + { delivery_address: deliveryAddress }, + ); + return { + success: true, + message: data.message || "Adresse mise à jour", + }; + } catch (error: any) { + return { + success: false, + message: + error.response?.data?.error || + "Erreur lors de la mise à jour de l'adresse", + }; + } +}; + export const getOrderTracking = async ( commandId: number, ): Promise => { diff --git a/mobile/src/screens/client/OrderTrackingScreen.tsx b/mobile/src/screens/client/OrderTrackingScreen.tsx index 9d2c37f2..d07ec6df 100644 --- a/mobile/src/screens/client/OrderTrackingScreen.tsx +++ b/mobile/src/screens/client/OrderTrackingScreen.tsx @@ -17,6 +17,7 @@ import { confirmReception, cancelCommand, respondToAddressProposal, + updateOwnCommandAddress, formatOrderDate, formatPrice, calculateOrderTotal, @@ -70,6 +71,11 @@ export default function OrderTrackingScreen() { const [cancellingId, setCancellingId] = useState(null); const [cancelReason, setCancelReason] = useState(""); const [cancelLoading, setCancelLoading] = useState(false); + const [editingAddressId, setEditingAddressId] = useState( + null, + ); + const [newAddress, setNewAddress] = useState(""); + const [editAddressLoading, setEditAddressLoading] = useState(false); const [penaltyWarning, setPenaltyWarning] = useState(null); const [penaltyOrderId, setPenaltyOrderId] = useState(null); @@ -187,6 +193,25 @@ export default function OrderTrackingScreen() { } }; + const handleUpdateAddress = async (orderId: number) => { + setEditAddressLoading(true); + try { + const res = await updateOwnCommandAddress(orderId, newAddress); + if (res.success) { + showToast(res.message || "Adresse mise à jour", "success"); + setEditingAddressId(null); + setNewAddress(""); + fetchOrders(); + } else { + showToast(res.message || "Erreur", "error"); + } + } catch { + showToast("Erreur mise à jour adresse", "error"); + } finally { + setEditAddressLoading(false); + } + }; + const styles = useMemo( () => StyleSheet.create({ @@ -407,6 +432,12 @@ export default function OrderTrackingScreen() { "assigned", "en_route", ].includes(order.status); + // Corrigeable uniquement avant la prise en charge par + // un livreur (cf. UpdateOwnCommandAddress backend). + const canEditAddress = [ + "pending", + "assigned", + ].includes(order.status); return ( )} + {canEditAddress && ( +