refactor(private-zoom): rename full feature surface

This commit is contained in:
Codex
2026-07-22 18:21:47 +08:00
parent e813333607
commit ed3b34ce1c
102 changed files with 695 additions and 519 deletions
@@ -7,7 +7,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
const instances = vi.hoisted(() => ({
chat: 0,
payment: 0,
privateRoom: 0,
privateZoom: 0,
}));
vi.mock("@/stores/chat/chat-context", async () => {
@@ -51,23 +51,23 @@ vi.mock("@/stores/payment/payment-context", async () => {
};
});
vi.mock("@/stores/private-room", async () => {
vi.mock("@/stores/private-zoom", async () => {
const { createElement, useState } = await import("react");
return {
PrivateRoomProvider({
PrivateZoomProvider({
characterId,
children,
}: {
characterId: string;
children: ReactNode;
}) {
const [instanceId] = useState(() => ++instances.privateRoom);
const [instanceId] = useState(() => ++instances.privateZoom);
return createElement(
"div",
{
"data-character-id": characterId,
"data-instance-id": instanceId,
"data-testid": "private-room-provider",
"data-testid": "private-zoom-provider",
},
children,
);
@@ -85,7 +85,7 @@ vi.mock("@/stores/sync/payment-success-sync", () => ({
import { ChatRouteProviders } from "@/providers/chat-route-providers";
import { PaymentRouteProvider } from "@/providers/payment-route-provider";
import { PrivateRoomRouteProvider } from "@/providers/private-room-route-provider";
import { PrivateZoomRouteProvider } from "@/providers/private-zoom-route-provider";
describe("character actor route providers", () => {
let container: HTMLDivElement;
@@ -94,7 +94,7 @@ describe("character actor route providers", () => {
beforeEach(() => {
instances.chat = 0;
instances.payment = 0;
instances.privateRoom = 0;
instances.privateZoom = 0;
(globalThis as { IS_REACT_ACT_ENVIRONMENT?: boolean })
.IS_REACT_ACT_ENVIRONMENT = true;
container = document.createElement("div");
@@ -121,14 +121,14 @@ describe("character actor route providers", () => {
);
});
it("recreates the private-room actor when the character changes", () => {
renderPrivateRoom("elio");
const firstInstance = instanceId("private-room-provider");
it("recreates the private-zoom actor when the character changes", () => {
renderPrivateZoom("elio");
const firstInstance = instanceId("private-zoom-provider");
renderPrivateRoom("maya-tan");
renderPrivateZoom("maya-tan");
expect(instanceId("private-room-provider")).not.toBe(firstInstance);
expect(testNode("private-room-provider").dataset.characterId).toBe(
expect(instanceId("private-zoom-provider")).not.toBe(firstInstance);
expect(testNode("private-zoom-provider").dataset.characterId).toBe(
"maya-tan",
);
});
@@ -155,12 +155,12 @@ describe("character actor route providers", () => {
});
}
function renderPrivateRoom(characterId: string): void {
function renderPrivateZoom(characterId: string): void {
act(() => {
root.render(
<PrivateRoomRouteProvider characterId={characterId}>
<span>private room</span>
</PrivateRoomRouteProvider>,
<PrivateZoomRouteProvider characterId={characterId}>
<span>private zoom</span>
</PrivateZoomRouteProvider>,
);
});
}
@@ -1,21 +0,0 @@
"use client";
import type { ReactNode } from "react";
import { PrivateRoomProvider } from "@/stores/private-room";
export interface PrivateRoomRouteProviderProps {
children: ReactNode;
characterId: string;
}
export function PrivateRoomRouteProvider({
children,
characterId,
}: PrivateRoomRouteProviderProps) {
return (
<PrivateRoomProvider key={characterId} characterId={characterId}>
{children}
</PrivateRoomProvider>
);
}
@@ -0,0 +1,21 @@
"use client";
import type { ReactNode } from "react";
import { PrivateZoomProvider } from "@/stores/private-zoom";
export interface PrivateZoomRouteProviderProps {
children: ReactNode;
characterId: string;
}
export function PrivateZoomRouteProvider({
children,
characterId,
}: PrivateZoomRouteProviderProps) {
return (
<PrivateZoomProvider key={characterId} characterId={characterId}>
{children}
</PrivateZoomProvider>
);
}
+1 -1
View File
@@ -4,7 +4,7 @@
* 根级 Client Providers 包装
*
* 这里只保留跨路由的 Character Catalog、Auth、User、消息预览和 viewport
* Provider。Chat、Payment、PrivateRoom 状态机由对应路由 layout 按需挂载。
* Provider。Chat、Payment、PrivateZoom 状态机由对应路由 layout 按需挂载。
*/
import type { ReactNode } from "react";