PluginProbe
HubSpot All-In-One Marketing – Forms, Popups, Live Chat / 11.3.75
HubSpot All-In-One Marketing – Forms, Popups, Live Chat v11.3.75
11.3.75 11.3.73 11.3.71 11.3.70 11.3.69 11.3.64 11.3.65 11.3.62 11.3.61 11.3.56 11.3.58 11.0.31 11.0.52 11.0.54 11.0.56 11.0.58 11.0.7 11.1.10 11.1.11 11.1.13 11.1.14 11.1.15 11.1.2 11.1.20 11.1.21 All 73 releases
← All changes | scripts/api/wordpressApiClient.ts +39 -8 11.3.5811.3.75 View file →
@@ -92,15 +92,46 @@
92 92 export function toggleProxyMappingsEnabled(value: boolean) {
93 93 return makeRequest('put', '/wp-mappings-proxy-enabled', value);
94 94 }
95 95
96 -let refreshTokenRequest: Promise<any> | null = null;
96 +const ACCESS_TOKEN_CACHE_KEY = 'leadin_access_token';
97 +const ACCESS_TOKEN_MIN_TTL_SECONDS = 300;
97 98
98 -export function fetchRefreshToken() {
99 - if (!refreshTokenRequest) {
100 - refreshTokenRequest = makeRequest('get', '/refresh-token').catch(err => {
101 - refreshTokenRequest = null;
102 - throw err;
103 - });
99 +let accessTokenRequest: Promise<any> | null = null;
100 +
101 +export function fetchAccessToken() {
102 + try {
103 + const cached = sessionStorage.getItem(ACCESS_TOKEN_CACHE_KEY);
104 + if (cached) {
105 + const { accessToken, expiresAt } = JSON.parse(cached);
106 + if (
107 + accessToken &&
108 + expiresAt > Math.floor(Date.now() / 1000) + ACCESS_TOKEN_MIN_TTL_SECONDS
109 + ) {
110 + return Promise.resolve({
111 + accessToken,
112 + expiresIn: expiresAt - Math.floor(Date.now() / 1000),
113 + });
114 + }
115 + }
116 + } catch (_) {}
117 +
118 + if (!accessTokenRequest) {
119 + accessTokenRequest = makeRequest('get', '/access-token')
120 + .then((response: { accessToken: string; expiresIn: number }) => {
121 + try {
122 + sessionStorage.setItem(
123 + ACCESS_TOKEN_CACHE_KEY,
124 + JSON.stringify({
125 + accessToken: response.accessToken,
126 + expiresAt: Math.floor(Date.now() / 1000) + response.expiresIn,
127 + })
128 + );
129 + } catch (_) {}
130 + return response;
131 + })
132 + .finally(() => {
133 + accessTokenRequest = null;
134 + });
104 135 }
105 - return refreshTokenRequest;
136 + return accessTokenRequest;
106 137 }