1import type { Protocol } from 'devtools-protocol';
2
3import { CdpMessage, DebuggerRequest, InspectorHandler } from './types';
4import { MetroBundlerDevServer } from '../../MetroBundlerDevServer';
5import { ExpoDebuggerInfo } from '../device';
6
7export class PageReloadHandler implements InspectorHandler {
8  constructor(private readonly metroBundler: MetroBundlerDevServer) {}
9
10  onDebuggerMessage(message: DebuggerRequest<PageReload>, { socket }: ExpoDebuggerInfo) {
11    if (message.method === 'Page.reload') {
12      this.metroBundler.broadcastMessage('reload');
13      socket.send(JSON.stringify({ id: message.id }));
14      return true;
15    }
16
17    return false;
18  }
19}
20
21/** @see https://chromedevtools.github.io/devtools-protocol/1-2/Page/#method-reload */
22export type PageReload = CdpMessage<'Page.reload', Protocol.Page.ReloadRequest, never>;
23