export async function getTokenOrRefresh()

in frontend/src/components/QuestionInput/token_util.ts [3:31]


export async function getTokenOrRefresh() {
    const cookie = new Cookie();
    const speechToken = cookie.get('speech-token');

    if (speechToken === undefined) {
        try {
            const res = await fetch("/api/get-speech-token", {
                method: "GET"
            });
            const response = await res.json();
            const token = response.token;
            const region = response.region;
            const speechRecognitionLanguage = response.speechRecognitionLanguage;
            const speechSynthesisLanguage = response.speechSynthesisLanguage;
            const speechSynthesisVoiceName = response.speechSynthesisVoiceName;
            cookie.set('speech-token', region + ':' + token + ':' + speechRecognitionLanguage + ':' + speechSynthesisLanguage + ':' + speechSynthesisVoiceName, {maxAge: 540, path: '/'});

            console.log('Token fetched from back-end: ' + token);
            return { authToken: token, region: region, speechRecognitionLanguage: speechRecognitionLanguage, speechSynthesisLanguage: speechSynthesisLanguage, speechSynthesisVoiceName: speechSynthesisVoiceName };
        } catch (err) {
            console.log(err);
            return { authToken: null, error: err };
        }
    } else {
        console.log('Token fetched from cookie: ' + speechToken);
        const params = speechToken.split(':');
        return { authToken: params[1], region: params[0], speechRecognitionLanguage: params[2], speechSynthesisLanguage: params[3], speechSynthesisVoiceName: params[4]  };
    }
}