Sid Gifari File Manager
🏠 Root
/
home
/
genremedia08
/
thepassage.overlookedtracks.com
/
wp-content9
/
plugins
/
echo-knowledge-base
/
js
/
ai
/
Editing: ai-chat-session.min.js
(function(){"use strict";class e{constructor(e={}){this.config=e;this.debugMode=e.debugMode||false;this.isAdmin=e.isAdmin||false;this.showTechnicalLogs=this.isAdmin||this.debugMode;this.restNonce=e.rest_nonce||"";this.nonceCallbacks=[];this.isAuthenticated=false;this.userType=null;this.sessionStartTime=Date.now();this.lastActivityTime=Date.now();this.apiClient=null}setApiClient(e){this.apiClient=e;if(this.apiClient&&this.restNonce){this.apiClient.setNonce(this.restNonce)}}getNonce(){return this.restNonce}setNonce(e){this.restNonce=e;if(this.apiClient){this.apiClient.setNonce(e)}this.nonceCallbacks.forEach((s=>s(e)))}onNonceUpdate(e){this.nonceCallbacks.push(e)}handleNewToken(e){if(e.new_token){if(this.showTechnicalLogs){console.log("Received new token from server")}this.setNonce(e.new_token);return true}return false}async refreshNonce(e=false){if(!this.apiClient){console.error("API client not set in SessionManager");return this.restNonce}const s=await this.apiClient.refreshNonce(e);if(s){this.setNonce(s)}return s}async startSession(){if(!this.apiClient){console.error("API client not set in SessionManager");return{success:false,errorInfo:{message:"API client not configured"}}}const e=await this.apiClient.startSession();if(e.success){this.sessionStartTime=Date.now();this.updateActivity();if(e.data&&e.data.rest_nonce){this.setNonce(e.data.rest_nonce)}if(e.data&&e.data.user_data){this.updateAuthState(e.data.user_data)}}return e}updateAuthState(e){if(e){this.isAuthenticated=e.is_logged_in||false;this.userType=e.user_type||"guest"}this.updateActivity()}updateActivity(){this.lastActivityTime=Date.now()}isSessionPotentiallyExpired(e=30*60*1e3){const s=Date.now()-this.lastActivityTime;return s>e}isSessionError(e){if(!e)return false;const s=["invalid_session","session_expired","rest_cookie_invalid_nonce","rest_forbidden","unauthorized","user_state_changed","user_mismatch"];if(e.code&&s.includes(e.code)){return true}if(e.statusCode===401||e.statusCode===403){return true}if(e.finalMessage){const s=e.finalMessage.toLowerCase();const t=["cookie","authentication","unauthorized","forbidden","session"];return t.some((e=>s.includes(e)))}return false}isConversationExpiredError(e){if(!e)return false;const s=["conversation_expired","invalid_chat_id","chat_not_found"];return e.code&&s.includes(e.code)}isInvalidNonceError(e){if(!e)return false;return e.code==="rest_cookie_invalid_nonce"||e.code==="invalid_nonce"}isUserStateChangeError(e){if(!e)return false;return e.code==="user_state_changed"||e.code==="user_mismatch"}handleSessionError(e){if(this.isInvalidNonceError(e)){return"refresh_nonce"}if(e.code==="invalid_session"||e.code==="session_expired"){this.handleSessionInvalid();return"new_session"}if(this.isUserStateChangeError(e)){this.handleUserStateChange();return"clear"}if(this.isConversationExpiredError(e)){return"expired_conversation"}if(this.isSessionError(e)){this.handleSessionInvalid();return"clear"}return null}handleSessionInvalid(){this.isAuthenticated=false;this.userType="guest";if(this.showTechnicalLogs){console.log("Session marked as invalid")}}handleUserStateChange(e=null){const s=this.isAuthenticated;const t=this.userType;if(e){this.isAuthenticated=e.is_logged_in||false;this.userType=e.user_type||"guest"}else{this.isAuthenticated=false;this.userType="guest"}if(this.showTechnicalLogs){console.log("User state changed - starting new conversation")}return s!==this.isAuthenticated||t!==this.userType}cleanup(){this.nonceCallbacks=[];this.apiClient=null}}window.EPKBChatSession={SessionManager:e}})();
Save
Cancel