Skip to content

Commit c2b9a79

Browse files
Merge pull request arunsetty#1 from ibttf/reset
working on reset
2 parents 2652c2c + 5be3d98 commit c2b9a79

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

electron/main.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,24 @@ class AppState {
210210
}
211211
}
212212

213+
public clearQueues(): void {
214+
// Clear screenshotQueue
215+
this.screenshotQueue.forEach((screenshotPath) => {
216+
fs.unlink(screenshotPath, (err) => {
217+
if (err) console.error(`Error deleting screenshot at ${screenshotPath}:`, err);
218+
});
219+
});
220+
this.screenshotQueue = [];
221+
222+
// Clear extraScreenshotQueue
223+
this.extraScreenshotQueue.forEach((screenshotPath) => {
224+
fs.unlink(screenshotPath, (err) => {
225+
if (err) console.error(`Error deleting extra screenshot at ${screenshotPath}:`, err);
226+
});
227+
});
228+
this.extraScreenshotQueue = [];
229+
}
230+
213231
// Screenshot management methods
214232
private async takeScreenshot(): Promise<string> {
215233
if (!this.mainWindow) throw new Error("No main window available")
@@ -510,6 +528,17 @@ class AppState {
510528
ipcMain.handle("toggle-window", async () => {
511529
this.toggleMainWindow()
512530
})
531+
532+
ipcMain.handle("reset-queues", async () => {
533+
try {
534+
AppState.getInstance().clearQueues();
535+
console.log("Screenshot queues have been cleared.");
536+
return { success: true };
537+
} catch (error: any) {
538+
console.error("Error resetting queues:", error);
539+
return { success: false, error: error.message };
540+
}
541+
});
513542
}
514543
// Global shortcuts setup
515544
public setupGlobalShortcuts(): void {
@@ -533,6 +562,23 @@ class AppState {
533562
await this.processScreenshots()
534563
})
535564

565+
globalShortcut.register("CommandOrControl+R", () => {
566+
console.log("Resetting screenshot queues and switching view to 'queue'...");
567+
568+
// Clear both screenshot queues
569+
this.clearQueues();
570+
571+
console.log("Cleared queues.");
572+
573+
// **Update the view state to 'queue'**
574+
this.view = "queue";
575+
576+
// Notify renderer process to switch view to 'queue'
577+
if (this.mainWindow && !this.mainWindow.isDestroyed()) {
578+
this.mainWindow.webContents.send("reset-view");
579+
}
580+
});
581+
536582
globalShortcut.register("CommandOrControl+B", () => {
537583
this.toggleMainWindow()
538584
// If window exists and we're showing it, bring it to front
@@ -549,6 +595,8 @@ class AppState {
549595
}
550596
}
551597
})
598+
599+
552600
}
553601
}
554602

electron/preload.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { contextBridge, ipcRenderer } from "electron"
44
interface ElectronAPI {
55
takeScreenshot: () => Promise<string>
66
onSolutionsReady: (callback: (solutions: string) => void) => () => void
7+
onResetView: (callback: () => void) => () => void
78
}
89

910
const PROCESSING_EVENTS = {
@@ -77,5 +78,12 @@ contextBridge.exposeInMainWorld("electronAPI", {
7778
return () => {
7879
ipcRenderer.removeListener("solutions-ready", subscription)
7980
}
80-
}
81+
},
82+
onResetView: (callback: () => void) => {
83+
const subscription = () => callback();
84+
ipcRenderer.on("reset-view", subscription);
85+
return () => {
86+
ipcRenderer.removeListener("reset-view", subscription);
87+
};
88+
},
8189
} as ElectronAPI)

src/App.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Solutions from "./_pages/Solutions"
66
import { QueryClient, QueryClientProvider } from "react-query"
77
import axios from "axios"
88

9+
910
declare global {
1011
interface Window {
1112
electronAPI: {
@@ -25,6 +26,7 @@ declare global {
2526
onProcessingError: (callback: (error: string) => void) => () => void
2627
onProcessingNoScreenshots: (callback: () => void) => () => void
2728
updateContentHeight: (height: number) => Promise<void>
29+
onResetView: (callback: () => void) => () => void
2830
}
2931
}
3032
}
@@ -36,6 +38,20 @@ const App: React.FC = () => {
3638
const containerRef = useRef<HTMLDivElement>(null)
3739

3840
// Effect for height monitoring
41+
42+
useEffect(() => {
43+
const cleanup = window.electronAPI.onResetView(() => {
44+
console.log("Received 'reset-view' message from main process.")
45+
setView("queue")
46+
console.log("View reset to 'queue' via Command+R shortcut.")
47+
queryClient.invalidateQueries(["screenshots"])
48+
})
49+
50+
return () => {
51+
cleanup()
52+
}
53+
}, [])
54+
3955
useEffect(() => {
4056
if (!containerRef.current) return
4157

0 commit comments

Comments
 (0)