diff --git a/lib/types/sqlite-types.js b/lib/types/sqlite-types.js --- a/lib/types/sqlite-types.js +++ b/lib/types/sqlite-types.js @@ -2,6 +2,7 @@ import type { ClientDBMessageInfo } from './message-types.js'; import type { StoreOperations } from './store-ops-types.js'; +import type { ClientDBDMOperation } from '../ops/dm-operations-store-ops.js'; export const outboundP2PMessageStatuses = Object.freeze({ // The message was prepared to be sent to other peers, but it's not encrypted. @@ -63,6 +64,9 @@ limit: number, offset: number, ) => Promise<Array<ClientDBMessageInfo>>, + +fetchDMOperationsByType: ( + type: string, + ) => Promise<Array<ClientDBDMOperation>>, // write operations +removeInboundP2PMessages: (ids: $ReadOnlyArray<string>) => Promise<void>, diff --git a/lib/utils/__mocks__/config.js b/lib/utils/__mocks__/config.js --- a/lib/utils/__mocks__/config.js +++ b/lib/utils/__mocks__/config.js @@ -46,6 +46,7 @@ getOutboundP2PMessagesByID: jest.fn(), searchMessages: jest.fn(), fetchMessages: jest.fn(), + fetchDMOperationsByType: jest.fn(), }, encryptedNotifUtilsAPI: { generateAESKey: jest.fn(), diff --git a/native/database/sqlite-api.js b/native/database/sqlite-api.js --- a/native/database/sqlite-api.js +++ b/native/database/sqlite-api.js @@ -18,6 +18,7 @@ getOutboundP2PMessagesByID: commCoreModule.getOutboundP2PMessagesByID, searchMessages: commCoreModule.searchMessages, fetchMessages: commCoreModule.fetchMessages, + fetchDMOperationsByType: commCoreModule.getDMOperationsByType, // write operations removeInboundP2PMessages: commCoreModule.removeInboundP2PMessages, diff --git a/web/database/sqlite-api.js b/web/database/sqlite-api.js --- a/web/database/sqlite-api.js +++ b/web/database/sqlite-api.js @@ -1,5 +1,6 @@ // @flow +import type { ClientDBDMOperation } from 'lib/ops/dm-operations-store-ops.js'; import { convertStoreOperationsToClientDBStoreOperations } from 'lib/shared/redux/client-db-utils.js'; import type { ClientDBMessageInfo } from 'lib/types/message-types.js'; import type { @@ -112,6 +113,19 @@ return messages ? [...messages] : []; }, + async fetchDMOperationsByType( + type: string, + ): Promise<Array<ClientDBDMOperation>> { + const sharedWorker = await getCommSharedWorker(); + + const data = await sharedWorker.schedule({ + type: workerRequestMessageTypes.GET_DM_OPERATIONS_BY_TYPE, + operationType: type, + }); + const operations = data?.operations; + return operations ? [...operations] : []; + }, + // write operations async removeInboundP2PMessages(ids: $ReadOnlyArray<string>): Promise<void> { const sharedWorker = await getCommSharedWorker();