<?php
/**
 * Routes registration - Auto-generated by build process.
 * Registers all routes on their respective page init hooks.
 * Do not edit this file manually.
 *
 * @package jetpack_newsletter
 */

// Load routes registry
$routes_file = __DIR__ . '/routes/registry.php';
if ( ! file_exists( $routes_file ) ) {
	return;
}

$routes = require $routes_file;

// Group routes by page and store in globals for page-specific functions
$routes_by_page = array();
foreach ( $routes as $route ) {
	$page_slug = $route['page'];
	if ( ! isset( $routes_by_page[ $page_slug ] ) ) {
		$routes_by_page[ $page_slug ] = array();
	}
	$routes_by_page[ $page_slug ][] = $route;
}

// Store routes data in globals for each page
foreach ( $routes_by_page as $page_slug => $page_routes ) {
	$page_slug_underscore = str_replace( '-', '_', $page_slug );
	$global_name = 'jetpack_newsletter_' . $page_slug_underscore . '_routes_data';
	$GLOBALS[ $global_name ] = $page_routes;
}

/**
 * Generic helper function to register routes for a page.
 *
 * @param array  $page_routes           Array of route data for the page.
 * @param string $register_function_name Name of the function to call for registering each route.
 */
function jetpack_newsletter_register_page_routes( $page_routes, $register_function_name ) {
	// Load build constants
	$build_constants = require __DIR__ . '/constants.php';

	foreach ( $page_routes as $route ) {
		$content_handle = null;
		$route_handle = null;

		// Register content module if exists
		if ( $route['has_content'] ) {
			$content_asset_path = __DIR__ . "/routes/{$route['name']}/content.min.asset.php";
			if ( file_exists( $content_asset_path ) ) {
				$content_asset = require $content_asset_path;
				$content_handle = 'jetpack-newsletter/routes/' . $route['name'] . '/content';
				$extension = '.min.js';
				// Deregister first to override any previously registered version
				// (e.g., Core's default modules when running as a plugin).
				wp_deregister_script_module( $content_handle );
				wp_register_script_module(
					$content_handle,
					$build_constants['build_url'] . 'routes/' . $route['name'] . '/content' . $extension,
					$content_asset['module_dependencies'] ?? array(),
					$content_asset['version'] ?? false
				);
			}
		}

		// Register route module if exists
		if ( $route['has_route'] ) {
			$route_asset_path = __DIR__ . "/routes/{$route['name']}/route.min.asset.php";
			if ( file_exists( $route_asset_path ) ) {
				$route_asset = require $route_asset_path;
				$route_handle = 'jetpack-newsletter/routes/' . $route['name'] . '/route';
				$extension = '.min.js';
				// Deregister first to override any previously registered version
				// (e.g., Core's default modules when running as a plugin).
				wp_deregister_script_module( $route_handle );
				wp_register_script_module(
					$route_handle,
					$build_constants['build_url'] . 'routes/' . $route['name'] . '/route' . $extension,
					$route_asset['module_dependencies'] ?? array(),
					$route_asset['version'] ?? false
				);
			}
		}

		// Register route with page
		if ( function_exists( $register_function_name ) ) {
			call_user_func( $register_function_name, $route['path'], $content_handle, $route_handle );
		}
	}
}

// Page-specific route registration functions
// Page-specific route registration functions for jetpack-newsletter-dashboard
/**
 * Register routes for jetpack-newsletter-dashboard page (full-page mode).
 */
function jetpack_newsletter_register_jetpack_newsletter_dashboard_page_routes() {
	global $jetpack_newsletter_jetpack_newsletter_dashboard_routes_data;
	jetpack_newsletter_register_page_routes( $jetpack_newsletter_jetpack_newsletter_dashboard_routes_data, 'jetpack_newsletter_register_jetpack_newsletter_dashboard_route' );
}
add_action( 'jetpack-newsletter-dashboard_init', 'jetpack_newsletter_register_jetpack_newsletter_dashboard_page_routes' );

/**
 * Register routes for jetpack-newsletter-dashboard page (wp-admin mode).
 */
function jetpack_newsletter_register_jetpack_newsletter_dashboard_wp_admin_page_routes() {
	global $jetpack_newsletter_jetpack_newsletter_dashboard_routes_data;
	jetpack_newsletter_register_page_routes( $jetpack_newsletter_jetpack_newsletter_dashboard_routes_data, 'jetpack_newsletter_register_jetpack_newsletter_dashboard_wp_admin_route' );
}
add_action( 'jetpack-newsletter-dashboard-wp-admin_init', 'jetpack_newsletter_register_jetpack_newsletter_dashboard_wp_admin_page_routes' );

// Page-specific route registration functions for jetpack-subscribers-announcement
/**
 * Register routes for jetpack-subscribers-announcement page (full-page mode).
 */
function jetpack_newsletter_register_jetpack_subscribers_announcement_page_routes() {
	global $jetpack_newsletter_jetpack_subscribers_announcement_routes_data;
	jetpack_newsletter_register_page_routes( $jetpack_newsletter_jetpack_subscribers_announcement_routes_data, 'jetpack_newsletter_register_jetpack_subscribers_announcement_route' );
}
add_action( 'jetpack-subscribers-announcement_init', 'jetpack_newsletter_register_jetpack_subscribers_announcement_page_routes' );

/**
 * Register routes for jetpack-subscribers-announcement page (wp-admin mode).
 */
function jetpack_newsletter_register_jetpack_subscribers_announcement_wp_admin_page_routes() {
	global $jetpack_newsletter_jetpack_subscribers_announcement_routes_data;
	jetpack_newsletter_register_page_routes( $jetpack_newsletter_jetpack_subscribers_announcement_routes_data, 'jetpack_newsletter_register_jetpack_subscribers_announcement_wp_admin_route' );
}
add_action( 'jetpack-subscribers-announcement-wp-admin_init', 'jetpack_newsletter_register_jetpack_subscribers_announcement_wp_admin_page_routes' );

