import { pageLinks } from '@/helpers/constants';
import { CookiesStore, LocalStore } from '@/services/local-store';
import { BROWSER_TOKEN_KEY } from '@/services/request';

class AuthService {
    store: LocalStore;

    constructor(config: { store: LocalStore }) {
        this.store = config.store;
    }

    getToken() {
        return this.store.get(BROWSER_TOKEN_KEY);
    }

    login(access_token: string) {
        this.store.save(BROWSER_TOKEN_KEY, access_token);
    }

    clearCredentials() {
        this.store.delete(BROWSER_TOKEN_KEY);
    }

    logout() {
        this.store.delete(BROWSER_TOKEN_KEY);
        this.store.resetStore();
        window.location.replace(pageLinks.home);
    }
}

export const auth_service = new AuthService({ store: new CookiesStore() });
