class JokeService { constructor(categories = ['programming', 'coding', 'development'], lang = 'en') { this.categories = Array.isArray(categories) ? categories : [categories]; this.lang = lang; this.apiBaseUrl = 'https://v2.jokeapi.dev/joke/' } setCategory(category) { this.categories = Array.isArray(category) ? category : [category]; } tell() { let service = this; axios.get( service.apiBaseUrl + service.categories.join(',') + '?lang=' + service.lang ).then((response) => { if (response.data.error === false) { service.show(response.data); } }).catch((error) => { console.error(error); }); } show(joke) { if (joke.type === 'twopart') { setTimeout(() => { showNotification(joke.delivery) }, 4000); showNotification(joke.setup); } else { showNotification(joke.joke); } } } function showNotification(text) { if (Notification.permission === 'granted') { new Notification('', { body: text }); } else { console.warn('Notifications sind nicht erlaubt.') } }