Make snooze page show snooze times etc.
This commit is contained in:
parent
caecd859a1
commit
3795f35d7d
2 changed files with 23 additions and 5 deletions
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onMounted, ref, toRef } from 'vue';
|
import { computed, onMounted, ref, toRef } from 'vue';
|
||||||
import { ThreadRef, items, sources } from '../state';
|
import { ItemThread, MessageEvent, ThreadRef, items, sources } from '../state';
|
||||||
import Modal from './Modal.vue';
|
import Modal from './Modal.vue';
|
||||||
import { initFlowbite } from 'flowbite';
|
import { initFlowbite } from 'flowbite';
|
||||||
|
|
||||||
|
@ -107,8 +107,19 @@ function snoozeUntil(date: Date) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const newItems = items.value.slice();
|
const newItems = items.value.slice();
|
||||||
const item = newItems.find(item => item.source === selected.source && item.sourceItem === selected.sourceItem);
|
let item = newItems.find(item => item.source === selected.source && item.sourceItem === selected.sourceItem);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
|
const timeline = sources.value[selected.source].items[selected.sourceItem].threads[selected.thread].timeline;
|
||||||
|
const lastMessage = timeline.findLast(msg => msg.type === 'message') as MessageEvent | undefined;
|
||||||
|
const threadUpdated = timeline[timeline.length - 1]?.time ?? 0;
|
||||||
|
const thread: ItemThread = {
|
||||||
|
count: 0,
|
||||||
|
preview: lastMessage?.message ?? "",
|
||||||
|
updatedAt: threadUpdated,
|
||||||
|
contact: lastMessage?.contact
|
||||||
|
};
|
||||||
|
item = { source: selected.source, sourceItem: selected.sourceItem, updatedAt: threadUpdated, threads: { [selected.thread]: thread } };
|
||||||
|
items.value.push(item);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (selected.thread === -1) {
|
if (selected.thread === -1) {
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import { ItemThread, MessageEvent, sources } from '../../state';
|
import { ItemThread, MessageEvent, sources, items as stateItems } from '../../state';
|
||||||
import { deArray, setupSelectedThread } from '../../utils';
|
import { deArray, setupSelectedThread } from '../../utils';
|
||||||
import Item from '../Item.vue';
|
import Item from '../Item.vue';
|
||||||
import Modal from '../Modal.vue';
|
import Modal from '../Modal.vue';
|
||||||
|
@ -45,12 +45,19 @@ const items = computed(() => Object.keys(source.value.items).map(item => {
|
||||||
const sourceItem = parseInt(item);
|
const sourceItem = parseInt(item);
|
||||||
const sourceThreads = source.value.items[sourceItem].threads;
|
const sourceThreads = source.value.items[sourceItem].threads;
|
||||||
let updatedAt = 0;
|
let updatedAt = 0;
|
||||||
|
|
||||||
const itemThreads = Object.keys(sourceThreads).reduce((acc, curr) => {
|
const itemThreads = Object.keys(sourceThreads).reduce((acc, curr) => {
|
||||||
const thread = sourceThreads[parseInt(curr)];
|
const threadId = parseInt(curr);
|
||||||
|
const stateItem = stateItems.value.find(item => item.source === sourceId.value && item.sourceItem === sourceItem);
|
||||||
|
if (stateItem && threadId in stateItem.threads) {
|
||||||
|
acc[threadId] = stateItem.threads[threadId];
|
||||||
|
return acc;
|
||||||
|
}
|
||||||
|
const thread = sourceThreads[threadId];
|
||||||
const lastMessage = thread.timeline.findLast(msg => msg.type === 'message') as MessageEvent | undefined;
|
const lastMessage = thread.timeline.findLast(msg => msg.type === 'message') as MessageEvent | undefined;
|
||||||
const threadUpdated = thread.timeline[thread.timeline.length - 1]?.time ?? 0;
|
const threadUpdated = thread.timeline[thread.timeline.length - 1]?.time ?? 0;
|
||||||
updatedAt = Math.max(updatedAt, threadUpdated);
|
updatedAt = Math.max(updatedAt, threadUpdated);
|
||||||
acc[parseInt(curr)] = {
|
acc[threadId] = {
|
||||||
count: 0,
|
count: 0,
|
||||||
preview: lastMessage?.message ?? "",
|
preview: lastMessage?.message ?? "",
|
||||||
updatedAt: threadUpdated,
|
updatedAt: threadUpdated,
|
||||||
|
|
Loading…
Add table
Reference in a new issue