Files
Grav-Admin-Plugin/themes/grav/app/main.js
Andy Miller 325764a304 improved login/session handling
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-09-15 12:02:55 -06:00

86 lines
2.4 KiB
JavaScript

// polyfills
import '@babel/polyfill';
import $ from 'jquery';
import './utils/remodal';
import 'simplebar/dist/simplebar.min.js';
import { UriToMarkdown } from './forms/fields/files.js';
import GPM, { Instance as gpm } from './utils/gpm';
import KeepAlive from './utils/keepalive';
import { config as GravConfig } from 'grav-config';
import Updates, { Instance as updates, Notifications, Feed } from './updates';
import Dashboard from './dashboard';
import Pages from './pages';
import Forms from './forms';
import Cookies from './utils/cookies';
import './plugins';
import './themes';
import MediaFilter, { Instance as MediaFilterInstance} from './media';
import toastr from './utils/toastr';
import request from './utils/request';
import './utils/2fa';
import './tools';
import './whitelabel';
// bootstrap jQuery extensions
import './utils/bootstrap-transition';
import './utils/bootstrap-collapse';
import './utils/bootstrap-dropdown';
// tabs memory
import './utils/tabs-memory';
// changelog
import './utils/changelog';
// Main Sidebar
import Sidebar, { Instance as sidebar } from './utils/sidebar';
import { bindGlobalAjaxTrap, installNavigationGuard } from './utils/session-expired';
// starts the keep alive (if enabled), but never on auth views like login/forgot/reset/register
const AUTH_VIEWS = ['login', 'forgot', 'reset', 'register'];
const isAuthView = AUTH_VIEWS.includes(String(GravConfig.route || ''));
if (!isAuthView && String(GravConfig.keep_alive_enabled) !== '0') {
KeepAlive.start();
}
// catch legacy jQuery XHR 401/403 globally
bindGlobalAjaxTrap();
// intercept admin nav clicks to show modal before redirect on timeout
installNavigationGuard();
// global event to catch sidebar_state changes
$(global).on('sidebar_state._grav', () => {
Object.keys(Dashboard.Chart.Instances).forEach((chart) => {
setTimeout(() => Dashboard.Chart.Instances[chart].chart.update(), 10);
});
});
export default {
GPM: {
GPM,
Instance: gpm
},
KeepAlive,
Dashboard,
Pages,
Forms,
Updates: {
Updates,
Notifications,
Feed,
Instance: updates
},
Sidebar: {
Sidebar,
Instance: sidebar
},
MediaFilter: {
MediaFilter,
Instance: MediaFilterInstance
},
Scrollbar: { Scrollbar: { deprecated: true }, Instance: { deprecated: true } },
Utils: { request, toastr, Cookies, UriToMarkdown }
};