Page MenuHomePhabricator

D13662.diff
No OneTemporary

D13662.diff

diff --git a/lib/handlers/db-ops-handler.react.js b/lib/handlers/db-ops-handler.react.js
--- a/lib/handlers/db-ops-handler.react.js
+++ b/lib/handlers/db-ops-handler.react.js
@@ -4,15 +4,9 @@
import { opsProcessingFinishedActionType } from '../actions/db-ops-actions.js';
import { usePeerToPeerCommunication } from '../tunnelbroker/peer-to-peer-context.js';
-import { useTunnelbroker } from '../tunnelbroker/tunnelbroker-context.js';
+import { useConfirmPeerToPeerMessage } from '../tunnelbroker/use-confirm-peer-to-peer-message.js';
import type { DBOpsEntry } from '../types/db-ops-types.js';
-import {
- type MessageProcessed,
- peerToPeerMessageTypes,
-} from '../types/tunnelbroker/peer-to-peer-message-types.js';
import { getConfig } from '../utils/config.js';
-import { getContentSigningKey } from '../utils/crypto-utils.js';
-import { getMessageForException } from '../utils/errors.js';
import { useDispatch, useSelector } from '../utils/redux-utils.js';
function DBOpsHandler(): React.Node {
@@ -20,8 +14,8 @@
const { processDBStoreOperations } = sqliteAPI;
const queueFront = useSelector(state => state.dbOpsStore.queuedOps[0]);
const prevQueueFront = React.useRef<?DBOpsEntry>(null);
- const { sendMessageToDevice } = useTunnelbroker();
const { processOutboundMessages } = usePeerToPeerCommunication();
+ const confirmPeerToPeerMessage = useConfirmPeerToPeerMessage();
const dispatch = useDispatch();
@@ -49,39 +43,14 @@
dispatch({
type: opsProcessingFinishedActionType,
});
- if (dispatchMetadata) {
- try {
- const deviceID = await getContentSigningKey();
- const { messageID, senderDeviceID } = dispatchMetadata;
- if (!messageID || !senderDeviceID) {
- return;
- }
- const message: MessageProcessed = {
- type: peerToPeerMessageTypes.MESSAGE_PROCESSED,
- messageID,
- deviceID,
- };
- await sendMessageToDevice({
- deviceID: senderDeviceID,
- payload: JSON.stringify(message),
- });
- await sqliteAPI.removeInboundP2PMessages([messageID]);
- } catch (e) {
- console.log(
- `Error while sending confirmation: ${
- getMessageForException(e) ?? 'unknown error'
- }`,
- );
- }
- }
+ await confirmPeerToPeerMessage(dispatchMetadata);
})();
}, [
queueFront,
dispatch,
processDBStoreOperations,
- sendMessageToDevice,
- sqliteAPI,
processOutboundMessages,
+ confirmPeerToPeerMessage,
]);
return null;
diff --git a/lib/tunnelbroker/use-confirm-peer-to-peer-message.js b/lib/tunnelbroker/use-confirm-peer-to-peer-message.js
new file mode 100644
--- /dev/null
+++ b/lib/tunnelbroker/use-confirm-peer-to-peer-message.js
@@ -0,0 +1,57 @@
+// @flow
+
+import * as React from 'react';
+
+import { useTunnelbroker } from './tunnelbroker-context.js';
+import type { DispatchMetadata } from '../types/redux-types.js';
+import {
+ type MessageProcessed,
+ peerToPeerMessageTypes,
+} from '../types/tunnelbroker/peer-to-peer-message-types.js';
+import { getConfig } from '../utils/config.js';
+import { getContentSigningKey } from '../utils/crypto-utils.js';
+import { getMessageForException } from '../utils/errors.js';
+
+function useConfirmPeerToPeerMessage(): (
+ messageMetadata: ?DispatchMetadata,
+) => Promise<void> {
+ const { sqliteAPI } = getConfig();
+ const { sendMessageToDevice } = useTunnelbroker();
+
+ return React.useCallback(
+ async (messageMetadata: ?DispatchMetadata): Promise<void> => {
+ try {
+ if (!messageMetadata) {
+ return;
+ }
+ const { messageID, senderDeviceID } = messageMetadata;
+ if (!messageID || !senderDeviceID) {
+ return;
+ }
+ const deviceID = await getContentSigningKey();
+
+ const message: MessageProcessed = {
+ type: peerToPeerMessageTypes.MESSAGE_PROCESSED,
+ messageID,
+ deviceID,
+ };
+
+ await sendMessageToDevice({
+ deviceID: senderDeviceID,
+ payload: JSON.stringify(message),
+ });
+ await sqliteAPI.removeInboundP2PMessages([messageID]);
+ } catch (e) {
+ console.log(
+ `Error while sending confirmation: ${
+ getMessageForException(e) ?? 'unknown error'
+ }`,
+ e,
+ );
+ }
+ },
+ [sendMessageToDevice, sqliteAPI],
+ );
+}
+
+export { useConfirmPeerToPeerMessage };

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 17, 4:27 PM (21 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2311782
Default Alt Text
D13662.diff (4 KB)

Event Timeline