Automattic\WooCommerce\Internal\PushNotifications\Controllers

PushTokenRestController::createpublicWC 10.6.0

Creates a push token record.

Method of the class: PushTokenRestController{}

No Hooks.

Returns

WP_REST_Response|WP_Error.

Usage

$PushTokenRestController = new PushTokenRestController();
$PushTokenRestController->create( $request );
$request(WP_REST_Request) (required)
The request object.

Changelog

Since 10.6.0 Introduced.

PushTokenRestController::create() code WC 10.7.0

public function create( WP_REST_Request $request ) {
	try {
		$data = array(
			'user_id'       => get_current_user_id(),
			'token'         => $request->get_param( 'token' ),
			'platform'      => $request->get_param( 'platform' ),
			'device_uuid'   => $request->get_param( 'device_uuid' ),
			'origin'        => $request->get_param( 'origin' ),
			'device_locale' => $request->get_param( 'device_locale' ),
			'metadata'      => $request->get_param( 'metadata' ) ?? array(),
		);

		$data_store = wc_get_container()->get( PushTokensDataStore::class );
		$push_token = $data_store->get_by_token_or_device_id( $data );

		if ( $push_token ) {
			$push_token->set_token( $data['token'] );
			$push_token->set_device_uuid( $data['device_uuid'] );
			$push_token->set_device_locale( $data['device_locale'] );
			$push_token->set_metadata( $data['metadata'] );
			$data_store->update( $push_token );
		} else {
			$push_token = $data_store->create( $data );
		}
	} catch ( Exception $e ) {
		return $this->convert_exception_to_wp_error( $e );
	}

	return new WP_REST_Response(
		array( 'id' => $push_token->get_id() ),
		WP_Http::CREATED
	);
}