Skip to content

Commit 601646e

Browse files
committed
Refactoring
1 parent fb69cfe commit 601646e

3 files changed

Lines changed: 258 additions & 222 deletions

File tree

projects/packages/connection/src/connectors/class-wpcom-connector.php

Lines changed: 59 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static function register_connector( $registry ) {
7979
public static function enqueue_script_module() {
8080
$screen = get_current_screen();
8181

82-
if ( ! $screen || 'options-connectors' !== $screen->id ) {
82+
if ( ! $screen || ! static::is_connectors_screen( $screen ) ) {
8383
return;
8484
}
8585

@@ -162,46 +162,22 @@ private static function get_current_user_data( $manager ) {
162162
return null;
163163
}
164164

165-
$user = get_userdata( $user_id );
166-
$wpcom_user_data = $manager->get_connected_user_data( $user_id );
165+
$user = get_userdata( $user_id );
166+
$user_info = static::resolve_user_fields( $user, $manager->get_connected_user_data( $user_id ) );
167+
$is_owner = $manager->is_connection_owner( $user_id );
167168

168-
$display_name = $user ? $user->display_name : '';
169-
$login = $user ? $user->user_login : '';
170-
$email = $user ? $user->user_email : '';
171-
172-
if ( is_array( $wpcom_user_data ) ) {
173-
if ( ! empty( $wpcom_user_data['display_name'] ) ) {
174-
$display_name = $wpcom_user_data['display_name'];
175-
}
176-
if ( ! empty( $wpcom_user_data['login'] ) ) {
177-
$login = $wpcom_user_data['login'];
178-
}
179-
if ( ! empty( $wpcom_user_data['email'] ) ) {
180-
$email = $wpcom_user_data['email'];
181-
}
182-
}
183-
184-
$is_owner = $manager->is_connection_owner( $user_id );
185169
$has_other_connected_users = false;
186-
187170
if ( $is_owner ) {
188171
$connected_users = $manager->get_connected_users( 'any', 2 );
189172
$has_other_connected_users = count( $connected_users ) > 1;
190173
}
191174

192-
return array(
193-
'displayName' => $display_name,
194-
'login' => $login,
195-
'email' => $email,
196-
'isOwner' => $is_owner,
197-
'hasOtherConnectedUsers' => $has_other_connected_users,
198-
'avatar' => get_avatar_url(
199-
$user_id,
200-
array(
201-
'size' => 48,
202-
'default' => 'mysteryman',
203-
)
204-
),
175+
return array_merge(
176+
$user_info,
177+
array(
178+
'isOwner' => $is_owner,
179+
'hasOtherConnectedUsers' => $has_other_connected_users,
180+
)
205181
);
206182
}
207183

@@ -218,10 +194,27 @@ private static function get_connection_owner_data( $manager ) {
218194
return null;
219195
}
220196

221-
$wpcom_user_data = $manager->get_connected_user_data( $owner->ID );
197+
$fields = static::resolve_user_fields( $owner, $manager->get_connected_user_data( $owner->ID ) );
222198

223-
$display_name = $owner->display_name;
224-
$login = $owner->user_login;
199+
$fields['localLogin'] = $owner->user_login;
200+
201+
return $fields;
202+
}
203+
204+
/**
205+
* Merge local WP user fields with WordPress.com user data.
206+
*
207+
* WPCOM values take precedence when available. Returns the common
208+
* user shape used by both currentUser and connectionOwner.
209+
*
210+
* @param \WP_User|false $wp_user Local WordPress user object (false if unavailable).
211+
* @param array|false $wpcom_user_data WPCOM user data from the connection manager.
212+
* @return array User data with displayName, login, email, and avatar.
213+
*/
214+
private static function resolve_user_fields( $wp_user, $wpcom_user_data ) {
215+
$display_name = $wp_user ? $wp_user->display_name : '';
216+
$login = $wp_user ? $wp_user->user_login : '';
217+
$email = $wp_user ? $wp_user->user_email : '';
225218

226219
if ( is_array( $wpcom_user_data ) ) {
227220
if ( ! empty( $wpcom_user_data['display_name'] ) ) {
@@ -230,21 +223,43 @@ private static function get_connection_owner_data( $manager ) {
230223
if ( ! empty( $wpcom_user_data['login'] ) ) {
231224
$login = $wpcom_user_data['login'];
232225
}
226+
if ( ! empty( $wpcom_user_data['email'] ) ) {
227+
$email = $wpcom_user_data['email'];
228+
}
233229
}
234230

231+
$user_id = $wp_user ? $wp_user->ID : 0;
232+
235233
return array(
236234
'displayName' => $display_name,
237235
'login' => $login,
238-
'avatar' => get_avatar_url(
239-
$owner->ID,
240-
array(
241-
'size' => 48,
242-
'default' => 'mysteryman',
236+
'email' => $email,
237+
'avatar' => $user_id
238+
? get_avatar_url(
239+
$user_id,
240+
array(
241+
'size' => 48,
242+
'default' => 'mysteryman',
243+
)
243244
)
244-
),
245+
: '',
245246
);
246247
}
247248

249+
/**
250+
* Check whether the given screen is the Connectors settings page.
251+
*
252+
* Handles both WP 7.0 core (`options-connectors`) and the Gutenberg
253+
* plugin (`settings_page_options-connectors-wp-admin`).
254+
*
255+
* @param \WP_Screen $screen Current admin screen.
256+
* @return bool
257+
*/
258+
private static function is_connectors_screen( $screen ) {
259+
return 'options-connectors' === $screen->id
260+
|| 'settings_page_options-connectors-wp-admin' === $screen->id;
261+
}
262+
248263
/**
249264
* Return the admin-relative path for the Connectors page.
250265
*
@@ -292,7 +307,7 @@ private static function get_connected_plugins_data( $manager ) {
292307
$result = array();
293308

294309
foreach ( $plugins as $slug => $plugin_data ) {
295-
$name = isset( $plugin_data['name'] ) ? $plugin_data['name'] : $slug;
310+
$name = $plugin_data['name'] ?? $slug;
296311

297312
$entry = array(
298313
'name' => $name,

projects/packages/connection/src/connectors/css/connectors-card.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
margin: 0;
7575
}
7676

77-
.wpcom-connector__details-link:focus:not(:focus-visible) {
77+
.wpcom-connector__details-link:focus:not(:active) {
7878
box-shadow: none;
7979
outline: none;
8080
}

0 commit comments

Comments
 (0)