Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0cf5800463 |
@@ -68,12 +68,11 @@ export default function ComposeScreen() {
|
||||
const insets = useSafeAreaInsets();
|
||||
const { workspaces, clients, isConfigured } = usePostiz();
|
||||
const queryClient = useQueryClient();
|
||||
const { prefillContent, prefillIntegrationIds, prefillImagePath, prefillImageId } =
|
||||
const { prefillContent, prefillIntegrationIds, prefillImages } =
|
||||
useLocalSearchParams<{
|
||||
prefillContent?: string;
|
||||
prefillIntegrationIds?: string;
|
||||
prefillImagePath?: string;
|
||||
prefillImageId?: string;
|
||||
prefillImages?: string;
|
||||
}>();
|
||||
|
||||
const [content, setContent] = useState("");
|
||||
@@ -95,12 +94,23 @@ export default function ComposeScreen() {
|
||||
if (prefillIntegrationIds) {
|
||||
setSelectedChannels(String(prefillIntegrationIds).split(",").filter(Boolean));
|
||||
}
|
||||
if (prefillImagePath && prefillImageId) {
|
||||
// Prefilled image has unknown workspace; associate with first workspace
|
||||
const wsId = workspaces[0]?.id ?? "";
|
||||
setMediaItems([{ type: "uploaded", id: String(prefillImageId), path: String(prefillImagePath), workspaceId: wsId }]);
|
||||
if (prefillImages && workspaces.length > 0) {
|
||||
try {
|
||||
const images: Array<{ id: string; path: string }> = JSON.parse(String(prefillImages));
|
||||
const wsId = workspaces[0]?.id ?? "";
|
||||
setMediaItems(
|
||||
images
|
||||
.filter((img) => img?.id && img?.path)
|
||||
.map((img): MediaItem => ({
|
||||
type: "uploaded",
|
||||
id: img.id,
|
||||
path: img.path,
|
||||
workspaceId: wsId,
|
||||
}))
|
||||
);
|
||||
} catch {}
|
||||
}
|
||||
}, [prefillContent, prefillIntegrationIds, prefillImagePath, prefillImageId, workspaces]);
|
||||
}, [prefillContent, prefillIntegrationIds, prefillImages, workspaces]);
|
||||
|
||||
useEffect(() => {
|
||||
if (prefillContent) return;
|
||||
|
||||
@@ -152,13 +152,14 @@ export default function PostsScreen() {
|
||||
|
||||
const handlePrefillCompose = (post: PostizPost) => {
|
||||
const integrations = post.integrations ?? (post.integration ? [post.integration] : []);
|
||||
router.push({
|
||||
pathname: "/(tabs)/compose",
|
||||
params: {
|
||||
prefillContent: stripHtml(post.content),
|
||||
prefillIntegrationIds: integrations.map((i) => i.id).join(","),
|
||||
},
|
||||
});
|
||||
const params: Record<string, string> = {
|
||||
prefillContent: stripHtml(post.content),
|
||||
prefillIntegrationIds: integrations.map((i) => i.id).join(","),
|
||||
};
|
||||
if (post.image?.length) {
|
||||
params.prefillImages = JSON.stringify(post.image);
|
||||
}
|
||||
router.push({ pathname: "/(tabs)/compose", params });
|
||||
};
|
||||
|
||||
const startReschedule = (post: PostizPost) => {
|
||||
|
||||
@@ -66,12 +66,20 @@ export function MediaLibraryModal({ visible, workspaces, defaultWorkspaceId, max
|
||||
if (!activeWorkspace) return;
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
const url = `${activeWorkspace.baseUrl}/media`;
|
||||
try {
|
||||
// eslint-disable-next-line no-undef
|
||||
const res = await globalThis.fetch(`${activeWorkspace.baseUrl}/media`, {
|
||||
const res = await globalThis.fetch(url, {
|
||||
headers: { Authorization: activeWorkspace.apiKey },
|
||||
});
|
||||
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
||||
if (!res.ok) {
|
||||
if (res.status === 404) {
|
||||
throw new Error(
|
||||
`Media listing endpoint not found (404).\nURL tried: ${url}\n\nThis feature requires Postiz to expose GET /media in its public API. Your version may not support it yet.`
|
||||
);
|
||||
}
|
||||
throw new Error(`HTTP ${res.status} — ${url}`);
|
||||
}
|
||||
const data = await res.json();
|
||||
const list: RawMediaItem[] = Array.isArray(data)
|
||||
? data
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export function stripHtml(html: string): string {
|
||||
export function stripHtml(html: string | null | undefined): string {
|
||||
if (!html) return "";
|
||||
// Decode entities first so encoded tags like <p> are also stripped
|
||||
let s = html
|
||||
.replace(/&/g, "&")
|
||||
|
||||
Reference in New Issue
Block a user