Skip to content

Commit cc67de0

Browse files
committed
processing icon
1 parent cb34f6e commit cc67de0

File tree

5 files changed

+43
-25
lines changed

5 files changed

+43
-25
lines changed

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@
8686
"@heroicons/react": "^2.2.0",
8787
"@tailwindcss/cli": "^4.1.14",
8888
"@types/auto-launch": "^5.0.2",
89-
"@types/node": "^18.6.3",
9089
"@types/react": "^18.0.18",
9190
"@types/react-dom": "^18.0.6",
9291
"electron": "^38.0.0",
@@ -95,6 +94,6 @@
9594
"react": "^18.2.0",
9695
"react-dom": "^18.2.0",
9796
"tailwindcss": "^4.1.14",
98-
"typescript": "^5.3.3"
97+
"typescript": "^5.9.3"
9998
}
10099
}
3.65 KB
Loading

src/main/index.ts

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
clipboard,
1010
dialog,
1111
ipcMain,
12-
nativeImage,
1312
shell,
1413
} from "electron";
1514
import openAboutWindow from "electron-about-window";
@@ -79,16 +78,24 @@ import { getUploadOnceAvailable } from "./platform";
7978
app.quit();
8079
});
8180

81+
let processingCount = 0;
82+
let uploadedList: { title: string; permalink_url: string }[] = [];
83+
const uploadQueue = new PQueue({ concurrency: 1 });
8284
const tray = new Tray(
83-
nativeImage.createFromPath(
84-
resolve(__dirname, "../../../resources/trayTemplate@2x.png")
85-
)
85+
resolve(__dirname, "../../../resources/tray-icons/Template@2x.png")
8686
);
87-
tray.setToolTip("Gyazemon");
87+
const updateTray = () => {
88+
tray.setImage(
89+
resolve(
90+
__dirname,
91+
`../../../resources/tray-icons/${
92+
processingCount ? "processing" : ""
93+
}Template@2x.png`
94+
)
95+
);
96+
97+
tray.setToolTip("Gyazemon");
8898

89-
const uploadQueue = new PQueue({ concurrency: 1 });
90-
let uploadedList: { title: string; permalink_url: string }[] = [];
91-
const setTrayMenu = () => {
9299
const queueLength = uploadQueue.pending + uploadQueue.size;
93100
tray.setContextMenu(
94101
Menu.buildFromTemplate([
@@ -205,7 +212,9 @@ import { getUploadOnceAvailable } from "./platform";
205212

206213
const file = await readFile(event.path);
207214
const fileID = [
208-
...new Uint8Array(await crypto.subtle.digest("SHA-256", file)),
215+
...new Uint8Array(
216+
await crypto.subtle.digest("SHA-256", new Uint8Array(file))
217+
),
209218
]
210219
.map((uint8) => uint8.toString(16).padStart(2, "0"))
211220
.join("");
@@ -214,6 +223,9 @@ import { getUploadOnceAvailable } from "./platform";
214223
return;
215224
}
216225

226+
log.debug("processing");
227+
processingCount++;
228+
updateTray();
217229
try {
218230
log.debug("load");
219231
const loadedDataList = await load({ ext, file });
@@ -231,7 +243,7 @@ import { getUploadOnceAvailable } from "./platform";
231243
{ ...firstUploadResponse, title: basename(event.path) },
232244
...uploadedList,
233245
].slice(0, 10);
234-
setTrayMenu();
246+
updateTray();
235247

236248
if (event.writesClipboard) {
237249
clipboard.writeText(firstUploadResponse.permalink_url);
@@ -245,6 +257,9 @@ import { getUploadOnceAvailable } from "./platform";
245257
title: "Failed to upload to Gyazo. ",
246258
body: `${event.path}\nPlease check the log. `,
247259
}).show();
260+
} finally {
261+
processingCount--;
262+
updateTray();
248263
}
249264
};
250265

@@ -279,7 +294,7 @@ import { getUploadOnceAvailable } from "./platform";
279294
const pageImages: Buffer[] = [];
280295
ipcMain.handleOnce("getPDF", (): ArrayBuffer => {
281296
log.debug("getPDF");
282-
return file;
297+
return new Uint8Array(file).buffer;
283298
});
284299
ipcMain.handle("setPageImage", (_event, pageImage: ArrayBuffer) => {
285300
pageImages.push(Buffer.from(pageImage));
@@ -345,7 +360,11 @@ import { getUploadOnceAvailable } from "./platform";
345360
url.pathname = pathToFileURL(path).pathname;
346361

347362
formData.append("access_token", gyazoAccessToken);
348-
formData.append("imagedata", new Blob([loadedData]), "dummy.png");
363+
formData.append(
364+
"imagedata",
365+
new Blob([new Uint8Array(loadedData)]),
366+
"dummy.png"
367+
);
349368
formData.append("referer_url", String(url));
350369
formData.append("app", "Gyazemon");
351370
formData.append("title", title);
@@ -388,7 +407,7 @@ import { getUploadOnceAvailable } from "./platform";
388407
// Rate Limits https://gyazo.com/api/docs/errors
389408
if (uploadResponse.status === 429) {
390409
uploadQueue.clear();
391-
setTrayMenu();
410+
updateTray();
392411

393412
new Notification({
394413
title: "Canceled the upload processes to Gyazo. ",
@@ -414,11 +433,11 @@ import { getUploadOnceAvailable } from "./platform";
414433
return uploadResponses[0].json();
415434
};
416435

417-
setTrayMenu();
418-
uploadQueue.on("add", setTrayMenu);
419-
uploadQueue.on("next", setTrayMenu);
420-
eventTarget.addEventListener("online", setTrayMenu);
421-
eventTarget.addEventListener("offline", setTrayMenu);
436+
updateTray();
437+
uploadQueue.on("add", updateTray);
438+
uploadQueue.on("next", updateTray);
439+
eventTarget.addEventListener("online", updateTray);
440+
eventTarget.addEventListener("offline", updateTray);
422441

423442
if (gyazoAccessToken) {
424443
for (const watch of watchlist) {

0 commit comments

Comments
 (0)