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
- In Revive Social 9.4.0 with Pro Add-on 3.3.3, open
Dashboard > Accounts > LinkedIn.
- Select
Sign in to LinkedIn and complete or retry authorization.
- 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.vue — addAccountLI() lines 772–783 starts the account REST dispatch but does not return its promise.
vue/src/vue-elements/sign-in-btn.vue — getChildWindowMessage() 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.vue — openPopupLI() approx. lines 962–972 opens the external LinkedIn authorization window and registers the parent message listener.
includes/admin/class-rop-rest-api.php — Rop_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.php — Rop_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)
Summary
During LinkedIn reconnection, the authorization popup can report
Parent window is closed or refreshed, can not transfer dataand 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
Dashboard > Accounts > LinkedIn.Sign in to LinkedInand complete or retry authorization.Parent window is closed or refreshed, can not transfer dataand 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.vue—addAccountLI()lines 772–783 starts the account REST dispatch but does not return its promise.vue/src/vue-elements/sign-in-btn.vue—getChildWindowMessage()lines 889–928 invokesaddAccountLI()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.vue—openPopupLI()approx. lines 962–972 opens the external LinkedIn authorization window and registers the parent message listener.includes/admin/class-rop-rest-api.php—Rop_Rest_Api::add_account_li()lines 1189–1227 is the persistence endpoint whose request can still be in flight when the dashboard reloads.1890b6d5(feat: add telemetry, 2024-05-14) moved reload behavior from each account request's completion handler to the unconditional end ofgetChildWindowMessage(). The preceding commit0f07156ereloaded only in the completed request handler. The current behavior is present in tagv9.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.php—Rop_Pro_Admin::available_services()lines 68–95; popup lifecycle and account persistence remain in the Lite repository. The externalapp.revive.social/li_authsource 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.jsline 18 checks LinkedIn button visibility only. No Pro behavioral test covers this shared authorization flow.What to verify or explore next
getChildWindowMessage()to establish regression scope.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)