feat(mail) : intégration mail OVH IMAP — boîte partagée, lecture, création/lien tâche #5

Merged
matthieu merged 70 commits from feat/mail-integration into develop 2026-05-20 07:45:33 +00:00
Showing only changes of commit bad292a316 - Show all commits

View File

@@ -1,4 +1,5 @@
<script setup lang="ts">
import type { Task } from '~/services/dto/task'
import { useMailStore } from '~/stores/mail'
import { useAuthStore } from '~/stores/auth'
@@ -85,13 +86,30 @@ function handleLoadMore(): void {
store.fetchMessages(true)
}
// Phase 6 : ces handlers seront branchés sur les modals MailCreateTaskModal / MailLinkTaskModal
// ─── Modals Phase 6 ────────────────────────────────────────────────────────
const showCreateTaskModal = ref(false)
const showLinkTaskModal = ref(false)
const activeMailIdForModal = ref<number | null>(null)
function handleCreateTask(mailId: number): void {
console.warn('[mail] handleCreateTask mailId=', mailId, '— modal à implémenter en Phase 6')
activeMailIdForModal.value = mailId
showCreateTaskModal.value = true
}
function handleLinkTask(mailId: number): void {
console.warn('[mail] handleLinkTask mailId=', mailId, '— modal à implémenter en Phase 6')
activeMailIdForModal.value = mailId
showLinkTaskModal.value = true
}
function handleTaskCreated(_task: Task): void {
showCreateTaskModal.value = false
// La tâche est créée et liée côté backend — toast géré par useMailService.createTaskFromMail
}
function handleTaskLinked(_taskId: number): void {
showLinkTaskModal.value = false
// Toast géré par useMailService.linkTask
}
</script>
@@ -143,5 +161,22 @@ function handleLinkTask(mailId: number): void {
/>
</div>
</div>
<!-- Modal créer tâche depuis mail -->
<MailCreateTaskModal
v-if="activeMailIdForModal !== null"
v-model="showCreateTaskModal"
:message-id="activeMailIdForModal"
:message-detail="selectedMessageDetail"
@created="handleTaskCreated"
/>
<!-- Modal lier mail à tâche -->
<MailLinkTaskModal
v-if="activeMailIdForModal !== null"
v-model="showLinkTaskModal"
:message-id="activeMailIdForModal"
@linked="handleTaskLinked"
/>
</div>
</template>