fix : venue changes accordingly in 2nd screen
This commit is contained in:
parent
d493963add
commit
2cb45a6857
@ -5,6 +5,9 @@ const fs = require('fs');
|
||||
let mainWindow;
|
||||
let screenWindow;
|
||||
let currentSharedData = null; // Store latest data for initial sync
|
||||
let currentSelectedVenue = 'Select Venue';
|
||||
let currentSelectedRace = 1;
|
||||
let currentStopMessage = '';
|
||||
|
||||
function createWindows() {
|
||||
const displays = screen.getAllDisplays();
|
||||
@ -45,6 +48,11 @@ function createWindows() {
|
||||
if (currentSharedData && screenWindow.webContents) {
|
||||
screenWindow.webContents.send('update-shared-data', currentSharedData);
|
||||
}
|
||||
if (screenWindow.webContents) {
|
||||
screenWindow.webContents.send('update-selected-venue', currentSelectedVenue);
|
||||
screenWindow.webContents.send('update-selected-race', currentSelectedRace);
|
||||
screenWindow.webContents.send('update-stop-message', currentStopMessage);
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.on('close-second-screen', () => screenWindow.hide());
|
||||
@ -57,8 +65,25 @@ function createWindows() {
|
||||
}
|
||||
});
|
||||
|
||||
// Handle selected venue sync
|
||||
ipcMain.on('sync-selected-venue', (event, venue) => {
|
||||
currentSelectedVenue = venue;
|
||||
if (screenWindow && screenWindow.webContents) {
|
||||
screenWindow.webContents.send('update-selected-venue', venue);
|
||||
}
|
||||
});
|
||||
|
||||
// Handle selected race sync
|
||||
ipcMain.on('sync-selected-race', (event, race) => {
|
||||
currentSelectedRace = race;
|
||||
if (screenWindow && screenWindow.webContents) {
|
||||
screenWindow.webContents.send('update-selected-race', race);
|
||||
}
|
||||
});
|
||||
|
||||
// Add this new handler
|
||||
ipcMain.on('sync-stop-message', (event, message) => {
|
||||
currentStopMessage = message;
|
||||
if (screenWindow && screenWindow.webContents) {
|
||||
screenWindow.webContents.send('update-stop-message', message);
|
||||
}
|
||||
|
||||
@ -9,4 +9,8 @@ contextBridge.exposeInMainWorld('electronAPI', {
|
||||
// Add these new lines
|
||||
syncStopMessage: (message) => ipcRenderer.send('sync-stop-message', message),
|
||||
onUpdateStopMessage: (callback) => ipcRenderer.on('update-stop-message', (event, message) => callback(message)),
|
||||
syncSelectedVenue: (venue) => ipcRenderer.send('sync-selected-venue', venue),
|
||||
onUpdateSelectedVenue: (callback) => ipcRenderer.on('update-selected-venue', (event, venue) => callback(venue)),
|
||||
syncSelectedRace: (race) => ipcRenderer.send('sync-selected-race', race),
|
||||
onUpdateSelectedRace: (callback) => ipcRenderer.on('update-selected-race', (event, race) => callback(race)),
|
||||
});
|
||||
@ -144,6 +144,8 @@ export class NavbarComponent implements OnInit, OnDestroy {
|
||||
this.currentDate = this.getTodayDate();
|
||||
console.log('[INIT] Current venue:', this.currentVenue, 'date:', this.currentDate);
|
||||
|
||||
this.selectedVenue = localStorage.getItem('selectedVenue') || this.raceCardData?.venue || 'Select Venue';
|
||||
|
||||
if (this.currentVenue) {
|
||||
try {
|
||||
this.stopbetService.initialize(this.currentVenue, this.currentDate);
|
||||
@ -287,6 +289,13 @@ export class NavbarComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Initial sync for venue and race
|
||||
const electronAPI = (window as any).electronAPI;
|
||||
if (electronAPI) {
|
||||
electronAPI.syncSelectedVenue(this.selectedVenue);
|
||||
electronAPI.syncSelectedRace(this.selectedRace);
|
||||
}
|
||||
}
|
||||
|
||||
private getTodayDate(): string {
|
||||
@ -531,6 +540,11 @@ export class NavbarComponent implements OnInit, OnDestroy {
|
||||
value: this.selectedVenue,
|
||||
});
|
||||
|
||||
const electronAPI = (window as any).electronAPI;
|
||||
if (electronAPI) {
|
||||
electronAPI.syncSelectedVenue(this.selectedVenue);
|
||||
}
|
||||
|
||||
const newVenue = venue.toUpperCase();
|
||||
if (newVenue !== this.currentVenue) {
|
||||
this.currentVenue = newVenue;
|
||||
@ -559,6 +573,11 @@ export class NavbarComponent implements OnInit, OnDestroy {
|
||||
value: this.selectedRace,
|
||||
});
|
||||
|
||||
const electronAPI = (window as any).electronAPI;
|
||||
if (electronAPI) {
|
||||
electronAPI.syncSelectedRace(this.selectedRace);
|
||||
}
|
||||
|
||||
const raceList = this.raceCardData?.raceVenueRaces?.races ?? [];
|
||||
const selectedRaceEntry = raceList[this.selectedRace - 1] ?? [];
|
||||
|
||||
|
||||
@ -53,22 +53,10 @@ export class SharedDisplayComponent implements OnInit {
|
||||
ngOnInit(): void {
|
||||
console.log('[SHARED DISPLAY] Initializing, electronAPI available:', !!window.electronAPI);
|
||||
this.btid = localStorage.getItem('btid');
|
||||
this.sharedStateService.sharedData$.subscribe((data) => {
|
||||
console.log('[SHARED DISPLAY] Received shared data:', data);
|
||||
if (!data) return;
|
||||
if (data.type === 'selectedVenue') {
|
||||
this.selectedVenue = data.value;
|
||||
console.log('[SHARED DISPLAY] Venue updated to:', this.selectedVenue);
|
||||
}
|
||||
if (data.type === 'selectedRace') {
|
||||
this.selectedRace = data.value;
|
||||
console.log('[SHARED DISPLAY] Race updated to:', this.selectedRace);
|
||||
}
|
||||
this.cdRef.detectChanges();
|
||||
});
|
||||
|
||||
if (window.electronAPI && window.electronAPI.onUpdateSharedData) {
|
||||
window.electronAPI.onUpdateSharedData((data: SharedData) => {
|
||||
const electronAPI = (window as any).electronAPI;
|
||||
if (electronAPI) {
|
||||
electronAPI.onUpdateSharedData((data: SharedData) => {
|
||||
console.log('[SHARED DISPLAY] Received IPC data:', data);
|
||||
if (!data) return;
|
||||
this.filledRows = data.filledRows || this.filledRows;
|
||||
@ -80,8 +68,20 @@ export class SharedDisplayComponent implements OnInit {
|
||||
console.log('[SHARED DISPLAY] Updated filledRows:', this.filledRows.map(row => ({ ...row, numbers: JSON.stringify(row.numbers) })));
|
||||
this.cdRef.detectChanges();
|
||||
});
|
||||
|
||||
electronAPI.onUpdateSelectedVenue((venue: string) => {
|
||||
this.selectedVenue = venue;
|
||||
console.log('[SHARED DISPLAY] Venue updated via IPC to:', this.selectedVenue);
|
||||
this.cdRef.detectChanges();
|
||||
});
|
||||
|
||||
electronAPI.onUpdateSelectedRace((race: number) => {
|
||||
this.selectedRace = race.toString();
|
||||
console.log('[SHARED DISPLAY] Race updated via IPC to:', this.selectedRace);
|
||||
this.cdRef.detectChanges();
|
||||
});
|
||||
} else {
|
||||
console.error('[SHARED DISPLAY] electronAPI or onUpdateSharedData not available');
|
||||
console.error('[SHARED DISPLAY] electronAPI not available');
|
||||
}
|
||||
}
|
||||
}
|
||||
4
btc-UI/src/electron.d.ts
vendored
4
btc-UI/src/electron.d.ts
vendored
@ -7,6 +7,10 @@ interface ElectronAPI {
|
||||
// Add these new lines
|
||||
syncStopMessage: (message: string) => void;
|
||||
onUpdateStopMessage: (callback: (message: string) => void) => void;
|
||||
syncSelectedVenue: (venue: string) => void;
|
||||
onUpdateSelectedVenue: (callback: (venue: string) => void) => void;
|
||||
syncSelectedRace: (race: number) => void;
|
||||
onUpdateSelectedRace: (callback: (race: number) => void) => void;
|
||||
}
|
||||
|
||||
interface SharedData {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user