forked from profectus/Profectus
1 line
1.9 KiB
JavaScript
1 line
1.9 KiB
JavaScript
function x({acceptedOrigins:g,supportsSaving:P,supportsSaveManager:y,ignoreApiVersion:b,onLoggedInChanged:k}){return new Promise((j,m)=>{if(g=g??["https://galaxy.click"],g.includes(document.referrer)){let d,f;const t={},c={},s={acceptedOrigins:g,supportsSaving:P,supportsSaveManager:y,ignoreApiVersion:b,onLoggedInChanged:k,origin:window.origin,apiVersion:0,loggedIn:!1,postMessage:function(e){var n;(n=window.top)==null||n.postMessage(e,s.origin)},getSaveList:function(){return d!=null||f!=null?Promise.reject("save_list action already in progress."):(s.postMessage({action:"save_list"}),new Promise((e,n)=>{d=e,f=n}))},save:function(e,n,a){return e in t?Promise.reject(`save action for slot ${e} already in progress.`):(s.postMessage({action:"save",slot:e,content:n,label:a}),new Promise((u,p)=>{t[e]={accept:u,reject:p}}))},load:function(e){return e in c?Promise.reject(`load action for slot ${e} already in progress.`):(s.postMessage({action:"load",slot:e}),new Promise((n,a)=>{c[e]={accept:n,reject:a}}))}};window.addEventListener("message",e=>{var n,a,u,p,w;if(e.origin===s.origin){console.log("Received message from Galaxy",e.data);const l=e.data;switch(l.type){case"info":{const{galaxy:i,api_version:r,logged_in:o}=l;if(r!==1&&s.ignoreApiVersion!==!0)m(`API version not recognized: ${r}`);else{const v=s.apiVersion===0;s.apiVersion=r,s.loggedIn=o,s.origin=e.origin,v?j(s):(n=s.onLoggedInChanged)==null||n.call(s,s)}break}case"save_list":{const{list:i,error:r,message:o}=l;r===!0?f(o):d(i),d=f=null;break}case"save_content":{const{content:i,label:r,slot:o,error:v,message:_}=l;v===!0?(a=c[o])==null||a.reject(_):(u=c[o])==null||u.accept({slot:o,content:i,label:r}),delete c[o];break}case"saved":{const{slot:i,error:r,message:o}=l;r===!0?(p=t[i])==null||p.reject(o):(w=t[i])==null||w.accept(i),delete t[i];break}}}})}else m(`Project is not running on an accepted origin: ${window.origin}`)})}export{x as i};
|