Skip to content

LinkedIn reconnect can lose popup data when the parent dashboard reloads #1099

Description

@pirate-bot

Summary

During LinkedIn reconnection, the authorization popup can report Parent window is closed or refreshed, can not transfer data and fail to return the account data to Revive Social. The expected behavior is for the parent dashboard to remain available until account transfer and persistence complete. The reported behavior blocks LinkedIn account reconnection.

Customer context

Product / area: Revive Social, LinkedIn popup authorization
Version: Revive Social 9.4.0; Pro Add-on 3.3.3
Environment: WordPress 7.0.2; PHP 8.2
Integration / third party: LinkedIn OAuth through the Revive Social authorization application
Reported error / symptom: Parent window is closed or refreshed, can not transfer data.
Impact: LinkedIn account data is not transferred and the account cannot be reconnected.

Reproduction notes

  1. In Revive Social 9.4.0 with Pro Add-on 3.3.3, open Dashboard > Accounts > LinkedIn.
  2. Select Sign in to LinkedIn and complete or retry authorization.
  3. Reported result: the popup displays Parent window is closed or refreshed, can not transfer data and the account is not reconnected.

The customer reproduced the symptom. The lifecycle race is established from source and history, but the external authorization application was not available for an end-to-end runtime reproduction.

Diagnosis

Conclusion

The parent dashboard starts LinkedIn account persistence without awaiting it, then reloads unconditionally after receiving an authorization-window message. This creates a confirmed lifecycle race that can invalidate the popup opener or abort persistence, matching the reported inability to transfer data. The exact error text is emitted outside the inspected repositories, so its server-side trigger was not directly inspected.

Where this likely occurs

  • vue/src/vue-elements/sign-in-btn.vueaddAccountLI() lines 772–783 starts the account REST dispatch but does not return its promise.
  • vue/src/vue-elements/sign-in-btn.vuegetChildWindowMessage() lines 889–928 invokes addAccountLI() without awaiting completion, performs telemetry work, and reloads the parent at line 928 regardless of the account request state.
  • vue/src/vue-elements/sign-in-btn.vueopenPopupLI() approx. lines 962–972 opens the external LinkedIn authorization window and registers the parent message listener.
  • includes/admin/class-rop-rest-api.phpRop_Rest_Api::add_account_li() lines 1189–1227 is the persistence endpoint whose request can still be in flight when the dashboard reloads.
  • Git commit 1890b6d5 (feat: add telemetry, 2024-05-14) moved reload behavior from each account request's completion handler to the unconditional end of getChildWindowMessage(). The preceding commit 0f07156e reloaded only in the completed request handler. The current behavior is present in tag v9.4.0.

Engineering notes

The message handler is shared by multiple social-network popups, although only LinkedIn was reported and inspected here. The Pro add-on enables LinkedIn in includes/admin/class-rop-pro-admin.phpRop_Pro_Admin::available_services() lines 68–95; popup lifecycle and account persistence remain in the Lite repository. The external app.revive.social/li_auth source is unavailable, and the literal message does not occur in either local repository. A prior support case recorded the same popup message for Facebook, which is consistent with the shared handler but does not establish broader runtime scope.

Test coverage status

No relevant coverage was found during inspection for openPopupLI(), getChildWindowMessage(), account-request completion before reload, popup opener lifetime, or malformed popup messages. tests/e2e/specs/dashboard/accounts.spec.js line 18 checks LinkedIn button visibility only. No Pro behavioral test covers this shared authorization flow.

What to verify or explore next

  • May be worth reproducing LinkedIn authorization while throttling the account REST request and observing parent navigation, popup opener state, and whether persistence completes.
  • May be worth verifying whether the external authorization window sends more than one message during success and error flows.
  • May be worth checking the shared popup flow for the other services routed through getChildWindowMessage() to establish regression scope.
  • The account dashboard E2E suite is the relevant browser-level verification surface.

Unknowns / follow-up

The external authorization application's source and runtime logs were unavailable. Browser type, popup-blocking state, network timing, and the exact point at which the external page emitted the reported message are unknown.

Confidence

Confidence: 91/100

Two independently testable LinkedIn authorization defects are supported by repository inspection and the staff-confirmed ticket symptom. The X credit failure was excluded because code and prior cases show Revive Social relays an upstream credit-depletion response rather than causing it.


Source: HelpScout #3396932665
Generated by bug-report-triage (ID: bug-report-triage_6a639a27a22a63.23975204)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions