Move conversations to SQLCipher
This commit is contained in:
parent
8cd3db0262
commit
cd60bdd08a
31 changed files with 1354 additions and 774 deletions
|
@ -1,7 +1,8 @@
|
|||
/* global window, setTimeout */
|
||||
|
||||
const electron = require('electron');
|
||||
const { forEach, isFunction, isObject } = require('lodash');
|
||||
|
||||
const { forEach, isFunction, isObject, merge } = require('lodash');
|
||||
|
||||
const { deferredToPromise } = require('./deferred_to_promise');
|
||||
const MessageType = require('./types/message');
|
||||
|
@ -37,6 +38,20 @@ module.exports = {
|
|||
close,
|
||||
removeDB,
|
||||
|
||||
getConversationCount,
|
||||
saveConversation,
|
||||
saveConversations,
|
||||
getConversationById,
|
||||
updateConversation,
|
||||
removeConversation,
|
||||
_removeConversations,
|
||||
|
||||
getAllConversations,
|
||||
getAllConversationIds,
|
||||
getAllPrivateConversations,
|
||||
getAllGroupsInvolvingId,
|
||||
searchConversations,
|
||||
|
||||
getMessageCount,
|
||||
saveMessage,
|
||||
saveLegacyMessage,
|
||||
|
@ -49,6 +64,7 @@ module.exports = {
|
|||
|
||||
getMessageBySender,
|
||||
getMessageById,
|
||||
getAllMessages,
|
||||
getAllMessageIds,
|
||||
getMessagesBySentAt,
|
||||
getExpiredMessages,
|
||||
|
@ -222,6 +238,86 @@ async function removeDB() {
|
|||
await channels.removeDB();
|
||||
}
|
||||
|
||||
async function getConversationCount() {
|
||||
return channels.getConversationCount();
|
||||
}
|
||||
|
||||
async function saveConversation(data) {
|
||||
await channels.saveConversation(data);
|
||||
}
|
||||
|
||||
async function saveConversations(data) {
|
||||
await channels.saveConversations(data);
|
||||
}
|
||||
|
||||
async function getConversationById(id, { Conversation }) {
|
||||
const data = await channels.getConversationById(id);
|
||||
return new Conversation(data);
|
||||
}
|
||||
|
||||
async function updateConversation(id, data, { Conversation }) {
|
||||
const existing = await getConversationById(id, { Conversation });
|
||||
if (!existing) {
|
||||
throw new Error(`Conversation ${id} does not exist!`);
|
||||
}
|
||||
|
||||
const merged = merge({}, existing.attributes, data);
|
||||
await channels.updateConversation(merged);
|
||||
}
|
||||
|
||||
async function removeConversation(id, { Conversation }) {
|
||||
const existing = await getConversationById(id, { Conversation });
|
||||
|
||||
// Note: It's important to have a fully database-hydrated model to delete here because
|
||||
// it needs to delete all associated on-disk files along with the database delete.
|
||||
if (existing) {
|
||||
await channels.removeConversation(id);
|
||||
await existing.cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
// Note: this method will not clean up external files, just delete from SQL
|
||||
async function _removeConversations(ids) {
|
||||
await channels.removeConversation(ids);
|
||||
}
|
||||
|
||||
async function getAllConversations({ ConversationCollection }) {
|
||||
const conversations = await channels.getAllConversations();
|
||||
|
||||
const collection = new ConversationCollection();
|
||||
collection.add(conversations);
|
||||
return collection;
|
||||
}
|
||||
|
||||
async function getAllConversationIds() {
|
||||
const ids = await channels.getAllConversationIds();
|
||||
return ids;
|
||||
}
|
||||
|
||||
async function getAllPrivateConversations({ ConversationCollection }) {
|
||||
const conversations = await channels.getAllPrivateConversations();
|
||||
|
||||
const collection = new ConversationCollection();
|
||||
collection.add(conversations);
|
||||
return collection;
|
||||
}
|
||||
|
||||
async function getAllGroupsInvolvingId(id, { ConversationCollection }) {
|
||||
const conversations = await channels.getAllGroupsInvolvingId(id);
|
||||
|
||||
const collection = new ConversationCollection();
|
||||
collection.add(conversations);
|
||||
return collection;
|
||||
}
|
||||
|
||||
async function searchConversations(query, { ConversationCollection }) {
|
||||
const conversations = await channels.searchConversations(query);
|
||||
|
||||
const collection = new ConversationCollection();
|
||||
collection.add(conversations);
|
||||
return collection;
|
||||
}
|
||||
|
||||
async function getMessageCount() {
|
||||
return channels.getMessageCount();
|
||||
}
|
||||
|
@ -267,6 +363,12 @@ async function getMessageById(id, { Message }) {
|
|||
return new Message(message);
|
||||
}
|
||||
|
||||
// For testing only
|
||||
async function getAllMessages({ MessageCollection }) {
|
||||
const messages = await channels.getAllMessages();
|
||||
return new MessageCollection(messages);
|
||||
}
|
||||
|
||||
async function getAllMessageIds() {
|
||||
const ids = await channels.getAllMessageIds();
|
||||
return ids;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue