You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.0 KiB
46 lines
1.0 KiB
class JokeService { |
|
|
|
constructor(category = 'programming') { |
|
this.category = category; |
|
this.apiBaseUrl = 'https://v2.jokeapi.dev/joke/' |
|
} |
|
|
|
setCategory(category) { |
|
this.category = category; |
|
} |
|
|
|
tell() { |
|
let service = this; |
|
axios.get( |
|
service.apiBaseUrl + service.category |
|
).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 { |
|
alert(text); |
|
} |
|
}
|
|
|