Ghost형 툴바·초안 자동 저장·발행 모달, private 제거, 미디어 모달 통합, 발행일·수정일 표시 설정과 DB 마이그레이션 025·026을 반영한다. Co-authored-by: Cursor <cursoragent@cursor.com>
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
/**
|
|
* 공개 화면용 게시 날짜를 YYYY.MM.DD 형식으로 변환한다.
|
|
* @param {string | null | undefined} value - ISO 8601 등 파싱 가능한 날짜 문자열
|
|
* @returns {string} 빈 문자열 또는 YYYY.MM.DD
|
|
*/
|
|
export function formatPostDate(value) {
|
|
if (!value) {
|
|
return ''
|
|
}
|
|
|
|
const date = new Date(value)
|
|
|
|
if (Number.isNaN(date.getTime())) {
|
|
return ''
|
|
}
|
|
|
|
const year = date.getFullYear()
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
|
|
return `${year}.${month}.${day}`
|
|
}
|
|
|
|
/**
|
|
* 관리자·상세 메타용 날짜·시각을 YYYY.MM.DD 오전/오후 HH:MM 형식으로 변환한다.
|
|
* @param {string | null | undefined} value - ISO 8601 등 파싱 가능한 날짜 문자열
|
|
* @returns {string} 빈 문자열 또는 포맷된 날짜·시각
|
|
*/
|
|
export function formatPostDateTime(value) {
|
|
if (!value) {
|
|
return ''
|
|
}
|
|
|
|
const date = new Date(value)
|
|
|
|
if (Number.isNaN(date.getTime())) {
|
|
return ''
|
|
}
|
|
|
|
const year = date.getFullYear()
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
const hours = date.getHours()
|
|
const minutes = String(date.getMinutes()).padStart(2, '0')
|
|
const period = hours < 12 ? '오전' : '오후'
|
|
const hour12 = String(hours % 12 || 12).padStart(2, '0')
|
|
|
|
return `${year}.${month}.${day} ${period} ${hour12}:${minutes}`
|
|
}
|
|
|
|
/**
|
|
* 발행 이후 본문·메타 수정이 있었는지 판별한다(동일 초 갱신은 제외).
|
|
* @param {{ publishedAt?: string | null, updatedAt?: string | null }} post - 게시물
|
|
* @returns {boolean} 발행 후 수정 여부
|
|
*/
|
|
export function wasPostUpdatedAfterPublish(post) {
|
|
if (!post?.publishedAt || !post?.updatedAt) {
|
|
return false
|
|
}
|
|
|
|
const publishedMs = new Date(post.publishedAt).getTime()
|
|
const updatedMs = new Date(post.updatedAt).getTime()
|
|
|
|
if (Number.isNaN(publishedMs) || Number.isNaN(updatedMs)) {
|
|
return false
|
|
}
|
|
|
|
return updatedMs - publishedMs > 60_000
|
|
}
|