diff --git a/CHANGELOG.md b/CHANGELOG.md index 434f3e35..9710144d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # Release Notes -## [Unreleased](https://github.com/laravel/echo/compare/v2.1.4...2.x) +## [Unreleased](https://github.com/laravel/echo/compare/v2.1.6...2.x) + +## [v2.1.6](https://github.com/laravel/echo/compare/v2.1.5...v2.1.6) - 2025-06-17 + +* Fix subscriptions not being restored on reconnect by [@electron93](https://github.com/electron93) in https://github.com/laravel/echo/pull/446 + +## [v2.1.5](https://github.com/laravel/echo/compare/v2.1.4...v2.1.5) - 2025-06-03 + +### What's Changed + +* Revert CSRF logic by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/laravel/echo/pull/442 +* Added useEchoNotification hook by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/laravel/echo/pull/443 + +**Full Changelog**: https://github.com/laravel/echo/compare/v2.1.4...v2.1.5 ## [v2.1.4](https://github.com/laravel/echo/compare/v2.1.3...v2.1.4) - 2025-05-15 diff --git a/packages/laravel-echo/package.json b/packages/laravel-echo/package.json index bfb1a53f..d926527e 100644 --- a/packages/laravel-echo/package.json +++ b/packages/laravel-echo/package.json @@ -1,6 +1,6 @@ { "name": "laravel-echo", - "version": "2.1.4", + "version": "2.1.6", "description": "Laravel Echo library for beautiful Pusher and Socket.IO integration", "keywords": [ "laravel", diff --git a/packages/laravel-echo/src/connector/socketio-connector.ts b/packages/laravel-echo/src/connector/socketio-connector.ts index da127f83..7316c139 100644 --- a/packages/laravel-echo/src/connector/socketio-connector.ts +++ b/packages/laravel-echo/src/connector/socketio-connector.ts @@ -46,7 +46,7 @@ export class SocketIoConnector extends Connector< this.options as Partial, ); - this.socket.on("reconnect", () => { + this.socket.io.on("reconnect", () => { Object.values(this.channels).forEach((channel) => { channel.subscribe(); }); diff --git a/packages/react/package.json b/packages/react/package.json index a80be836..de2b4012 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@laravel/echo-react", - "version": "2.1.4", + "version": "2.1.6", "description": "React hooks for seamless integration with Laravel Echo.", "keywords": [ "laravel", diff --git a/packages/react/src/config/index.ts b/packages/react/src/config/index.ts index 6c3e66be..d2405287 100644 --- a/packages/react/src/config/index.ts +++ b/packages/react/src/config/index.ts @@ -82,3 +82,5 @@ export const configureEcho = ( export const echo = (): Echo => getEchoInstance(); + +export const echoIsConfigured = () => echoConfig !== null; diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 8d900c11..f9f034b2 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,4 +1,4 @@ -export { configureEcho, echo } from "./config/index"; +export { configureEcho, echo, echoIsConfigured } from "./config/index"; export { useEcho, useEchoModel, diff --git a/packages/react/tests/config.test.ts b/packages/react/tests/config.test.ts index e32d85f4..e3c776ad 100644 --- a/packages/react/tests/config.test.ts +++ b/packages/react/tests/config.test.ts @@ -1,16 +1,19 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; -import { configureEcho, echo } from "../src"; -describe("echo helper", async () => { +describe("echo helper", () => { beforeEach(() => { vi.resetModules(); }); it("throws error when Echo is not configured", async () => { + const { echo } = await import("../src/config"); + expect(() => echo()).toThrow("Echo has not been configured"); }); it("creates Echo instance with proper configuration", async () => { + const { configureEcho, echo } = await import("../src/config"); + configureEcho({ broadcaster: "null", }); @@ -18,4 +21,18 @@ describe("echo helper", async () => { expect(echo()).toBeDefined(); expect(echo().options.broadcaster).toBe("null"); }); + + it("checks if Echo is configured", async () => { + const { configureEcho, echoIsConfigured } = await import( + "../src/config" + ); + + expect(echoIsConfigured()).toBe(false); + + configureEcho({ + broadcaster: "null", + }); + + expect(echoIsConfigured()).toBe(true); + }); }); diff --git a/packages/vue/package.json b/packages/vue/package.json index 6176f773..7b85f93d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@laravel/echo-vue", - "version": "2.1.4", + "version": "2.1.6", "description": "Vue hooks for seamless integration with Laravel Echo.", "keywords": [ "laravel", diff --git a/packages/vue/src/config/index.ts b/packages/vue/src/config/index.ts index 1d8286e2..ac19eccd 100644 --- a/packages/vue/src/config/index.ts +++ b/packages/vue/src/config/index.ts @@ -23,6 +23,8 @@ const getEchoInstance = (): Echo => { return echoInstance as Echo; }; +export const echoIsConfigured = () => echoConfig !== null; + /** * Configure the Echo instance with sensible defaults. * diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index ec443c79..22c9e2da 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -5,4 +5,4 @@ export { useEchoPresence, useEchoPublic, } from "./composables/useEcho"; -export { configureEcho, echo } from "./config/index"; +export { configureEcho, echo, echoIsConfigured } from "./config/index"; diff --git a/packages/vue/tests/config.test.ts b/packages/vue/tests/config.test.ts index 7a18b2c6..ed1022c4 100644 --- a/packages/vue/tests/config.test.ts +++ b/packages/vue/tests/config.test.ts @@ -1,5 +1,4 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { configureEcho, echo } from "../src/config"; describe("echo helper", async () => { beforeEach(() => { @@ -11,14 +10,31 @@ describe("echo helper", async () => { }); it("throws error when Echo is not configured", async () => { + const { echo } = await import("../src/config"); + expect(() => echo()).toThrow("Echo has not been configured"); }); it("creates Echo instance with proper configuration", async () => { + const { configureEcho, echo } = await import("../src/config"); + configureEcho({ broadcaster: "null", }); expect(echo()).toBeDefined(); }); + + it("checks if Echo is configured", async () => { + const { configureEcho, echoIsConfigured: echoIsConfigured } = + await import("../src/config"); + + expect(echoIsConfigured()).toBe(false); + + configureEcho({ + broadcaster: "null", + }); + + expect(echoIsConfigured()).toBe(true); + }); });