// 1. Declare the global object used throughout the project
window.popstore = {};
// 2. Set your public project token (get it from admin.popstore.com.br)
popstore.token = 'pk_abc123';
// 3. Load your project config from the Popstore API
popstore.config = await (await fetch('https://api.popstore.com.br/v1/config', {
headers: { Authorization: 'Bearer ' + popstore.token }
})).json();
// 4. Define dynamic import functions using auto versioning (for cache busting)
popstore.load = async (path) => import(path + '?v=' + popstore.config.version);
popstore.loadCDN = async (path) => import('https://cdn.popstore.com.br' + path + '?v=' + popstore.config.versionCDN);
// 5. Define your custom router to dynamically load local page modules
popstore.route = async function (path = location.pathname) {
popstore.loading();
const page = await popstore.router(path);
try {
const module = await popstore.load('/js/' + page + '.page.js');
await module.render();
} catch {
const fallback = await popstore.load('/js/home.page.js');
await fallback.render();
}
};
// 6. Define your auth method for protected routes
popstore.auth = function (token_name = 'token') {
const token = localStorage.getItem(token_name);
if (!token) {
popstore.route('login');
return false;
}
return true;
};
// 7. Load the core Popstore framework from CDN (session, geo, listeners, etc)
await popstore.loadCDN('/main.js');
await popstore.init();
// 8. Load your base layout shell
await popstore.load('/js/layout.js');
// 9. Load the initial page based on current URL
await popstore.route();
// 10. Load optional modules (WebSocket, GPT, notifications) after login
if (popstore.auth()) {
const ws = await popstore.loadCDN('/ws.js');
popstore.ws = ws.default;
const gpt = await popstore.loadCDN('/gpt.js');
gpt.render();
popstore.ws.emit('ping', { teste: true });
popstore.ws.on('pong', (payload) => console.log('Pong received:', payload));
const PopNotifications = await popstore.loadCDN('/notifications.js');
PopNotifications.render('pop-notifications-placeholder');
}