feat: normalize email handling in signup, login, and verification processes; refactor event handling in task and reward components
All checks were successful
Gitea Actions Demo / build-and-push (push) Successful in 50s

This commit is contained in:
2026-01-28 16:42:06 -05:00
parent 3066d7d356
commit 6f5b61de7f
18 changed files with 188 additions and 172 deletions

View File

@@ -6,6 +6,7 @@
<ItemList
v-else
ref="rewardListRef"
fetchUrl="/api/reward/list"
itemKey="rewards"
:itemFields="REWARD_FIELDS"
@@ -35,7 +36,7 @@
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { ref, onMounted, onUnmounted } from 'vue'
import { useRouter } from 'vue-router'
import ItemList from '../shared/ItemList.vue'
import MessageBlock from '@/components/shared/MessageBlock.vue'
@@ -45,7 +46,7 @@ import DeleteModal from '../shared/DeleteModal.vue'
import type { Reward } from '@/common/models'
import { REWARD_FIELDS } from '@/common/models'
import '@/assets/view-shared.css'
import { eventBus } from '@/common/eventBus'
const $router = useRouter()
@@ -54,20 +55,37 @@ const rewardToDelete = ref<string | null>(null)
const rewardListRef = ref()
const rewardCountRef = ref<number>(-1)
function handleRewardModified(event: any) {
// Always refresh the reward list on any add, edit, or delete
if (rewardListRef.value && typeof rewardListRef.value.refresh === 'function') {
rewardListRef.value.refresh()
}
}
onMounted(() => {
eventBus.on('reward_modified', handleRewardModified)
})
onUnmounted(() => {
eventBus.off('reward_modified', handleRewardModified)
})
function confirmDeleteReward(rewardId: string) {
rewardToDelete.value = rewardId
showConfirm.value = true
}
const deleteReward = async () => {
if (!rewardToDelete.value) return
const id =
typeof rewardToDelete.value === 'object' && rewardToDelete.value !== null
? rewardToDelete.value.id
: rewardToDelete.value
if (!id) return
try {
const resp = await fetch(`/api/reward/${rewardToDelete.value}`, {
const resp = await fetch(`/api/reward/${id}`, {
method: 'DELETE',
})
if (!resp.ok) throw new Error(`HTTP ${resp.status}`)
// Refresh the reward list after successful delete
rewardListRef.value?.refresh()
// No need to refresh here; SSE will trigger refresh
} catch (err) {
console.error('Failed to delete reward:', err)
} finally {