feat: update reward version to 1.0.13 and modify dialog button labels for clarity
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m31s

This commit is contained in:
2026-05-01 23:32:17 -04:00
parent e77254eabf
commit 8308d205e8
12 changed files with 223 additions and 93 deletions
+23 -2
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, onMounted, onUnmounted, watch, nextTick } from 'vue'
import { computed, ref, onMounted, onUnmounted, watch, nextTick } from 'vue'
import ModalDialog from '../shared/ModalDialog.vue'
import ScheduleModal from '../shared/ScheduleModal.vue'
import PendingRewardDialog from './PendingRewardDialog.vue'
@@ -95,6 +95,14 @@ const kebabBtnRefs = ref<Map<string, HTMLElement>>(new Map())
const showScheduleModal = ref(false)
const scheduleTarget = ref<ChildTask | null>(null)
const pendingDialogReward = computed<Reward | RewardStatus | null>(() => {
if (pendingEditOverrideTarget.value?.type === 'reward') {
return pendingEditOverrideTarget.value.entity as Reward
}
return selectedReward.value
})
// Expiry timers
const expiryTimers = ref<number[]>([])
@@ -449,6 +457,7 @@ function isChoreScheduledToday(item: ChildTask): boolean {
}
function isChoreExpired(item: ChildTask): boolean {
if (item.pending_status === 'pending') return false
if (!item.schedule) return false
const now = new Date()
if (!isScheduledToday(item.schedule, now)) return false
@@ -777,6 +786,7 @@ const triggerTask = (task: ChildTask) => {
selectedTask.value = task
const pendingRewardIds = getPendingRewardIds()
if (pendingRewardIds.length > 0) {
selectedReward.value = null
showPendingRewardDialog.value = true
return
}
@@ -841,13 +851,13 @@ const confirmTriggerTask = async () => {
const triggerReward = (reward: RewardStatus) => {
if (reward.points_needed > 0) return
selectedReward.value = reward
// If there is a pending reward and it's not this one, show the pending dialog
const pendingRewardIds = getPendingRewardIds()
if (pendingRewardIds.length > 0 && !reward.redeeming) {
showPendingRewardDialog.value = true
return
}
selectedReward.value = reward
setTimeout(() => {
showRewardConfirm.value = true
}, 150)
@@ -1158,6 +1168,16 @@ function goToAssignRewards() {
<!-- Pending Reward Dialog -->
<PendingRewardDialog
v-if="showPendingRewardDialog"
:reward-name="pendingDialogReward?.name"
:child-name="pendingDialogReward ? child?.name : undefined"
:image-url="pendingDialogReward?.image_url ?? null"
:subtitle="
pendingDialogReward
? pendingDialogReward.points_needed === 0
? 'Reward Ready!'
: pendingDialogReward.points_needed + ' more points'
: undefined
"
:message="
pendingEditOverrideTarget
? 'This reward is currently pending. Changing its cost will cancel the pending request. Would you like to proceed?'
@@ -1168,6 +1188,7 @@ function goToAssignRewards() {
() => {
showPendingRewardDialog = false
pendingEditOverrideTarget = null
selectedReward = null
}
"
/>