From 9cdcc2878464084b9737c4b8458b4ccee0de2026 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Jan 2026 17:17:09 +0000 Subject: [PATCH] feat: Integrate new PostCreateModal into MapView - Replace old 3-step wizard with single-screen PostCreateModal - Simplify handleOpenCreate function - Connect modal submit to createPost API - Connect Go Live button to LiveKit broadcast Co-Authored-By: Claude Opus 4.5 --- package.json | 2 +- src/components/Map/MapView.jsx | 319 +++++------------------ src/components/Posts/PostCreateModal.jsx | 6 +- 3 files changed, 68 insertions(+), 259 deletions(-) diff --git a/package.json b/package.json index a086af3..da0e127 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sociowire-frontend", "private": true, - "version": "0.0.50", + "version": "0.0.51", "type": "module", "scripts": { "dev": "vite --host 0.0.0.0", diff --git a/src/components/Map/MapView.jsx b/src/components/Map/MapView.jsx index 42bf9e7..636ccf2 100644 --- a/src/components/Map/MapView.jsx +++ b/src/components/Map/MapView.jsx @@ -8,6 +8,7 @@ import "../../styles/filters.css"; import { createPost, fetchPostPreview, resolveAssetRef } from "../../api/client"; import { LiveKitBroadcast, LiveKitViewerModal } from "../Live"; import { WeatherModal } from "../Weather"; +import PostCreateModal from "../Posts/PostCreateModal"; import { FILTER_MAIN_CATEGORIES, FILTER_CATEGORY_MAP, @@ -1530,42 +1531,15 @@ export default function MapView({ return; } - setIsCreating(true); - setCreateStep(0); - setDraftTitle(""); - setDraftBody(""); - setDraftUrl(""); - setDraftSource(""); - setDraftPublishedAt(""); - setDraftImage(""); - setDraftImageSmall(""); - setDraftImageMedium(""); - setDraftImageLarge(""); - setDraftImageFile(null); - setDraftImagePreview(LINK_PREVIEW_PLACEHOLDER); - setDraftMediaUrls([]); - setUseCustomImage(false); - setPostVisibility("public"); - setPostGroupId(""); - setPostUsers(""); - setImageVisibility("public"); - setImageGroupId(""); - setImageUsers(""); - setUrlPreviewLoading(false); - setUrlPreviewError(""); + // Get current map center as default coords + const map = mapRef.current; + if (map) { + const c = map.getCenter(); + setDraftCoords([c.lng, c.lat]); + } setSaveError(""); setIsSaving(false); - setTitleTouched(false); - setBodyTouched(false); - setImageTouched(false); - lastPreviewUrlRef.current = ""; - const main = mainFilter === "All" ? "News" : mainFilter; - setDraftCategory(main); - const list = CREATE_CATEGORY_MAP[main] || CREATE_CATEGORY_MAP.News; - setDraftSubCategory(list[0]); - setDraftCoords(null); - setModeSelectorVisible(true); - setModeChosen(false); + setIsCreating(true); }; // Update ref for long-press callback @@ -2159,227 +2133,62 @@ export default function MapView({ weatherEnabled={weatherViewEnabled} /> - {isCreating && modeChosen && ( -
-
-
- )} - - {modeSelectorVisible && ( - <> -
-
- -
Create a post
-
- {CONTENT_CREATOR_MODES.map((mode) => ( - - ))} -
-
- - )} - - {isCreating && modeChosen && ( -
- {/* Close button */} - - - {/* Step indicator */} -
- - Step {createStep + 1}/3 -
- - {/* STEP 0 - Position hint */} - {createStep === 0 && ( -
-

{currentFlow.hint}

-
- )} - - {/* STEP 1 - Category */} - {createStep === 1 && ( -
- -
- - -
-
- )} - - {/* STEP 1 - Title */} - {createStep === 1 && ( -
- - { - const v = e.target.value; - if (isLikelyUrl(v)) { - setDraftTitle(v); setTitleTouched(false); setDraftUrl(v.trim()); - setUrlPreviewError(""); setDraftSource(""); setDraftPublishedAt(""); - handleUrlPreview(v); - } else { - setDraftTitle(v); setTitleTouched(true); - } - }} - onPaste={(e) => { - const pasted = e.clipboardData?.getData('text') || ''; - if (pasted && isLikelyUrl(pasted.trim())) { - e.preventDefault(); - const v = pasted.trim(); - setDraftTitle(v); setTitleTouched(false); setDraftUrl(v); - setUrlPreviewError(""); setDraftSource(""); setDraftPublishedAt(""); - handleUrlPreview(v); - } - }} - /> - {draftUrl && !draftSource && Fetching preview...} - {draftSource && {draftSource}} - {urlPreviewError && {urlPreviewError}} -
- )} - - {/* STEP 2 - Preview */} - {createStep === 2 && shouldShowPreviewCard && ( -
- Preview - {draftSource && {draftSource}} -
- )} - - {/* STEP 2 - Description */} - {createStep === 2 && ( -
- -