Skip to content

Commit

Permalink
Change window and document DOM access to self checks for SW context
Browse files Browse the repository at this point in the history
Fixes #2867
  • Loading branch information
krissvaa committed Nov 11, 2024
1 parent c1245de commit cf3a028
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 6 deletions.
5 changes: 3 additions & 2 deletions packages/ts/frontend/src/Connect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
} from './FluxConnection.js';
import type { VaadinWindow } from './types.js';

const $wnd = window as VaadinWindow;
const $wnd = self as VaadinWindow;

$wnd.Vaadin ??= {};
$wnd.Vaadin.registrations ??= [];
Expand Down Expand Up @@ -300,7 +300,8 @@ export class ConnectClient {
throw new TypeError(`2 arguments required, but got only ${arguments.length}`);
}

const csrfHeaders = getCsrfTokenHeadersForEndpointRequest(document);
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const csrfHeaders = self.document ? getCsrfTokenHeadersForEndpointRequest(self.document) : {};
const headers: Record<string, string> = {
Accept: 'application/json',
'Content-Type': 'application/json',
Expand Down
3 changes: 2 additions & 1 deletion packages/ts/frontend/src/CookieManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ export function calculatePath({ pathname }: URL): string {
}

const CookieManager: Cookies.CookiesStatic = Cookies.withAttributes({
path: calculatePath(new URL(document.baseURI)),
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
path: calculatePath(new URL(self.document?.baseURI ?? '/')),
});

export default CookieManager;
3 changes: 2 additions & 1 deletion packages/ts/frontend/src/FluxConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,8 @@ export class FluxConnection extends EventTarget {
}

#connectWebsocket(prefix: string, atmosphereOptions: Partial<Atmosphere.Request>) {
const extraHeaders = getCsrfTokenHeadersForEndpointRequest(document);
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const extraHeaders = self.document ? getCsrfTokenHeadersForEndpointRequest(self.document) : {};
const pushUrl = 'HILLA/push';
const url = prefix.length === 0 ? pushUrl : (prefix.endsWith('/') ? prefix : `${prefix}/`) + pushUrl;
this.#socket = atmosphere.subscribe?.({
Expand Down
2 changes: 1 addition & 1 deletion packages/ts/react-i18n/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class I18n {

constructor() {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if (!(window as any).Vaadin?.featureFlags?.hillaI18n) {
if (!(self as any).Vaadin?.featureFlags?.hillaI18n) {
// Remove when removing feature flag
throw new Error(
`The Hilla I18n API is currently considered experimental and may change in the future. To use it you need to explicitly enable it in Copilot or by adding com.vaadin.experimental.hillaI18n=true to vaadin-featureflags.properties`,
Expand Down
2 changes: 1 addition & 1 deletion packages/ts/react-signals/src/FullStackSignal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export abstract class DependencyTrackingSignal<T> extends Signal<T> {

protected constructor(value: T | undefined, onFirstSubscribe: () => void, onLastUnsubscribe: () => void) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if (!(window as any).Vaadin?.featureFlags?.fullstackSignals) {
if (!(self as any).Vaadin?.featureFlags?.fullstackSignals) {
// Remove when removing feature flag
throw new Error(
`The Hilla Fullstack Signals API is currently considered experimental and may change in the future. To use it you need to explicitly enable it in Copilot or by adding com.vaadin.experimental.fullstackSignals=true to vaadin-featureflags.properties`,
Expand Down

0 comments on commit cf3a028

Please sign in to comment.