Skip to content

Commit

Permalink
Merge pull request #305 from mash-up-kr/feature/update-schedule
Browse files Browse the repository at this point in the history
스케줄 주소 키값 변경 대응
  • Loading branch information
kikiyeom committed Jun 17, 2024
2 parents 534cdf9 + 00cf270 commit c4ca16e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,14 @@ const ScheduleTemplate = () => {
y: latitude,
building_name: buildingName,
} = json.documents[0].road_address;
const placeName = buildingName || address;
const placeName = buildingName || '';

setValue('locationInfo', {
address,
roadAddress: address,
latitude,
longitude,
placeName,
detailAddress: placeName,
});
setValue('placeName', placeName);
},
}).open();
};
Expand Down Expand Up @@ -129,8 +128,11 @@ const ScheduleTemplate = () => {
<Styled.InputWithButton>
<InputField
$size="md"
placeholder="장소"
{...register('placeName', { required: locationType === LocationType.OFFLINE })}
placeholder="주소"
disabled={false}
{...register('locationInfo.roadAddress', {
required: locationType === LocationType.OFFLINE,
})}
/>
<Button shape="primaryLine" $size="md" onClick={handleClickAddressSearch}>
주소 검색
Expand All @@ -139,7 +141,7 @@ const ScheduleTemplate = () => {
<InputField
$size="md"
placeholder="상세 주소를 입력해 주세요 (ex. 동, 호, 층 등)"
{...register('detailAddress')}
{...register('locationInfo.detailAddress')}
/>
</Styled.LocationWrapper>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ interface ScheduleInfoListProps {
publishedAt?: string;
status: ValueOf<typeof ScheduleStatus>;
location: {
address: string | null;
placeName: string;
roadAddress?: string | null;
detailAddress: string;
};
}

Expand Down Expand Up @@ -47,9 +47,11 @@ const ScheduleInfoList = ({
{
label: '장소',
value:
location.address === null
? location.placeName
: `${location.placeName}, ${location.address}`,
location.roadAddress === null
? location.detailAddress // ZOOM
: `${location.roadAddress}${
location.detailAddress ? `, ${location.detailAddress}` : ''
}`,
},
{
label: '배포 일시',
Expand Down
26 changes: 10 additions & 16 deletions src/types/dto/schedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,28 +25,27 @@ export interface ContentsCreateRequest {
desc: string;
}

export interface ScheduleCreateRequest {
interface Location {
roadAddress?: string | null;
latitude?: number | null;
longitude?: number | null;
detailAddress?: string;
}

export interface ScheduleCreateRequest extends Location {
generationNumber?: number;
endedAt: string;
name: string;
startedAt: string;
eventsCreateRequests: EventCreateRequest[];
address?: string;
latitude?: number;
longitude?: number;
placeName?: string;
}

export interface ScheduleUpdateRequest {
export interface ScheduleUpdateRequest extends Location {
generationNumber?: number;
endedAt: string;
name: string;
startedAt: string;
eventsCreateRequests: EventCreateRequest[];
address?: string;
latitude?: number;
longitude?: number;
placeName?: string;
}

export interface ScheduleResponse {
Expand All @@ -59,12 +58,7 @@ export interface ScheduleResponse {
publishedAt?: string;
eventList: Session[];
status: ValueOf<typeof ScheduleStatus>;
location: {
address: string | null;
latitude: number | null;
longitude: number | null;
placeName: string;
};
location: { detailAddress: string } & Omit<Location, 'detailAddress'>;
}

export interface QRCodeRequest {
Expand Down
26 changes: 9 additions & 17 deletions src/utils/schedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@ export interface ScheduleFormValues {
date: Dayjs;
sessions: EventCreateRequest[];
locationType: ValueOf<typeof LocationType>;
placeName?: string;
locationInfo?: {
address: string;
roadAddress: string;
latitude: string;
longitude: string;
placeName: string;
detailAddress: string;
};
detailAddress?: string;
}

export const getScheduleStatusText = (status: ValueOf<typeof ScheduleStatus>) => {
Expand All @@ -49,7 +47,7 @@ export const parseScheduleResponseToFormValues = (
generationNumber,
startedAt,
eventList,
location: { address, placeName, latitude, longitude },
location: { roadAddress, detailAddress, latitude, longitude },
} = response;

const date: Dayjs = dayjs(startedAt, 'YYYY-MM-DD').startOf('day');
Expand All @@ -65,23 +63,18 @@ export const parseScheduleResponseToFormValues = (
})),
}));

if (address) {
// address의 형식: 주소 (상세주소)
const baseAddress = address.replace(/\s*\(.*?\)\s*/g, '');
const [, detailAddress] = address.match(/\(([^)]+)\)/) ?? [];
if (roadAddress) {
return {
name,
generationNumber,
date,
sessions,
locationType: LocationType.OFFLINE,
placeName,
detailAddress,
locationInfo: {
address: baseAddress,
roadAddress,
latitude: String(latitude),
longitude: String(longitude),
placeName,
detailAddress: detailAddress ?? '',
},
};
}
Expand All @@ -98,8 +91,7 @@ export const parseScheduleResponseToFormValues = (
export const parseFormValuesToScheduleRequest = (
formValues: ScheduleFormValues,
): ScheduleCreateRequest | ScheduleUpdateRequest => {
const { generationNumber, date, sessions, name, locationType, locationInfo, detailAddress } =
formValues;
const { generationNumber, date, sessions, name, locationType, locationInfo } = formValues;

const formattedDate = date.format('YYYY-MM-DD');

Expand All @@ -125,10 +117,10 @@ export const parseFormValuesToScheduleRequest = (
};

if (locationType === LocationType.OFFLINE && locationInfo) {
scheduleRequest.address = `${locationInfo.address}${detailAddress ? `(${detailAddress})` : ''}`;
scheduleRequest.roadAddress = locationInfo.roadAddress;
scheduleRequest.latitude = Number(locationInfo.latitude);
scheduleRequest.longitude = Number(locationInfo.longitude);
scheduleRequest.placeName = locationInfo.placeName;
scheduleRequest.detailAddress = locationInfo.detailAddress;
}

return scheduleRequest;
Expand Down

0 comments on commit c4ca16e

Please sign in to comment.