Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 0 additions & 159 deletions app/routes/business/campaign/campaign-content.tsx

This file was deleted.

5 changes: 0 additions & 5 deletions app/routes/business/campaign/route.tsx

This file was deleted.

2 changes: 1 addition & 1 deletion app/routes/campaign-detail/campaign-detail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ export default function CampaignDetailContent({

if (!campaign) return;

const brandIdNum = Number(brandData.id);
const brandIdNum = Number(searchParams.get("brandId"));
if (!Number.isFinite(brandIdNum) || brandIdNum < 0) return;

const domainParam = searchParams.get("domain");
Expand Down
22 changes: 14 additions & 8 deletions app/routes/chat/resuggest/resuggest-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,19 @@ export default function ReSuggestContent() {
const usageScopeOptions = USAGE_RANGE_TAGS.map((t) => ({ value: String(t.id), label: t.name }));

const sponsorProductOptions = useMemo(() => {
const baseOptions = proposalData?.product && proposalData.product !== "0"
? [{ value: proposalData.product, label: proposalData.product }]
: (proposalData?.products ?? [])
.filter((p) => p.id && p.name && String(p.id) !== "0")
.map((p) => ({ value: String(p.id), label: p.name }));
const baseOptions = (proposalData?.products ?? [])
.filter((p) => p.id && p.name && String(p.id) !== "0" && p.name !== "0")
.map((p) => ({ value: String(p.id), label: p.name }));

if (proposalData?.product && proposalData.product !== "0" && !baseOptions.find(opt => opt.label === proposalData.product)) {
baseOptions.unshift({ value: proposalData.product, label: proposalData.product });
}

// formValues.sponsorProduct 배열에 있는데 options에 없는 항목들 추가 (0 제외)
const missingOptions = (formValues.sponsorProduct || [])
.filter(sp => sp !== "0" && !baseOptions.find(opt => opt.value === sp))
.map(sp => ({ value: sp, label: sp }));

return [...missingOptions, ...baseOptions];
return [...baseOptions, ...missingOptions];
}, [proposalData, formValues.sponsorProduct]);

// ID 배열로 label들 찾기 헬퍼 함수
Expand Down Expand Up @@ -171,8 +172,13 @@ export default function ReSuggestContent() {
return;
}

if (!proposalData?.brandId) {
toast.error("브랜드 정보가 없습니다. 다시 시도해주세요.");
return;
}

const requestData = {
brandId: proposalData?.brandId || 1,
brandId: proposalData.brandId,
creatorId: Number(userId),
campaignId: proposalData?.campaignId || null,
campaignName: formData.campaignName || "",
Expand Down
26 changes: 19 additions & 7 deletions app/routes/matching/suggest/create/create-campaign-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ export default function CreateCampaignContent() {
}, []);

useEffect(() => {
// 신규/기존 모두 폼 초기화 (기존 제안도 빈 폼으로 시작)
reset(defaultCampaignFormValues);
}, [type, reset]);

Expand All @@ -122,13 +121,21 @@ export default function CreateCampaignContent() {
const usageScopeOptions = toOptions(USAGE_RANGE_TAGS);

const sponsorProductOptions = useMemo(() => {
// 사용자가 직접 입력한 협찬품 항목만 표시
const customOptions = (formValues.sponsorProduct || [])
.filter(sp => sp !== "0")
// 이전 페이지에서 받아온 협찬품 목록 표시
const baseOptions = (proposalData?.products ?? [])
.filter((p) => p.id && p.name && String(p.id) !== "0" && p.name !== "0")
.map((p) => ({ value: String(p.id), label: p.name }));

if (proposalData?.product && proposalData.product !== "0" && !baseOptions.find(opt => opt.label === proposalData.product)) {
baseOptions.unshift({ value: proposalData.product, label: proposalData.product });
}

const missingOptions = (formValues.sponsorProduct || [])
.filter(sp => sp !== "0" && !baseOptions.find(opt => opt.value === sp))
.map(sp => ({ value: sp, label: sp }));

return customOptions;
}, [formValues.sponsorProduct]);
return [...baseOptions, ...missingOptions];
}, [proposalData, formValues.sponsorProduct]);

// ID 배열로 label들 찾기 헬퍼 함수
const findLabels = (options: { value: string; label: string }[], values?: string[]) => {
Expand Down Expand Up @@ -161,7 +168,12 @@ export default function CreateCampaignContent() {

const brandId = brandIdParam
? Number(brandIdParam)
: (type === "new" ? 0 : (proposalData?.brandId ?? 1));
: proposalData?.brandId ?? 0;

if (brandId == null) {
toast.error("브랜드 정보가 없습니다. 다시 시도해주세요.");
return;
}

const campaignId = type === "existing"
? (campaignIdParam ? Number(campaignIdParam) : (proposalData?.campaignId || null))
Expand Down
2 changes: 1 addition & 1 deletion app/routes/matching/suggest/matching-suggest-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default function MatchingSuggestContent() {
useHideBottomTab(isSheetOpen);

const handleNewCampaign = () => {
navigate("/matching/suggest/create?type=new");
navigate(`/matching/suggest/create?type=new&brandId=${proposalData?.brandId}&domain=${proposalData?.domain}`);
};

const handleExistingCampaign = async () => {
Expand Down