Fix capability classes being removed on page navigation

The body tag gets replaced by Turbo on page navigation, removing the classes.
This commit is contained in:
Karina Kwiatek 2022-10-20 18:49:02 +02:00
parent 29a3bfea88
commit c8f5511a38
4 changed files with 17 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers';
import start from 'retrospring/common'; import start from 'retrospring/common';
import initAnswerbox from 'retrospring/features/answerbox/index'; import initAnswerbox from 'retrospring/features/answerbox/index';
import initCapabilities from 'retrospring/features/capabilities';
import initInbox from 'retrospring/features/inbox/index'; import initInbox from 'retrospring/features/inbox/index';
import initUser from 'retrospring/features/user'; import initUser from 'retrospring/features/user';
import initSettings from 'retrospring/features/settings/index'; import initSettings from 'retrospring/features/settings/index';
@ -18,6 +19,7 @@ import initFront from 'retrospring/features/front';
import initWebpush from 'retrospring/features/webpush'; import initWebpush from 'retrospring/features/webpush';
start(); start();
document.addEventListener('turbo:load', initCapabilities);
document.addEventListener('DOMContentLoaded', initAnswerbox); document.addEventListener('DOMContentLoaded', initAnswerbox);
document.addEventListener('DOMContentLoaded', initInbox); document.addEventListener('DOMContentLoaded', initInbox);
document.addEventListener('DOMContentLoaded', initUser); document.addEventListener('DOMContentLoaded', initUser);

View File

@ -7,10 +7,6 @@ import { answerboxSmileHandler } from './smile';
import { answerboxSubscribeHandler } from './subscribe'; import { answerboxSubscribeHandler } from './subscribe';
export default (): void => { export default (): void => {
if ('share' in navigator) {
document.body.classList.add('cap-web-share');
}
registerEvents([ registerEvents([
{ type: 'click', target: '[name=ab-share]', handler: shareEventHandler, global: true }, { type: 'click', target: '[name=ab-share]', handler: shareEventHandler, global: true },
{ type: 'click', target: '[data-action=ab-submarine]', handler: answerboxSubscribeHandler, global: true }, { type: 'click', target: '[data-action=ab-submarine]', handler: answerboxSubscribeHandler, global: true },

View File

@ -0,0 +1,13 @@
export default (): void => {
if ('share' in navigator) {
document.body.classList.add('cap-web-share');
}
if ('serviceWorker' in navigator) {
document.body.classList.add('cap-service-worker');
}
if ('Notification' in window) {
document.body.classList.add('cap-notification');
}
}

View File

@ -3,15 +3,8 @@ import { enableHandler } from './enable';
import { dismissHandler } from "./dismiss"; import { dismissHandler } from "./dismiss";
export default (): void => { export default (): void => {
const swCapable = 'serviceWorker' in navigator; const swCapable = document.body.classList.contains('cap-service-worker');
if (swCapable) { const notificationCapable = document.body.classList.contains('cap-notification');
document.body.classList.add('cap-service-worker');
}
const notificationCapable = 'Notification' in window;
if (notificationCapable) {
document.body.classList.add('cap-notification');
}
if (swCapable && notificationCapable) { if (swCapable && notificationCapable) {
navigator.serviceWorker.getRegistration().then(registration => { navigator.serviceWorker.getRegistration().then(registration => {