Ramble-FE / utils / cookieStorage.native.ts
cookieStorage.native.ts
Raw
import CookieManager from '@react-native-cookies/cookies';
import Constants from 'expo-constants';

const webUrl = Constants.expoConfig?.extra?.apiBaseUrl as string;

export const cookieStorage = {
    async setRefreshToken(refreshToken: string) {
        try {
            await CookieManager.setFromResponse(webUrl, refreshToken);
        } catch {
            throw new Error('Failed to store refresh token in cookies');
        }
    },

    async getRefreshToken(): Promise<string | null> {
        try {
            const cookies = await CookieManager.get(webUrl);                
            return cookies.refresh?.value ?? null;
        } catch (error) {
            console.error('Failed to get refresh token:', error);
            return null;
        }
    },

    async removeRefreshToken() {
        try {
            // Android에서 clearByName()이 지원되지 않아 clearAll() 사용 (임시)
            // TODO: 쿠키 삭제 처리 개선
            await CookieManager.clearAll();
        } catch (error) {
            console.error('Failed to remove refresh token:', error);
        }
    },
};