diff --git a/public/_locales b/public/_locales
index fcee4620b..32c293e86 160000
--- a/public/_locales
+++ b/public/_locales
@@ -1 +1 @@
-Subproject commit fcee4620b37c91603653df74891cb58fd0381ab7
+Subproject commit 32c293e8617e9be661fc8b19912858340a1df4f1
diff --git a/public/options/options.html b/public/options/options.html
index e5333f899..68c9f6fd3 100644
--- a/public/options/options.html
+++ b/public/options/options.html
@@ -329,6 +329,17 @@
+
+
+
+
+
+
+
+
diff --git a/src/config.ts b/src/config.ts
index 4261f66fc..27eba2ecd 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1,6 +1,6 @@
import * as CompileConfig from "../config.json";
import * as invidiousList from "../ci/invidiouslist.json";
-import { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType } from "./types";
+import { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from "./types";
import { Keybind, ProtoConfig, keybindEquals } from "../maze-utils/src/config";
import { HashedValue } from "../maze-utils/src/hash";
import { Permission, AdvancedSkipRuleSet } from "./utils/skipRule";
@@ -10,6 +10,7 @@ interface SBConfig {
isVip: boolean;
permissions: Record;
defaultCategory: Category;
+ segmentListDefaultTab: SegmentListDefaultTab;
renderSegmentsAsChapters: boolean;
forceChannelCheck: boolean;
minutesSaved: number;
@@ -337,6 +338,7 @@ const syncDefaults = {
isVip: false,
permissions: {},
defaultCategory: "chooseACategory" as Category,
+ segmentListDefaultTab: SegmentListDefaultTab.Segments,
renderSegmentsAsChapters: false,
forceChannelCheck: false,
minutesSaved: 0,
diff --git a/src/popup/SegmentListComponent.tsx b/src/popup/SegmentListComponent.tsx
index d56b7baee..1369475ca 100644
--- a/src/popup/SegmentListComponent.tsx
+++ b/src/popup/SegmentListComponent.tsx
@@ -1,5 +1,5 @@
import * as React from "react";
-import { ActionType, SegmentUUID, SponsorHideType, SponsorTime, VideoID } from "../types";
+import { ActionType, SegmentListDefaultTab, SegmentUUID, SponsorHideType, SponsorTime, VideoID } from "../types";
import Config from "../config";
import { waitFor } from "../../maze-utils/src";
import { shortCategoryName } from "../utils/categoryUtils";
@@ -61,12 +61,21 @@ export const SegmentListComponent = (props: SegmentListComponentProps) => {
}, [props.segments]);
React.useEffect(() => {
- if (hasSegments){
- setTab(SegmentListTab.Segments);
+ const setTabBasedOnConfig = () => {
+ const preferChapters = Config.config.segmentListDefaultTab === SegmentListDefaultTab.Chapters;
+ if (preferChapters) {
+ setTab(hasChapters ? SegmentListTab.Chapter : SegmentListTab.Segments);
+ } else {
+ setTab(hasSegments ? SegmentListTab.Segments : SegmentListTab.Chapter);
+ }
+ };
+
+ if (Config.isReady()) {
+ setTabBasedOnConfig();
} else {
- setTab(SegmentListTab.Chapter);
+ waitFor(() => Config.isReady()).then(setTabBasedOnConfig);
}
- }, [props.videoID, hasSegments]);
+ }, [props.videoID, hasSegments, hasChapters]);
const segmentsWithNesting = React.useMemo(() => {
const result: SegmentWithNesting[] = [];
diff --git a/src/types.ts b/src/types.ts
index d8346f58e..7438557d0 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -227,4 +227,9 @@ export enum NoticeVisibilityMode {
MiniForAll = 2,
FadedForAutoSkip = 3,
FadedForAll = 4
+}
+
+export enum SegmentListDefaultTab {
+ Segments,
+ Chapters,
}
\ No newline at end of file