Skip to content

Commit 0232562

Browse files
authored
fix: handle undefined values for browser name and hostname in UI (#162)
* fix: handle undefined values for browser name and hostname in UI * Lint
1 parent c43b689 commit 0232562

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

src/popup/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ async function renderStatus() {
8181
const browserNameElement = document.getElementById('status-browser')
8282
if (!(browserNameElement instanceof HTMLElement))
8383
throw Error('Browser name element is not defined')
84-
browserNameElement.innerText = browserName
84+
browserNameElement.innerText = browserName ?? 'unknown'
8585

8686
// Hostname
8787
const hostnameElement = document.getElementById('status-hostname')
8888
if (!(hostnameElement instanceof HTMLElement))
8989
throw Error('Hostname element is not defined')
90-
hostnameElement.innerText = hostname
90+
hostnameElement.innerText = hostname ?? 'unknown'
9191
}
9292

9393
function domListeners() {

src/settings/main.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ import {
66
setHostname,
77
} from '../storage'
88

9-
interface HTMLElementEvent<T extends HTMLElement> extends Event {
10-
target: T
11-
}
12-
139
async function reloadExtension(): Promise<void> {
1410
browser.runtime.reload()
1511
}
@@ -28,7 +24,9 @@ async function saveOptions(e: SubmitEvent): Promise<void> {
2824
}
2925

3026
const hostnameInput = document.querySelector<HTMLInputElement>('#hostname')
31-
let hostname = hostnameInput.value
27+
if (!hostnameInput) return
28+
29+
const hostname = hostnameInput.value
3230

3331
const form = e.target as HTMLFormElement
3432
const button = form.querySelector<HTMLButtonElement>('button')
@@ -86,6 +84,8 @@ async function restoreOptions(): Promise<void> {
8684

8785
const hostname = await getHostname()
8886
const hostnameInput = document.querySelector<HTMLInputElement>('#hostname')
87+
if (!hostnameInput) return
88+
8989
if (hostname !== undefined) {
9090
hostnameInput.value = hostname
9191
}
@@ -104,5 +104,8 @@ document
104104
?.addEventListener('change', toggleCustomBrowserInput)
105105
const form = document.querySelector('form')
106106
if (form) {
107-
form.addEventListener('submit', saveOptions as EventListener)
107+
form.addEventListener('submit', (e: Event) => {
108+
e.preventDefault()
109+
saveOptions(e as SubmitEvent)
110+
})
108111
}

src/storage.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,18 @@ export const setHeartbeatData = (heartbeatData: HeartbeatData) =>
8686
browser.storage.local.set({ heartbeatData })
8787

8888
type BrowserName = string
89+
type StorageData = { [key: string]: any }
8990
export const getBrowserName = (): Promise<BrowserName | undefined> =>
90-
browser.storage.local.get('browserName').then((_) => _.browserName)
91+
browser.storage.local
92+
.get('browserName')
93+
.then((data: StorageData) => data.browserName as string | undefined)
9194
export const setBrowserName = (browserName: BrowserName) =>
9295
browser.storage.local.set({ browserName })
9396

9497
type Hostname = string
9598
export const getHostname = (): Promise<Hostname | undefined> =>
96-
browser.storage.local.get('hostname').then((_) => _.hostname)
99+
browser.storage.local
100+
.get('hostname')
101+
.then((data: StorageData) => data.hostname as string | undefined)
97102
export const setHostname = (hostname: Hostname) =>
98103
browser.storage.local.set({ hostname })

0 commit comments

Comments
 (0)