"use client"; import { createContext, useReducer } from "react"; export interface DanmuPayload { liveName?: string; liveId?: string; songId?: string; songName?: string; songArtist?: string; } export interface DanmuAction { type: string; payload: DanmuPayload; } export const DanmuContext = createContext( {} ); const reducer = (state: DanmuPayload, action: DanmuAction): DanmuPayload => { const payload = action.payload; switch (action.type) { case "songs": return { ...state, songId: payload.songId, songName: payload.songName, songArtist: payload.songArtist, }; case "lives": return { ...state, liveId: payload.liveId, liveName: payload.liveName }; default: throw new Error("not support action"); } }; export default function DanmuProvider(props: any) { const [state, dispatch] = useReducer(reducer, {}); return ( {props.children} ); }