- FeedbackDialog: 잘 놀았어요/안 맞았어요 + BAD 사유 선택·추가입력 - 채팅 '산책 완료' 버튼 + 2시간 FEEDBACK_REQUEST 알림 → 피드백 팝업 - AffinityBadges: 동네 찰떡지수(전체), 우리 찰떡지수(매칭 쌍·유료 게이팅) 스팟 메이트/AI 추천 카드 및 우리 강아지 프로필에 노출 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -78,7 +78,20 @@
|
||||
</q-footer>
|
||||
|
||||
<!-- 매칭 수락 시 1:1 채팅 -->
|
||||
<MatchChatDialog v-if="matchChatId != null" v-model="matchChatOpen" :match-id="matchChatId" />
|
||||
<MatchChatDialog
|
||||
v-if="matchChatId != null"
|
||||
v-model="matchChatOpen"
|
||||
:match-id="matchChatId"
|
||||
@checkout="openFeedback"
|
||||
/>
|
||||
|
||||
<!-- 산책 후 찰떡지수 피드백 -->
|
||||
<FeedbackDialog
|
||||
v-if="feedbackMatchId != null && dogs.currentDogId != null"
|
||||
v-model="feedbackOpen"
|
||||
:match-id="feedbackMatchId"
|
||||
:rater-dog-id="dogs.currentDogId"
|
||||
/>
|
||||
</q-layout>
|
||||
</template>
|
||||
|
||||
@@ -88,6 +101,7 @@ import { useRouter } from 'vue-router'
|
||||
import { useQuasar } from 'quasar'
|
||||
import AdBanner from '@/components/AdBanner.vue'
|
||||
import MatchChatDialog from '@/components/MatchChatDialog.vue'
|
||||
import FeedbackDialog from '@/components/FeedbackDialog.vue'
|
||||
import { useSubscriptionStore } from '@/stores/subscription'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import { useDogsStore } from '@/stores/dogs'
|
||||
@@ -105,6 +119,15 @@ const $q = useQuasar()
|
||||
const matchChatOpen = ref(false)
|
||||
const matchChatId = ref<number | null>(null)
|
||||
|
||||
const feedbackOpen = ref(false)
|
||||
const feedbackMatchId = ref<number | null>(null)
|
||||
|
||||
/** 채팅 '산책 완료' 버튼 또는 2시간 알림 → 피드백 팝업 열기. */
|
||||
function openFeedback(id: number) {
|
||||
feedbackMatchId.value = id
|
||||
feedbackOpen.value = true
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
await dogs.loadMyDogs()
|
||||
if (auth.member && dogs.currentDogId != null) {
|
||||
@@ -125,6 +148,17 @@ watch(
|
||||
},
|
||||
)
|
||||
|
||||
// 2시간 후 피드백 요청 알림 → 찰떡지수 피드백 팝업
|
||||
watch(
|
||||
() => matching.feedbackMatchId,
|
||||
(id) => {
|
||||
if (id != null) {
|
||||
openFeedback(id)
|
||||
matching.feedbackMatchId = null
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
async function onAccept(id: number) {
|
||||
try {
|
||||
await matching.accept(id)
|
||||
|
||||
Reference in New Issue
Block a user