44 lines
935 B
TypeScript
44 lines
935 B
TypeScript
import { useI18n } from "@composables/i18n"
|
|
import { useToast } from "@composables/toast"
|
|
import { pwaNeedsRefresh, refreshAppForPWAUpdate } from "@modules/pwa"
|
|
import { watch } from "vue"
|
|
|
|
export const usePwaPrompt = function () {
|
|
const toast = useToast()
|
|
const t = useI18n()
|
|
|
|
watch(
|
|
pwaNeedsRefresh,
|
|
(value) => {
|
|
if (value) {
|
|
showUpdateToast()
|
|
}
|
|
},
|
|
{
|
|
immediate: true,
|
|
}
|
|
)
|
|
|
|
function showUpdateToast() {
|
|
toast.show(`${t("app.new_version_found")}`, {
|
|
position: "bottom-center",
|
|
duration: 0,
|
|
action: [
|
|
{
|
|
text: `${t("action.dismiss")}`,
|
|
onClick: (_, toastObject) => {
|
|
toastObject.goAway(0)
|
|
},
|
|
},
|
|
{
|
|
text: `${t("app.reload")}`,
|
|
onClick: (_, toastObject) => {
|
|
toastObject.goAway(0)
|
|
refreshAppForPWAUpdate()
|
|
},
|
|
},
|
|
],
|
|
})
|
|
}
|
|
}
|