Skip to content
Source
Sign inSign up
Open History to see the last commit

browserTabs.ts

22 lines739 Bytes

1import type { PreviewSessionSnapshot } from "@t3tools/contracts";
2​
3export function latestBrowserTab(tabs: ReadonlyArray<PreviewSessionSnapshot>) {
4 return tabs.reduce<PreviewSessionSnapshot | null>(
5 (latest, tab) => (latest === null || tab.updatedAt > latest.updatedAt ? tab : latest),
6 null,
7 );
8}
9​
10export function browserTabUrl(tab: PreviewSessionSnapshot) {
11 return tab.navStatus._tag === "Idle" ? "" : tab.navStatus.url;
13​
14export function browserTabTitle(tab: PreviewSessionSnapshot) {
15 if (tab.navStatus._tag === "Idle") return "New tab";
16 if (tab.navStatus.title.trim()) return tab.navStatus.title;
17 try {
18 return new URL(tab.navStatus.url).host || tab.navStatus.url;
19 } catch {
20 return tab.navStatus.url;
21 }