autosave overlay drafts after debounce
This commit is contained in:
@@ -89,11 +89,25 @@
|
|||||||
let overlayDisabledDesign = 'transparent';
|
let overlayDisabledDesign = 'transparent';
|
||||||
let overlayError = '';
|
let overlayError = '';
|
||||||
let overlayBusy = false;
|
let overlayBusy = false;
|
||||||
|
let overlaySavedSignature = '';
|
||||||
|
let overlayAutosaveAttemptedSignature = '';
|
||||||
|
let overlayAutosaveTimer: number | undefined;
|
||||||
let oauthScopes: Record<'streamer' | 'bot', { connected: boolean; missing_scopes: string[]; reauthorization_required: boolean }> = {
|
let oauthScopes: Record<'streamer' | 'bot', { connected: boolean; missing_scopes: string[]; reauthorization_required: boolean }> = {
|
||||||
streamer: { connected: false, missing_scopes: [], reauthorization_required: false },
|
streamer: { connected: false, missing_scopes: [], reauthorization_required: false },
|
||||||
bot: { connected: false, missing_scopes: [], reauthorization_required: false },
|
bot: { connected: false, missing_scopes: [], reauthorization_required: false },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$: if (authenticated && selectedOverlayId && overlayName && !overlayBusy) {
|
||||||
|
const signature = overlayDraftSignature();
|
||||||
|
if (signature !== overlaySavedSignature && signature !== overlayAutosaveAttemptedSignature && !overlayAutosaveTimer) {
|
||||||
|
overlayAutosaveAttemptedSignature = signature;
|
||||||
|
overlayAutosaveTimer = window.setTimeout(() => {
|
||||||
|
overlayAutosaveTimer = undefined;
|
||||||
|
void saveOverlay();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function checkServer() {
|
async function checkServer() {
|
||||||
connectionState = 'CONNECTING';
|
connectionState = 'CONNECTING';
|
||||||
const retryDelays = [0, 3000, 10000, 15000, 30000];
|
const retryDelays = [0, 3000, 10000, 15000, 30000];
|
||||||
@@ -696,9 +710,19 @@
|
|||||||
overlayJavascript = overlay.draft_javascript;
|
overlayJavascript = overlay.draft_javascript;
|
||||||
overlayEnabled = overlay.enabled;
|
overlayEnabled = overlay.enabled;
|
||||||
overlayDisabledDesign = overlay.disabled_design;
|
overlayDisabledDesign = overlay.disabled_design;
|
||||||
|
overlaySavedSignature = overlayDraftSignature();
|
||||||
|
overlayAutosaveAttemptedSignature = overlaySavedSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
function overlayDraftSignature() {
|
||||||
|
return JSON.stringify({ overlayName, overlaySlug, overlayHtml, overlayCss, overlayJavascript, overlayEnabled, overlayDisabledDesign });
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createOverlay() {
|
async function createOverlay() {
|
||||||
|
if (overlayAutosaveTimer) window.clearTimeout(overlayAutosaveTimer);
|
||||||
|
overlayAutosaveTimer = undefined;
|
||||||
|
overlaySavedSignature = '';
|
||||||
|
overlayAutosaveAttemptedSignature = '';
|
||||||
selectedOverlayId = '';
|
selectedOverlayId = '';
|
||||||
overlayName = 'New Overlay';
|
overlayName = 'New Overlay';
|
||||||
overlaySlug = `overlay-${Date.now()}`;
|
overlaySlug = `overlay-${Date.now()}`;
|
||||||
|
|||||||
Reference in New Issue
Block a user