[], 'version' => PLUME_VERSION, ]; \wp_enqueue_script( 'plume-usage', PLUME_URL . 'assets/usage/index.js', array_merge( $asset['dependencies'], [ 'wp-element', 'wp-api-fetch', 'wp-i18n' ] ), $asset['version'], true ); \wp_localize_script( 'plume-usage', 'plumeData', [ 'nonce' => \wp_create_nonce( 'wp_rest' ), 'restUrl' => \esc_url_raw( \rest_url( 'plume/v1' ) ), 'currentPostId' => 0, 'isPaid' => TierManager::is_paid(), 'siteTitle' => \get_bloginfo( 'name' ), ] ); \wp_enqueue_style( 'plume-usage', PLUME_URL . 'assets/usage/index.css', [], $asset['version'] ); } /** * Register the /plume/v1/usage REST route. * * @since 1.0.0 * @return void */ public static function register_routes(): void { \register_rest_route( 'plume/v1', '/usage', [ 'methods' => \WP_REST_Server::READABLE, 'callback' => [ self::class, 'get_usage' ], 'permission_callback' => fn() => \current_user_can( 'manage_options' ), ] ); } /** * Return the current user's token usage summary. * * @since 1.0.0 * @param \WP_REST_Request $request Incoming REST request (unused). * @return \WP_REST_Response */ public static function get_usage( \WP_REST_Request $request ): \WP_REST_Response { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Required by WP_REST_Server callback signature. $usage = UsageTracker::get_usage(); return new \WP_REST_Response( [ 'tier' => $usage['tier'], 'used' => $usage['used'], 'limit' => $usage['limit'], 'remaining' => $usage['remaining'], 'can_use' => $usage['can_use'], ] ); } }