1+ import Cookies from "js-cookie" ;
2+
13const ACCESS_TOKEN = "accessToken" ;
24const REFRESH_TOKEN = "refreshToken" ;
35const SHOP_NAME = "shopName" ;
46const ADMIN_CODE = "adminCode" ;
57const STATUS = "status" ;
68const THEME_ID = "themeId" ;
79const ACCESS_TOKEN_EXPIRES_IN = "accessTokenExpiresIn" ;
8-
910interface LoginInfo {
1011 accessToken : string ;
1112 shopName : string ;
@@ -14,35 +15,45 @@ interface LoginInfo {
1415 refreshToken : string ;
1516}
1617
17- const setStorage = ( storage : Storage , key : string , value : any ) => {
18+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19+ export const setLocalStorage = ( key : string , value : any ) => {
1820 if ( typeof window !== "undefined" ) {
19- if ( ! storage ) return ;
21+ const storage = window . localStorage ;
22+ if ( ! storage ) {
23+ return ;
24+ }
2025 switch ( typeof value ) {
21- case `string` :
26+ case `string` : {
2227 try {
2328 const stringifiedValue = JSON . stringify ( value ) ;
2429 storage . setItem ( key , stringifiedValue ) ;
2530 } catch ( e ) {
26- console . error ( `Failed to stringify value for key: ${ key } ` ) ;
31+ console . error ( `failed to stringify` ) ;
2732 }
2833 break ;
34+ }
2935 default :
3036 storage . setItem ( key , value ) ;
3137 }
3238 }
3339} ;
3440
35- const getStorage = ( storage : Storage , key : string , defaultValue = null ) => {
41+ export const getLocalStorage = ( key : string , defaultValue = null ) => {
3642 if ( typeof window !== "undefined" ) {
37- if ( ! storage ) return null ;
43+ const storage = window . localStorage ;
44+ if ( ! storage ) {
45+ return null ;
46+ }
3847 return storage . getItem ( key ) ?? defaultValue ;
3948 }
40- return null ;
4149} ;
4250
43- const removeStorageItem = ( storage : Storage , key : string ) => {
51+ export const removeLocalStorageItem = ( key : string ) => {
4452 if ( typeof window !== "undefined" ) {
45- if ( ! storage ) return ;
53+ const storage = window . localStorage ;
54+ if ( ! storage ) {
55+ return ;
56+ }
4657 storage . removeItem ( key ) ;
4758 }
4859} ;
@@ -56,59 +67,48 @@ export const setLoginInfo = (loginInfo: LoginInfo) => {
5667 accessTokenExpiresIn,
5768 } = loginInfo ;
5869
59- const sessionStorage = window . sessionStorage ;
60- setStorage ( sessionStorage , ACCESS_TOKEN , accessToken ) ;
61- setStorage ( sessionStorage , REFRESH_TOKEN , refreshToken ) ;
62- setStorage ( sessionStorage , SHOP_NAME , shopName ?. replaceAll ( `"` , "" ) ) ;
63- setStorage ( sessionStorage , ADMIN_CODE , adminCode ?. replaceAll ( `"` , "" ) ) ;
64- setStorage ( sessionStorage , ACCESS_TOKEN_EXPIRES_IN , accessTokenExpiresIn ) ;
65- } ;
66-
67- export const getLoginInfo = ( ) : LoginInfo => {
68- const sessionStorage = window . sessionStorage ;
69- return {
70- accessToken : getStorage ( sessionStorage , ACCESS_TOKEN ) || "" ,
71- refreshToken : getStorage ( sessionStorage , REFRESH_TOKEN ) || "" ,
72- shopName : getStorage ( sessionStorage , SHOP_NAME ) || "" ,
73- adminCode : getStorage ( sessionStorage , ADMIN_CODE ) || "" ,
74- accessTokenExpiresIn :
75- Number ( getStorage ( sessionStorage , ACCESS_TOKEN_EXPIRES_IN ) ) || 0 ,
76- } ;
77- } ;
78-
79- export const removeLoginInfo = ( ) => {
80- const sessionStorage = window . sessionStorage ;
81- removeStorageItem ( sessionStorage , ACCESS_TOKEN ) ;
82- removeStorageItem ( sessionStorage , REFRESH_TOKEN ) ;
83- removeStorageItem ( sessionStorage , SHOP_NAME ) ;
84- removeStorageItem ( sessionStorage , ADMIN_CODE ) ;
85- removeStorageItem ( sessionStorage , ACCESS_TOKEN_EXPIRES_IN ) ;
70+ setLocalStorage ( ACCESS_TOKEN , accessToken ) ;
71+ Cookies . set ( REFRESH_TOKEN , refreshToken , {
72+ secure : true ,
73+ sameSite : "Strict" ,
74+ expires : 7 ,
75+ } ) ;
76+ setLocalStorage ( SHOP_NAME , shopName ?. replaceAll ( `"` , "" ) ) ;
77+ setLocalStorage ( ADMIN_CODE , adminCode ?. replaceAll ( `"` , "" ) ) ;
78+ setLocalStorage ( ACCESS_TOKEN_EXPIRES_IN , accessTokenExpiresIn ) ;
8679} ;
8780
8881export const setStatus = ( status : string ) => {
89- setStorage ( window . localStorage , STATUS , status ) ;
82+ setLocalStorage ( STATUS , status ) ;
9083} ;
9184
9285export const setSelectedThemeId = ( themeId : number ) => {
93- setStorage ( window . localStorage , THEME_ID , themeId ) ;
86+ setLocalStorage ( THEME_ID , themeId ) ;
9487} ;
9588
96- export const getStatus = ( ) => getStorage ( window . localStorage , STATUS ) ;
97-
98- export const getSelectedThemeId = ( ) =>
99- getStorage ( window . localStorage , THEME_ID ) ;
89+ export const getLoginInfo = ( ) : LoginInfo => {
90+ return {
91+ accessToken : getLocalStorage ( ACCESS_TOKEN ) || "" ,
92+ refreshToken : Cookies . get ( REFRESH_TOKEN ) || "" ,
93+ shopName : getLocalStorage ( SHOP_NAME ) || "" ,
94+ adminCode : getLocalStorage ( ADMIN_CODE ) || "" ,
95+ accessTokenExpiresIn : Number ( getLocalStorage ( ACCESS_TOKEN_EXPIRES_IN ) ) || 0 ,
96+ } ;
97+ } ;
98+ export const getStatus = ( ) => getLocalStorage ( STATUS ) ;
99+ export const getSelectedThemeId = ( ) => getLocalStorage ( THEME_ID ) ;
100100
101101export const removeAccessToken = ( ) => {
102- removeStorageItem ( window . sessionStorage , ACCESS_TOKEN ) ;
102+ removeLocalStorageItem ( ACCESS_TOKEN ) ;
103103} ;
104104
105105export const removeThemeId = ( ) => {
106- removeStorageItem ( window . localStorage , THEME_ID ) ;
106+ removeLocalStorageItem ( THEME_ID ) ;
107107} ;
108108
109109export const removeLocalStorageAll = ( ) => {
110110 if ( typeof window !== "undefined" ) {
111111 window . localStorage . clear ( ) ;
112- window . sessionStorage . clear ( ) ;
112+ Cookies . remove ( REFRESH_TOKEN ) ;
113113 }
114114} ;
0 commit comments