diff --git a/artifacts/postiz-mobile/app/(tabs)/compose.tsx b/artifacts/postiz-mobile/app/(tabs)/compose.tsx index c850387..c020418 100644 --- a/artifacts/postiz-mobile/app/(tabs)/compose.tsx +++ b/artifacts/postiz-mobile/app/(tabs)/compose.tsx @@ -1,5 +1,6 @@ import { Feather } from "@expo/vector-icons"; import { useQuery, useQueryClient } from "@tanstack/react-query"; +import axios from "axios"; import DateTimePicker from "@react-native-community/datetimepicker"; import * as Haptics from "expo-haptics"; import { Image } from "expo-image"; @@ -129,10 +130,15 @@ export default function ComposeScreen() { media = [{ id: uploaded.id, path: uploaded.path }]; } } + const contentItem: { content: string; image?: Array<{ id: string; path: string }> } = { + content: content.trim(), + }; + if (media.length > 0) contentItem.image = media; + const payload = { type: postNow ? "now" : "schedule", date: postNow ? new Date().toISOString() : scheduleDate.toISOString(), - content: [{ content: content.trim(), image: media }], + content: [contentItem], integrations: selectedChannels, }; await client.post("posts", payload); @@ -147,7 +153,15 @@ export default function ComposeScreen() { } catch (e: unknown) { Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error); let msg = "Could not submit post."; - if (e instanceof Error) msg += `\n${e.message}`; + if (axios.isAxiosError(e)) { + const data = e.response?.data; + const detail = data + ? (typeof data === "string" ? data : (data?.message ?? data?.error ?? JSON.stringify(data))).toString().slice(0, 300) + : e.message; + msg = `HTTP ${e.response?.status ?? "?"}: ${detail}`; + } else if (e instanceof Error) { + msg += `\n${e.message}`; + } Alert.alert("Failed", msg); } finally { setSubmitting(false);