feat: 设为`已处理`后, 更新列表

dev/ckeditor
Lei OT 3 months ago
parent 95a1b16085
commit f7f9500413

@ -336,7 +336,7 @@ const updateEmailKeyFun = {
const readCache = await readIndexDB(params.mai_sn_list, 'listrow', 'mailbox')
const updateField = Object.keys(params.set).reduce((a, c) => ({ ...a, [updateEmailKeyMap[c]]: params.set[c] }), {})
writeIndexDB(
params.mai_sn_list.map((ele) => ({ data: { ...(readCache.get(ele).data || {}), ...updateField }, key: ele })),
params.mai_sn_list.map((ele) => ({ data: { ...(readCache.get(ele)?.data || {}), ...updateField }, key: ele })),
'listrow',
'mailbox',
)
@ -350,6 +350,26 @@ const updateEmailKeyFun = {
// console.log(`[EmailDetail] Emitted internal`, EMAIL_CHANNEL_NAME, notificationPayload);
internalEventEmitter.emit(EMAIL_CHANNEL_NAME, notificationPayload);
},
processed: async (params) => {
const readRow0 = await readIndexDB(params.mai_sn_list[0], 'listrow', 'mailbox')
console.log('first000', readRow0);
const listKey = readRow0?.data?.listKey || '';
if (listKey) {
console.log('first', listKey);
const readCache = await readIndexDB(listKey, 'maillist', 'mailbox')
console.log('222', readCache);
const updatedMailList = readCache.data.filter(mai_sn => !params.mai_sn_list.includes(mai_sn));
writeIndexDB([{ key: listKey, data: updatedMailList }], 'maillist', 'mailbox')
// 通知邮件列表数据更新
const notificationPayload = { type: 'listrow', listKey, affectKeys: params.mai_sn_list }
// - 多个tab
const channel = getEmailChangesChannel()
channel.postMessage(notificationPayload)
// - 当前tab
// console.log(`[EmailDetail] Emitted internal`, EMAIL_CHANNEL_NAME, notificationPayload);
internalEventEmitter.emit(EMAIL_CHANNEL_NAME, notificationPayload);
}
}
}
/**
* 更新邮件属性

@ -274,24 +274,77 @@ export const readIndexDB = (keys=null, table, database) => {
}
})
};
export const deleteIndexDBbyKey = (key, table, database) => {
var open = indexedDB.open(database, INDEXED_DB_VERSION)
open.onupgradeneeded = function () {
// var db = open.result
// // 数据库是否存在
// if (!db.objectStoreNames.contains(table)) {
// var store = db.createObjectStore(table, { keyPath: 'id', autoIncrement: true })
// }
}
open.onsuccess = function () {
var db = open.result
var tx = db.transaction(table, 'readwrite')
var store = tx.objectStore(table)
store.delete(key)
tx.oncomplete = function () {
db.close()
export const deleteIndexDBbyKey = (keys=null, table, database) => {
return new Promise((resolve, reject) => {
var open = indexedDB.open(database, INDEXED_DB_VERSION)
open.onupgradeneeded = function () {
// var db = open.result
// // 数据库是否存在
// if (!db.objectStoreNames.contains(table)) {
// var store = db.createObjectStore(table, { keyPath: 'id', autoIncrement: true })
// }
}
}
open.onsuccess = function (e) {
let db = e.target.result
// 数据库是否存在
if (!db.objectStoreNames.contains(table)) {
resolve('Database does not exist.')
return
}
var tx = db.transaction(table, 'readwrite')
var store = tx.objectStore(table)
if (Array.isArray(keys) && keys.length > 0) {
const promises = keys.map((key) => {
return new Promise((innerResolve) => {
const delRequest = store.delete(key)
delRequest.onsuccess = (event) => {
const result = event.target.result
if (result) {
innerResolve()
} else {
innerResolve(void 0) // Resolve with undefined for non-existent keys
}
}
delRequest.onerror = (event) => {
innerResolve(undefined)
}
})
})
Promise.allSettled(promises)
.then((results) => {
resolve(results)
})
.catch((error) => {
reject(error)
})
} else if (!isEmpty(keys)) { // Handle single key
const delRequest = store.delete(keys);
delRequest.onsuccess = (event) => {
const result = event.target.result;
if (result) {
resolve(result);
} else {
resolve();
}
};
delRequest.onerror = (event) => {
reject(event.target.error);
};
} else {
// 删除所有
let clearRequest = store.clear()
clearRequest.onsuccess = function (e) {
resolve(e.target.result)
}
clearRequest.onerror = function (e) {
reject(e.target.error)
}
}
tx.oncomplete = function () {
db.close()
}
}
})
};
function cleanOldData(database, storeNames=[], dateKey = 'timestamp') {

Loading…
Cancel
Save