Fix offer workspace mutation observer loop
This commit is contained in:
parent
40ecd73f1c
commit
3253a711f4
@ -10,7 +10,7 @@
|
|||||||
const modal=()=>$('sunClientOfferModal');
|
const modal=()=>$('sunClientOfferModal');
|
||||||
const dialog=()=>modal()?.querySelector('.dialog')||null;
|
const dialog=()=>modal()?.querySelector('.dialog')||null;
|
||||||
const toast=(text,type='info',ms=4200)=>{try{return window.SunEnterprise?.toast?.(text,type,ms)}catch(_){};};
|
const toast=(text,type='info',ms=4200)=>{try{return window.SunEnterprise?.toast?.(text,type,ms)}catch(_){};};
|
||||||
let mode='preview',wasOpen=false,activeOrderId='';
|
let mode='preview',activeOrderId='';
|
||||||
let openersPatched=false,classicPatched=false;
|
let openersPatched=false,classicPatched=false;
|
||||||
|
|
||||||
function readGalleryMap(){try{const v=JSON.parse(localStorage.getItem(GALLERY_KEY)||'{}');return v&&typeof v==='object'&&!Array.isArray(v)?v:{}}catch(_){return{}}}
|
function readGalleryMap(){try{const v=JSON.parse(localStorage.getItem(GALLERY_KEY)||'{}');return v&&typeof v==='object'&&!Array.isArray(v)?v:{}}catch(_){return{}}}
|
||||||
@ -105,8 +105,8 @@
|
|||||||
function refreshOffer(){try{window.dispatchEvent(new CustomEvent('sunoffertemplatechange',{detail:{galleryOnly:true,orderId:activeOrderId}}))}catch(_){}}
|
function refreshOffer(){try{window.dispatchEvent(new CustomEvent('sunoffertemplatechange',{detail:{galleryOnly:true,orderId:activeOrderId}}))}catch(_){}}
|
||||||
function patchOpeners(){
|
function patchOpeners(){
|
||||||
if(openersPatched)return true;const one=window.sunOpenClientOffer,cur=window.sunOpenCurrentClientOffer;if(typeof one!=='function'||typeof cur!=='function')return false;
|
if(openersPatched)return true;const one=window.sunOpenClientOffer,cur=window.sunOpenCurrentClientOffer;if(typeof one!=='function'||typeof cur!=='function')return false;
|
||||||
window.sunOpenClientOffer=function(id,...rest){activeOrderId=String(id??'');const out=one.call(this,id,...rest);setTimeout(syncGalleryUi,80);return out};
|
window.sunOpenClientOffer=function(id,...rest){activeOrderId=String(id??'');mode='preview';const out=one.call(this,id,...rest);setTimeout(()=>{enhance();setMode('preview',false);syncGalleryUi()},80);return out};
|
||||||
window.sunOpenCurrentClientOffer=function(...args){activeOrderId=currentDraftId();const out=cur.apply(this,args);setTimeout(syncGalleryUi,80);return out};
|
window.sunOpenCurrentClientOffer=function(...args){activeOrderId=currentDraftId();mode='preview';const out=cur.apply(this,args);setTimeout(()=>{enhance();setMode('preview',false);syncGalleryUi()},80);return out};
|
||||||
window.sunOpenClientOffer.__sunV1769=true;window.sunOpenCurrentClientOffer.__sunV1769=true;openersPatched=true;return true;
|
window.sunOpenClientOffer.__sunV1769=true;window.sunOpenCurrentClientOffer.__sunV1769=true;openersPatched=true;return true;
|
||||||
}
|
}
|
||||||
function patchClassic(){
|
function patchClassic(){
|
||||||
@ -127,10 +127,9 @@
|
|||||||
},true);
|
},true);
|
||||||
|
|
||||||
window.addEventListener('sun:offer-gallery-v1769-change',syncGalleryUi);
|
window.addEventListener('sun:offer-gallery-v1769-change',syncGalleryUi);
|
||||||
const observer=new MutationObserver(()=>{
|
let enhanceQueued=false;
|
||||||
const m=modal();if(!m)return;enhance();const open=m.classList.contains('on');if(open&&!wasOpen)setMode('preview',false);wasOpen=open;
|
const observer=new MutationObserver(()=>{if(enhanceQueued)return;enhanceQueued=true;queueMicrotask(()=>{enhanceQueued=false;enhance()})});
|
||||||
});
|
observer.observe(document.documentElement,{subtree:true,childList:true});
|
||||||
observer.observe(document.documentElement,{subtree:true,childList:true,attributes:true,attributeFilter:['class']});
|
|
||||||
installStyle();enhance();
|
installStyle();enhance();
|
||||||
const retry=setInterval(()=>{if(patchOpeners()&&patchClassic())clearInterval(retry)},350);setTimeout(()=>clearInterval(retry),15000);
|
const retry=setInterval(()=>{if(patchOpeners()&&patchClassic())clearInterval(retry)},350);setTimeout(()=>clearInterval(retry),15000);
|
||||||
window.SunOfferWorkspaceV1769={VERSION,RELEASE,GALLERY_KEY,setMode,enhance,galleryFor,checks:()=>({version:VERSION,mode,modal:Boolean(modal()),tabs:Boolean($('sunOfferWorkspaceTabsV1769')),activeOrderId,openersPatched,classicPatched})};
|
window.SunOfferWorkspaceV1769={VERSION,RELEASE,GALLERY_KEY,setMode,enhance,galleryFor,checks:()=>({version:VERSION,mode,modal:Boolean(modal()),tabs:Boolean($('sunOfferWorkspaceTabsV1769')),activeOrderId,openersPatched,classicPatched})};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user