Skip to content

Commit 044f1fd

Browse files
committed
preference: Fix server icon display in connected organizations list.
Signed-off-by: Anders Kaseorg <[email protected]>
1 parent 10fb0a8 commit 044f1fd

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

app/renderer/js/main.ts

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {clipboard} from "electron/common";
2-
import fs from "node:fs";
32
import path from "node:path";
43
import process from "node:process";
54
import url from "node:url";
@@ -56,19 +55,6 @@ const dingSound = new Audio(
5655
new URL("resources/sounds/ding.ogg", bundleUrl).href,
5756
);
5857

59-
function iconAsUrl(iconPath: string): string {
60-
if (iconPath === DomainUtil.defaultIconSentinel) return defaultIcon;
61-
62-
try {
63-
return `data:application/octet-stream;base64,${fs.readFileSync(
64-
iconPath,
65-
"base64",
66-
)}`;
67-
} catch {
68-
return defaultIcon;
69-
}
70-
}
71-
7258
export class ServerManagerView {
7359
$addServerButton: HTMLButtonElement;
7460
$tabsContainer: Element;
@@ -341,7 +327,7 @@ export class ServerManagerView {
341327
(async () => {
342328
const serverConf = await DomainUtil.updateSavedServer(server.url, i);
343329
tab.setName(serverConf.alias);
344-
tab.setIcon(iconAsUrl(serverConf.icon));
330+
tab.setIcon(DomainUtil.iconAsUrl(serverConf.icon));
345331
(await tab.webview).setUnsupportedMessage(
346332
DomainUtil.getUnsupportedMessage(serverConf),
347333
);
@@ -382,7 +368,7 @@ export class ServerManagerView {
382368
const tabIndex = this.getTabIndex();
383369
const tab = new ServerTab({
384370
role: "server",
385-
icon: iconAsUrl(server.icon),
371+
icon: DomainUtil.iconAsUrl(server.icon),
386372
name: server.alias,
387373
$root: this.$tabsContainer,
388374
onClick: this.activateLastTab.bind(this, index),
@@ -1087,7 +1073,7 @@ export class ServerManagerView {
10871073
const localIconPath = await DomainUtil.saveServerIcon(iconURL);
10881074
const tab = this.tabs[index];
10891075
if (tab instanceof ServerTab)
1090-
tab.setIcon(iconAsUrl(localIconPath));
1076+
tab.setIcon(DomainUtil.iconAsUrl(localIconPath));
10911077
domain.icon = localIconPath;
10921078
DomainUtil.updateDomain(index, domain);
10931079
}

app/renderer/js/pages/preference/server-info-form.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ export function initServerInfoForm(props: ServerInfoFormProps): void {
1919
const $serverInfoForm = generateNodeFromHtml(html`
2020
<div class="settings-card">
2121
<div class="server-info-left">
22-
<img class="server-info-icon" src="${props.server.icon}" />
22+
<img
23+
class="server-info-icon"
24+
src="${DomainUtil.iconAsUrl(props.server.icon)}"
25+
/>
2326
<div class="server-info-row">
2427
<span class="server-info-alias">${props.server.alias}</span>
2528
<i class="material-icons open-tab-button">open_in_new</i>

app/renderer/js/utils/domain-util.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Logger from "../../../common/logger-util.js";
1212
import * as Messages from "../../../common/messages.js";
1313
import * as t from "../../../common/translation-util.js";
1414
import type {ServerConf} from "../../../common/types.js";
15+
import defaultIcon from "../../img/icon.png";
1516
import {ipcRenderer} from "../typed-ipc-renderer.js";
1617

1718
const logger = new Logger({
@@ -213,3 +214,16 @@ export function getUnsupportedMessage(server: ServerConf): string | undefined {
213214

214215
return undefined;
215216
}
217+
218+
export function iconAsUrl(iconPath: string): string {
219+
if (iconPath === defaultIconSentinel) return defaultIcon;
220+
221+
try {
222+
return `data:application/octet-stream;base64,${fs.readFileSync(
223+
iconPath,
224+
"base64",
225+
)}`;
226+
} catch {
227+
return defaultIcon;
228+
}
229+
}

0 commit comments

Comments
 (0)