mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-15 12:24:44 +08:00
fix(remote-input): resolve cross-page interference between settings and search pages
- Add targetPage field to remoteControlStore for message routing - Update settings page to filter messages by target page - Update search page to filter messages and pass target context - Add clearMessage method to prevent duplicate message handling - Ensure remote input only affects intended target page
This commit is contained in:
@@ -8,10 +8,12 @@ interface RemoteControlState {
|
||||
startServer: () => Promise<void>;
|
||||
stopServer: () => void;
|
||||
isModalVisible: boolean;
|
||||
showModal: () => void;
|
||||
showModal: (targetPage?: string) => void;
|
||||
hideModal: () => void;
|
||||
lastMessage: string | null;
|
||||
setMessage: (message: string) => void;
|
||||
targetPage: string | null;
|
||||
setMessage: (message: string, targetPage?: string) => void;
|
||||
clearMessage: () => void;
|
||||
}
|
||||
|
||||
export const useRemoteControlStore = create<RemoteControlState>((set, get) => ({
|
||||
@@ -20,6 +22,7 @@ export const useRemoteControlStore = create<RemoteControlState>((set, get) => ({
|
||||
error: null,
|
||||
isModalVisible: false,
|
||||
lastMessage: null,
|
||||
targetPage: null,
|
||||
|
||||
startServer: async () => {
|
||||
if (get().isServerRunning) {
|
||||
@@ -28,7 +31,9 @@ export const useRemoteControlStore = create<RemoteControlState>((set, get) => ({
|
||||
remoteControlService.init({
|
||||
onMessage: (message: string) => {
|
||||
console.log('[RemoteControlStore] Received message:', message);
|
||||
set({ lastMessage: message });
|
||||
const currentState = get();
|
||||
// Use the current targetPage from the store
|
||||
set({ lastMessage: message, targetPage: currentState.targetPage });
|
||||
},
|
||||
onHandshake: () => {
|
||||
console.log('[RemoteControlStore] Handshake successful');
|
||||
@@ -53,10 +58,14 @@ export const useRemoteControlStore = create<RemoteControlState>((set, get) => ({
|
||||
}
|
||||
},
|
||||
|
||||
showModal: () => set({ isModalVisible: true }),
|
||||
hideModal: () => set({ isModalVisible: false }),
|
||||
showModal: (targetPage?: string) => set({ isModalVisible: true, targetPage }),
|
||||
hideModal: () => set({ isModalVisible: false, targetPage: null }),
|
||||
|
||||
setMessage: (message: string) => {
|
||||
set({ lastMessage: `${message}_${Date.now()}` });
|
||||
setMessage: (message: string, targetPage?: string) => {
|
||||
set({ lastMessage: `${message}_${Date.now()}`, targetPage });
|
||||
},
|
||||
|
||||
clearMessage: () => {
|
||||
set({ lastMessage: null, targetPage: null });
|
||||
},
|
||||
}));
|
||||
Reference in New Issue
Block a user