var apiUrl = "https://codeeditor-api.davidssoft.com/"; //var apiUrl = "https://codeeditor-api.azurewebsites.net/"; export function hasSession() { var localstorageSessionId = localStorage.getItem("sessionId"); if (!localstorageSessionId) { return false; } else { var expiration = localStorage.getItem("sessionIdExpiration"); if (expiration) { return !sessionIsExpired(expiration); } else { return false; } } } function getSessionId() { var localstorageSessionId = localStorage.getItem("sessionId"); if (!localstorageSessionId) { return setNewSession(); } else { var expiration = localStorage.getItem("sessionIdExpiration"); if (expiration) { if (sessionIsExpired(expiration)) { return setNewSession(); } else { localStorage.setItem("sessionIdExpiration", (new Date()).toString()); return localstorageSessionId; } } else { return setNewSession(); } } } function sessionIsExpired(expiration: string) { return dateDiff(new Date(expiration), new Date()) > 120; } function setNewSession() { var newSessionId = uuidv4(); localStorage.setItem("sessionIdExpiration", (new Date()).toString()); localStorage.setItem("sessionId", newSessionId); return newSessionId; } function dateDiff(startTime: Date, endTime: Date) { var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds var resultInMinutes = Math.round(difference / 60000); return resultInMinutes; } function uuidv4() { //@ts-ignore return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); } export function getSessions(onGet: (sessions: any[]) => void) { fetch(apiUrl + "session/all").then((res) => { res.json().then((jsonRes) => { onGet(jsonRes as any); }); }); } export function getSessionData(sessionId: string, onGet: (sessions: any[]) => void) { fetch(apiUrl + "session/data/" + sessionId, { method: "GET" }).then((res) => { res.json().then((jsonRes) => { onGet(jsonRes as any); }); }); } export function setSessionData(language: string, input: any, onSet?: () => void) { var type = 0; if (language.toLowerCase() == "javascript") { type = 0; } else if (language.toLowerCase() == "html") { type = 1; } else if (language.toLowerCase() == "css") { type = 2; } else { type = 3; } fetch(apiUrl + "session/set", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ sessionId: getSessionId(), timestamp: new Date(), type: type, data: input }) }).then((res) => { if (onSet) { onSet(); } }); }