feat: 네이티브 alert/confirm/prompt → 공용 인앱 다이얼로그 (PC 'sb_pt' 제거)
CI / build (push) Failing after 15m30s

- composables/dialog + components/ui/AppDialog(App 루트 마운트)
- window.alert 전역 오버라이드로 모든 alert 인앱화
- confirm/prompt(동기)는 각 호출부를 await dialog.confirm/prompt 로 교체
  (가계부·예산·고정지출·계좌·태그·관리자·게시판·설정 — 삭제/열람제한 등)
- 웹/PC/APK 일관 UI, 의미있는 제목 부여

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-24 21:57:50 +09:00
parent 643bb8011b
commit f533df0024
13 changed files with 222 additions and 14 deletions
+5 -3
View File
@@ -3,6 +3,7 @@ import { onMounted, ref, computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { boardApi } from '@/api/boardApi'
import { useAuthStore } from '@/stores/auth'
import { useDialog } from '@/composables/dialog'
import { formatRelative } from '@/utils/datetime'
import MarkdownViewer from '@/components/editor/MarkdownViewer.vue'
import MarkdownEditor from '@/components/editor/MarkdownEditor.vue'
@@ -12,6 +13,7 @@ import { DEFAULT_BOARD } from '@/constants/boards'
const route = useRoute()
const router = useRouter()
const auth = useAuthStore()
const dialog = useDialog()
const postId = route.params.id
// 게시판(카테고리): URL 우선, 없으면 글의 category, 그래도 없으면 기본
@@ -49,7 +51,7 @@ async function load() {
}
async function removePost() {
if (!confirm('이 게시글을 삭제하시겠습니까?')) return
if (!(await dialog.confirm('이 게시글을 삭제하시겠습니까?', { title: '게시글 삭제', danger: true }))) return
try {
await boardApi.remove(postId)
router.replace(`/board/${category.value}`)
@@ -59,7 +61,7 @@ async function removePost() {
}
async function blockPost() {
const reason = prompt('열람 제한 사유 (선택):', '')
const reason = await dialog.prompt('열람 제한 사유 (선택):', { title: '열람 제한', placeholder: '사유(선택)' })
if (reason === null) return
try {
await boardApi.block(postId, reason)
@@ -94,7 +96,7 @@ async function addComment() {
}
async function removeComment(c) {
if (!confirm('댓글을 삭제하시겠습니까?')) return
if (!(await dialog.confirm('댓글을 삭제하시겠습니까?', { title: '댓글 삭제', danger: true }))) return
try {
await boardApi.removeComment(c.id)
post.value.comments = post.value.comments.filter((x) => x.id !== c.id)