Skip to content

Commit 98078bf

Browse files
committed
[sc-11776] use library "cookie" to handle cookie
1 parent 27c7993 commit 98078bf

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

package-lock.json

Lines changed: 11 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"dependencies": {
4949
"axios": "^1.7.2",
5050
"buffer": "^6.0.3",
51+
"cookie": "^1.0.2",
5152
"es6-promise": "^4.2.8",
5253
"js-base64": "^3.6.0",
5354
"uuid": "^11.0.3"

src/cookie.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
1+
import cookie from 'cookie';
2+
13
const setCookie = (cookieName: string, cookieValue: string, expireDays: number): void => {
24
if (typeof document === 'undefined') {
35
return;
46
}
7+
58
const date = new Date();
69
date.setTime(date.getTime() + expireDays * 24 * 60 * 60 * 1000);
7-
const expires = 'expires=' + date.toUTCString();
8-
document.cookie = `${cookieName}=${cookieValue};${expires};path=/`;
10+
11+
document.cookie = cookie.serialize(cookieName, cookieValue, {
12+
expires: date,
13+
path: '/'
14+
});
915
};
1016

1117
const getCookie = (cookieName: string): string | undefined => {
1218
if (typeof document === 'undefined') {
1319
return;
1420
}
15-
const name = `${cookieName}=`;
16-
const decodedCookie = decodeURIComponent(document.cookie);
17-
const cookieArray = decodedCookie.split(';');
18-
for (let i = 0; i < cookieArray.length; i++) {
19-
let cookie = cookieArray[i];
20-
while (cookie.charAt(0) === ' ') {
21-
cookie = cookie.substring(1);
22-
}
23-
if (cookie.indexOf(name) === 0) {
24-
return cookie.substring(name.length, cookie.length);
25-
}
21+
22+
try {
23+
const cookies = cookie.parse(document.cookie);
24+
return cookies[cookieName];
25+
} catch (error) {
26+
console.debug('Error parsing cookies:', error);
27+
return undefined;
2628
}
27-
return undefined;
2829
};
2930

3031
const deleteCookie = (name: string): void => {
3132
if (typeof document === 'undefined') {
3233
return;
3334
}
34-
document.cookie = `${name}=; Path=/; Expires=Thu, 01 Jan 2000 00:00:01 GMT;`;
35+
36+
document.cookie = cookie.serialize(name, '', {
37+
expires: new Date(0),
38+
path: '/'
39+
});
3540
};
3641

3742
export { setCookie, getCookie, deleteCookie };

0 commit comments

Comments
 (0)