mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-16 08:27:07 +00:00
Remove the one-time SEQTA Engage support startup toast.
This commit is contained in:
@@ -3615,26 +3615,6 @@ div.day-empty {
|
|||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
}
|
}
|
||||||
.whatsnewHeader.engageParentsAnnouncementHeader {
|
|
||||||
height: auto;
|
|
||||||
min-height: unset;
|
|
||||||
}
|
|
||||||
.whatsnewHeader.engageParentsAnnouncementHeader h1 {
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
.whatsnewHeader.engageParentsAnnouncementHeader .engageParentsSubheading {
|
|
||||||
margin-top: 0.35rem;
|
|
||||||
font-size: 1.05rem;
|
|
||||||
font-weight: 600;
|
|
||||||
opacity: 0.92;
|
|
||||||
}
|
|
||||||
.seqtaEngageAccent {
|
|
||||||
color: #ea580c;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
.dark .seqtaEngageAccent {
|
|
||||||
color: #fb923c;
|
|
||||||
}
|
|
||||||
.whatsnewBackground {
|
.whatsnewBackground {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -3763,25 +3743,6 @@ div.day-empty {
|
|||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
.whatsnewTextContainer .engageParentsPromoWrap {
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
border-radius: 16px;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16 / 9;
|
|
||||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.28);
|
|
||||||
background: color-mix(in srgb, var(--background-secondary) 88%, var(--text-primary) 12%);
|
|
||||||
}
|
|
||||||
.whatsnewTextContainer .engageParentsPromoWrap .engageParentsPromoImg {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
aspect-ratio: unset;
|
|
||||||
object-fit: contain;
|
|
||||||
object-position: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.whatsnewHeader.bsCloudAutoSyncAnnouncementHeader {
|
.whatsnewHeader.bsCloudAutoSyncAnnouncementHeader {
|
||||||
height: auto;
|
height: auto;
|
||||||
@@ -5014,66 +4975,3 @@ h2.home-subtitle {
|
|||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bsplus-toast {
|
|
||||||
position: fixed;
|
|
||||||
right: max(18px, env(safe-area-inset-right));
|
|
||||||
bottom: max(18px, env(safe-area-inset-bottom));
|
|
||||||
z-index: 10000;
|
|
||||||
width: min(360px, calc(100vw - 36px));
|
|
||||||
padding: 14px 16px 16px;
|
|
||||||
border: 1px solid color-mix(in srgb, var(--text-primary) 12%, transparent);
|
|
||||||
border-radius: 20px;
|
|
||||||
background: var(--background-primary, #fff);
|
|
||||||
color: var(--text-primary, #1a1a1a);
|
|
||||||
box-shadow: 0 22px 70px rgba(0, 0, 0, 0.35);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
line-height: 1.45;
|
|
||||||
}
|
|
||||||
.bsplus-toast-eyebrow {
|
|
||||||
margin: 0 0 6px !important;
|
|
||||||
font-size: 0.72rem !important;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.08em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: color-mix(in srgb, #ea580c 82%, var(--text-primary) 18%);
|
|
||||||
opacity: 1 !important;
|
|
||||||
}
|
|
||||||
.dark .bsplus-toast-eyebrow {
|
|
||||||
color: color-mix(in srgb, #fb923c 82%, var(--text-primary) 18%);
|
|
||||||
}
|
|
||||||
.bsplus-toast-content strong {
|
|
||||||
display: block;
|
|
||||||
padding-right: 34px;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
.bsplus-toast-content p:not(.bsplus-toast-eyebrow) {
|
|
||||||
display: -webkit-box;
|
|
||||||
margin: 8px 0 0;
|
|
||||||
overflow: hidden;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
color: color-mix(in srgb, var(--text-primary) 78%, transparent);
|
|
||||||
font-size: 0.92rem;
|
|
||||||
line-height: 1.45;
|
|
||||||
}
|
|
||||||
.bsplus-toast-close {
|
|
||||||
position: absolute !important;
|
|
||||||
top: 4px !important;
|
|
||||||
right: 4px !important;
|
|
||||||
z-index: 2;
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.22);
|
|
||||||
border-radius: 16px !important;
|
|
||||||
background: rgba(0, 0, 0, 0.42);
|
|
||||||
color: white;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 1.35rem;
|
|
||||||
line-height: 1;
|
|
||||||
transition: filter 0.15s ease;
|
|
||||||
}
|
|
||||||
.bsplus-toast-close:hover {
|
|
||||||
filter: brightness(1.08);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
import { settingsState } from "../listeners/SettingsState";
|
|
||||||
import { animate as motionAnimate } from "motion";
|
|
||||||
|
|
||||||
export function shouldShowEngageParentsAnnouncement(): boolean {
|
|
||||||
return !settingsState.engageParentsAnnouncementShown;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Non-blocking bottom-right toast announcing SEQTA Engage support. Shown once.
|
|
||||||
*/
|
|
||||||
export function showEngageParentsToast() {
|
|
||||||
if (!shouldShowEngageParentsAnnouncement()) return;
|
|
||||||
|
|
||||||
settingsState.engageParentsAnnouncementShown = true;
|
|
||||||
|
|
||||||
const toast = document.createElement("div");
|
|
||||||
toast.className = "bsplus-toast engageParentsToast";
|
|
||||||
toast.innerHTML = /* html */ `
|
|
||||||
<button class="bsplus-toast-close" aria-label="Dismiss">×</button>
|
|
||||||
<div class="bsplus-toast-content">
|
|
||||||
<p class="bsplus-toast-eyebrow">SEQTA Engage support</p>
|
|
||||||
<strong>BetterSEQTA+ now supports <span class="seqtaEngageAccent">SEQTA Engage</span></strong>
|
|
||||||
<p>Buy your mum a BetterSEQTA Plus! Parents now get themes, a cleaner home page, and all the Plus polish on SEQTA Engage.</p>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
toast.style.opacity = "0";
|
|
||||||
document.getElementById("container")?.append(toast);
|
|
||||||
|
|
||||||
if (settingsState.animations) {
|
|
||||||
(motionAnimate as any)(
|
|
||||||
toast,
|
|
||||||
{ opacity: [0, 1], y: [40, 0] },
|
|
||||||
{ duration: 0.35, easing: [0.22, 0.03, 0.26, 1] },
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
toast.style.opacity = "1";
|
|
||||||
}
|
|
||||||
|
|
||||||
const dismiss = () => {
|
|
||||||
if (settingsState.animations) {
|
|
||||||
(motionAnimate as any)(
|
|
||||||
toast,
|
|
||||||
{ opacity: [1, 0], y: [0, 40] },
|
|
||||||
{ duration: 0.2, easing: [0.22, 0.03, 0.26, 1] },
|
|
||||||
).then(() => toast.remove());
|
|
||||||
} else {
|
|
||||||
toast.remove();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
toast.querySelector(".bsplus-toast-close")!.addEventListener("click", dismiss);
|
|
||||||
|
|
||||||
setTimeout(dismiss, 10000);
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
import { settingsState } from "../listeners/SettingsState";
|
import { settingsState } from "../listeners/SettingsState";
|
||||||
import { OpenWhatsNewPopup } from "./OpenWhatsNewPopup";
|
import { OpenWhatsNewPopup } from "./OpenWhatsNewPopup";
|
||||||
import {
|
|
||||||
shouldShowEngageParentsAnnouncement,
|
|
||||||
showEngageParentsToast,
|
|
||||||
} from "./OpenEngageParentsAnnouncement";
|
|
||||||
import {
|
import {
|
||||||
fetchThemeOfTheMonth,
|
fetchThemeOfTheMonth,
|
||||||
OpenThemeOfTheMonthPopup,
|
OpenThemeOfTheMonthPopup,
|
||||||
@@ -15,8 +11,7 @@ type QueueStep = (goNext: () => void) => void;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs startup modals in order: What's New (if the extension just updated),
|
* 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), then shows
|
* Theme of the Month (when the user hasn't dismissed this calendar month).
|
||||||
* the SEQTA Engage toast (once, non-blocking).
|
|
||||||
*/
|
*/
|
||||||
export async function runStartupPopupQueue() {
|
export async function runStartupPopupQueue() {
|
||||||
// Make sure the background script knows about any dev-mode API override
|
// Make sure the background script knows about any dev-mode API override
|
||||||
@@ -41,11 +36,6 @@ export async function runStartupPopupQueue() {
|
|||||||
function runNext() {
|
function runNext() {
|
||||||
const step = steps.shift();
|
const step = steps.shift();
|
||||||
if (step) step(runNext);
|
if (step) step(runNext);
|
||||||
else {
|
|
||||||
if (shouldShowEngageParentsAnnouncement()) {
|
|
||||||
showEngageParentsToast();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
runNext();
|
runNext();
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ export function getDefaultSettingsState(): SettingsState {
|
|||||||
selectedFont: "rubik",
|
selectedFont: "rubik",
|
||||||
timeFormat: "24",
|
timeFormat: "24",
|
||||||
privacyStatementShown: false,
|
privacyStatementShown: false,
|
||||||
engageParentsAnnouncementShown: false,
|
|
||||||
bsCloudAutoSyncAnnouncementShown: false,
|
bsCloudAutoSyncAnnouncementShown: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ const OPTIONAL_UNSET_MEANS_DEFAULT_KEYS = [
|
|||||||
"selectedFont",
|
"selectedFont",
|
||||||
"privacyStatementShown",
|
"privacyStatementShown",
|
||||||
"privacyStatementLastUpdated",
|
"privacyStatementLastUpdated",
|
||||||
"engageParentsAnnouncementShown",
|
|
||||||
"bsCloudAutoSyncAnnouncementShown",
|
"bsCloudAutoSyncAnnouncementShown",
|
||||||
"themeOfTheMonthDismissedMonth",
|
"themeOfTheMonthDismissedMonth",
|
||||||
"themeOfTheMonthLastSeenId",
|
"themeOfTheMonthLastSeenId",
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ export interface SettingsState {
|
|||||||
justupdated?: boolean;
|
justupdated?: boolean;
|
||||||
privacyStatementShown?: boolean;
|
privacyStatementShown?: boolean;
|
||||||
privacyStatementLastUpdated?: string;
|
privacyStatementLastUpdated?: string;
|
||||||
/** One-time announcement: SEQTA Engage support for parents (dismissed popup queue). */
|
|
||||||
engageParentsAnnouncementShown?: boolean;
|
|
||||||
/** One-time announcement: BS Cloud automatic settings sync (last in startup popup queue). */
|
/** One-time announcement: BS Cloud automatic settings sync (last in startup popup queue). */
|
||||||
bsCloudAutoSyncAnnouncementShown?: boolean;
|
bsCloudAutoSyncAnnouncementShown?: boolean;
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user