Restructure the Electron application by separating concerns into new modules (windows, ipc, sentinel), introduce TypeScript types for IPC, and update build configurations and entry points for desktop applications. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9203795e-937a-4306-b81d-b4d5c78c240e Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Event-Id: 714c0a0f-ae39-4276-a53a-1f68eb5443fa Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7c94b7a0-29c7-4f2e-94ef-44b2153872b7/9203795e-937a-4306-b81d-b4d5c78c240e/CdxgfN4 Replit-Helium-Checkpoint-Created: true
33 lines
867 B
JavaScript
33 lines
867 B
JavaScript
import { clipboard } from "electron";
|
|
import { getMainWindow } from "./windows.js";
|
|
import { scrubPII } from "../services/pii-scrub.js";
|
|
|
|
let sentinelInterval = null;
|
|
|
|
export function startClipboardSentinel() {
|
|
if (sentinelInterval) return;
|
|
|
|
let lastClipboard = clipboard.readText();
|
|
|
|
sentinelInterval = setInterval(() => {
|
|
const current = clipboard.readText();
|
|
if (current !== lastClipboard) {
|
|
lastClipboard = current;
|
|
const scrubbed = scrubPII(current);
|
|
if (scrubbed !== current) {
|
|
const mainWindow = getMainWindow();
|
|
mainWindow?.webContents.send("sentinel:clipboard-alert", {
|
|
original: current,
|
|
scrubbed: scrubbed,
|
|
});
|
|
}
|
|
}
|
|
}, 1500);
|
|
}
|
|
|
|
export function stopClipboardSentinel() {
|
|
if (sentinelInterval) {
|
|
clearInterval(sentinelInterval);
|
|
sentinelInterval = null;
|
|
}
|
|
}
|