Skip to content

Commit e9577d5

Browse files
committed
Closes #999
1 parent 332d07b commit e9577d5

File tree

2 files changed

+80
-8
lines changed

2 files changed

+80
-8
lines changed

src/chrome/js/background-inject.js

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1797,7 +1797,7 @@ function mainScript(extensionId, SettingData, defaultSettings) {
17971797

17981798
const FeatureDefaultQuality = (() => {
17991799

1800-
const isValidQuality = quality => [
1800+
const qualityList = [
18011801
"highres",
18021802
"hd2880",
18031803
"hd2160",
@@ -1809,13 +1809,49 @@ function mainScript(extensionId, SettingData, defaultSettings) {
18091809
"small",
18101810
"tiny",
18111811
"auto",
1812-
].indexOf(quality) > -1;
1812+
]
1813+
const isValidQuality = quality => qualityList.indexOf(quality) > -1;
1814+
const getClosestAvailableQuality = (quality, availableList) => {
1815+
1816+
const qualityIndex = qualityList.indexOf(quality);
1817+
1818+
if (qualityIndex === -1 || availableList?.length < 1) {
1819+
return availableList[0] || "auto";
1820+
}
1821+
1822+
const total = qualityList.length - 1;
1823+
let top = qualityIndex + 1;
1824+
let bottom = qualityIndex - 1;
1825+
1826+
for (let i = 0; i < total; i++) {
1827+
1828+
const topIndex = availableList.indexOf(qualityList[top]);
1829+
const bottomIndex = availableList.indexOf(qualityList[bottom]);
1830+
1831+
if (topIndex > -1) {
1832+
return availableList[topIndex];
1833+
}
1834+
1835+
if (bottomIndex > -1) {
1836+
return availableList[bottomIndex];
1837+
}
1838+
1839+
top += 1;
1840+
bottom -= 1;
1841+
1842+
}
1843+
1844+
return availableList[0] || "auto";
1845+
1846+
}
18131847
const getAvailableQuality = (quality, availableList) => {
1848+
18141849
if (availableList.indexOf(quality) > -1) {
18151850
return quality;
1816-
} else {
1817-
return availableList[0];
18181851
}
1852+
1853+
return getClosestAvailableQuality(quality, availableList);
1854+
18191855
}
18201856
const onCreated = api => api.addEventListener("onStateChange", () => {
18211857
if (iridiumSettings.defaultQuality !== "auto" && isValidQuality(iridiumSettings.defaultQuality)) {

src/firefox/js/background-inject.js

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1797,7 +1797,7 @@ function mainScript(extensionId, SettingData, defaultSettings) {
17971797

17981798
const FeatureDefaultQuality = (() => {
17991799

1800-
const isValidQuality = quality => [
1800+
const qualityList = [
18011801
"highres",
18021802
"hd2880",
18031803
"hd2160",
@@ -1809,13 +1809,49 @@ function mainScript(extensionId, SettingData, defaultSettings) {
18091809
"small",
18101810
"tiny",
18111811
"auto",
1812-
].indexOf(quality) > -1;
1812+
]
1813+
const isValidQuality = quality => qualityList.indexOf(quality) > -1;
1814+
const getClosestAvailableQuality = (quality, availableList) => {
1815+
1816+
const qualityIndex = qualityList.indexOf(quality);
1817+
1818+
if (qualityIndex === -1 || availableList?.length < 1) {
1819+
return availableList[0] || "auto";
1820+
}
1821+
1822+
const total = qualityList.length - 1;
1823+
let top = qualityIndex + 1;
1824+
let bottom = qualityIndex - 1;
1825+
1826+
for (let i = 0; i < total; i++) {
1827+
1828+
const topIndex = availableList.indexOf(qualityList[top]);
1829+
const bottomIndex = availableList.indexOf(qualityList[bottom]);
1830+
1831+
if (topIndex > -1) {
1832+
return availableList[topIndex];
1833+
}
1834+
1835+
if (bottomIndex > -1) {
1836+
return availableList[bottomIndex];
1837+
}
1838+
1839+
top += 1;
1840+
bottom -= 1;
1841+
1842+
}
1843+
1844+
return availableList[0] || "auto";
1845+
1846+
}
18131847
const getAvailableQuality = (quality, availableList) => {
1848+
18141849
if (availableList.indexOf(quality) > -1) {
18151850
return quality;
1816-
} else {
1817-
return availableList[0];
18181851
}
1852+
1853+
return getClosestAvailableQuality(quality, availableList);
1854+
18191855
}
18201856
const onCreated = api => api.addEventListener("onStateChange", () => {
18211857
if (iridiumSettings.defaultQuality !== "auto" && isValidQuality(iridiumSettings.defaultQuality)) {

0 commit comments

Comments
 (0)