mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-17 17:07:07 +00:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { settingsState } from "../listeners/SettingsState";
|
|
import { OpenWhatsNewPopup } from "./OpenWhatsNewPopup";
|
|
import {
|
|
fetchThemeOfTheMonth,
|
|
OpenThemeOfTheMonthPopup,
|
|
shouldShowThemeOfTheMonth,
|
|
} from "./OpenThemeOfTheMonthPopup";
|
|
import { syncApiBaseToBackground } from "../DevApiBase";
|
|
|
|
type QueueStep = (goNext: () => void) => void;
|
|
|
|
/**
|
|
* Runs startup modals in order: What's New (if the extension just updated),
|
|
* Theme of the Month (when the user hasn't dismissed this calendar month).
|
|
*/
|
|
export async function runStartupPopupQueue() {
|
|
// Make sure the background script knows about any dev-mode API override
|
|
// before we start firing requests.
|
|
syncApiBaseToBackground();
|
|
|
|
const steps: QueueStep[] = [];
|
|
|
|
if (settingsState.justupdated) {
|
|
steps.push((goNext) => OpenWhatsNewPopup(goNext));
|
|
}
|
|
|
|
// Fetch the Theme of the Month before queueing so we don't show an empty
|
|
// popup if the network or server is unavailable.
|
|
const themeOfTheMonth = await fetchThemeOfTheMonth();
|
|
if (shouldShowThemeOfTheMonth(themeOfTheMonth)) {
|
|
steps.push((goNext) => {
|
|
void OpenThemeOfTheMonthPopup(themeOfTheMonth!, goNext);
|
|
});
|
|
}
|
|
|
|
function runNext() {
|
|
const step = steps.shift();
|
|
if (step) step(runNext);
|
|
}
|
|
|
|
runNext();
|
|
}
|