From ff8833891b6e7ba70d6c42e9961757fc2ec0b58c Mon Sep 17 00:00:00 2001
From: Grzegorz Rola <grola@seostudio.pl>
Date: Thu, 20 Feb 2020 09:02:46 +0100
Subject: [PATCH] Code review

---
 components/address-input.jsx              |  2 +-
 components/sender-address-table.jsx       |  4 ++--
 src/SenderAddress.php                     | 16 ++++++++++++++
 src/SenderAddressFactory.php              | 26 -----------------------
 src/ShippingMethodRenderSettingsTrait.php |  9 ++++++--
 5 files changed, 26 insertions(+), 31 deletions(-)
 delete mode 100644 src/SenderAddressFactory.php

diff --git a/components/address-input.jsx b/components/address-input.jsx
index 392eda2..bf72f93 100644
--- a/components/address-input.jsx
+++ b/components/address-input.jsx
@@ -54,7 +54,7 @@ export default class AddressInput extends React.Component {
     }
 
     /**
-     * @param event
+     * @param {React.ChangeEvent<HTMLInputElement>} event
      */
     handleChange(event) {
         let state = this.state;
diff --git a/components/sender-address-table.jsx b/components/sender-address-table.jsx
index 81e9cb8..59be9f8 100644
--- a/components/sender-address-table.jsx
+++ b/components/sender-address-table.jsx
@@ -30,7 +30,7 @@ export default class SenderAddressTable extends React.Component {
     }
 
     /**
-     * @param event
+     * @param {MouseEvent} event
      */
     handleClickAdd(event) {
         event.preventDefault();
@@ -51,7 +51,7 @@ export default class SenderAddressTable extends React.Component {
     }
 
     /**
-     * @param event
+     * @param {MouseEvent} event
      */
     handleClickDelete(event) {
         event.preventDefault();
diff --git a/src/SenderAddress.php b/src/SenderAddress.php
index 02e30c0..2ca5918 100644
--- a/src/SenderAddress.php
+++ b/src/SenderAddress.php
@@ -48,4 +48,20 @@ class SenderAddress extends AbstractSenderAddress {
         return $address;
     }
 
+	/**
+	 * Create addresses from settings.
+	 *
+	 * @param string $sender_address_settings JSON string.
+	 *
+	 * @return SenderAddress[]
+	 */
+	public static function create_sender_addresses_from_settings( $sender_address_settings ) {
+		$sender_addresses = [];
+		foreach ( json_decode( $sender_address_settings, true ) as $box_setting ) {
+			$sender_addresses[] = SenderAddress::create_from_array( $box_setting );
+		}
+
+		return $sender_addresses;
+	}
+
 }
diff --git a/src/SenderAddressFactory.php b/src/SenderAddressFactory.php
deleted file mode 100644
index c4e3e14..0000000
--- a/src/SenderAddressFactory.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-
-namespace WpDesk\WooCommerce\ShippingMethod\Fields\SenderAddress;
-
-use WpDesk\WooCommerce\ShippingMethod\SenderAddress;
-
-class SenderAddressFactory {
-
-    /**
-     * Create addresses from settings.
-     *
-     * @param string $sender_address_settings
-     *
-     * @return SenderAddress[]
-     */
-    public static function create_sender_addresses_from_settings( $sender_address_settings ) {
-	    $sender_addresses = [];
-	    foreach ( json_decode( $sender_address_settings, true ) as $box_setting ) {
-		    $sender_addresses[] = SenderAddress::create_from_array( $box_setting );
-	    }
-
-	    return $sender_addresses;
-    }
-
-}
diff --git a/src/ShippingMethodRenderSettingsTrait.php b/src/ShippingMethodRenderSettingsTrait.php
index 35f80af..b6ea3ae 100644
--- a/src/ShippingMethodRenderSettingsTrait.php
+++ b/src/ShippingMethodRenderSettingsTrait.php
@@ -9,6 +9,7 @@ namespace WpDesk\WooCommerce\ShippingMethod\Fields\SenderAddress;
 
 /**
  * Can render settings html.
+ * For use in shipping method when sender_addresses field is used in shipping method settings.
  */
 trait ShippingMethodRenderSettingsTrait {
 
@@ -19,7 +20,9 @@ trait ShippingMethodRenderSettingsTrait {
 	 * @return string
 	 */
 	public function get_field_key( $key ) {
-		return $this->plugin_id . $this->id . '_' . $key;
+		/** @var \WC_Shipping_Method $shipping_method */
+		$shipping_method = $this;
+		return $shipping_method->plugin_id . $shipping_method->id . '_' . $key;
 	}
 
 	/**
@@ -59,7 +62,9 @@ trait ShippingMethodRenderSettingsTrait {
 	 * @return string
 	 */
 	public function generate_sender_addresses_html( $key, $data ) {
-		$data['value'] = $this->get_option( $key );
+		/** @var \WC_Shipping_Method $shipping_method */
+		$shipping_method = $this;
+		$data['value'] = $shipping_method->get_option( $key );
 		$data = $this->get_field_params( $key, $data );
 		$settings_field = new SettingsField( $data['field_key'] );
 		ob_start();
-- 
GitLab