diff --git a/app/components/Settings/BottomScreen/Menus/Clock/Achievements.vue b/app/components/Settings/BottomScreen/Menus/Clock/Achievements.vue index 4550c02..59fdfb5 100644 --- a/app/components/Settings/BottomScreen/Menus/Clock/Achievements.vue +++ b/app/components/Settings/BottomScreen/Menus/Clock/Achievements.vue @@ -27,16 +27,17 @@ const achievementAssets = assets.images.settings.bottomScreen.clock.achievements; const { onRender, onClick } = useScreen(); -const app = useAppStore(); const store = useSettingsStore(); +const app = useAppStore(); const achievements = useAchievementsStore(); const achievementsScreen = useAchievementsScreen(); const confirmationModal = useConfirmationModal(); const isAnimating = ref(true); -const bLabel = ref($t("common.goBack")); -const aLabel = ref($t("common.select")); +const comingFromAchievements = app.previousScreen === "achievements"; +const bLabel = ref(comingFromAchievements ? $t("common.cancel") : $t("common.goBack")); +const aLabel = ref(comingFromAchievements ? $t("common.reset") : $t("common.select")); const SLIDE_OFFSET = 96; const SLIDE_DURATION = 0.25; @@ -106,6 +107,15 @@ const animateOutro = async () => { }; onMounted(() => { + if (comingFromAchievements) { + obtainedRef.value?.showInstant(); + totalRef.value?.showInstant(); + animation.offsetY = 0; + animation.opacity = 1; + animation.viewAllOffsetY = 0; + isAnimating.value = false; + return; + } animateIntro(); }); diff --git a/app/components/Settings/BottomScreen/NumberInput.vue b/app/components/Settings/BottomScreen/NumberInput.vue index cd1da7b..1dc2717 100644 --- a/app/components/Settings/BottomScreen/NumberInput.vue +++ b/app/components/Settings/BottomScreen/NumberInput.vue @@ -90,7 +90,7 @@ const isAnimating = ref(true); const animation = reactive({ offsetY: SLIDE_OFFSET, opacity: 0, - upArrowOffsetY: ARROW_IMAGE_HEIGHT, + upArrowOffsetY: +ARROW_IMAGE_HEIGHT, downArrowOffsetY: -ARROW_IMAGE_HEIGHT, }); @@ -125,7 +125,15 @@ const animateOutro = async () => { .to(animation, { opacity: 0, duration: SLIDE_DURATION, ease: "none" }, 0); }; -defineExpose({ animateIntro, animateOutro }); +const showInstant = () => { + animation.offsetY = 0; + animation.opacity = 1; + animation.upArrowOffsetY = 0; + animation.downArrowOffsetY = 0; + isAnimating.value = false; +}; + +defineExpose({ animateIntro, animateOutro, showInstant }); const increase = () => { const newValue = value.value + 1; diff --git a/app/components/Settings/TopScreen/TopScreen.vue b/app/components/Settings/TopScreen/TopScreen.vue index 5ef9f07..5681657 100644 --- a/app/components/Settings/TopScreen/TopScreen.vue +++ b/app/components/Settings/TopScreen/TopScreen.vue @@ -6,8 +6,13 @@ import StatusBar from "./StatusBar.vue"; import Notifications from "./Notifications.vue"; const store = useSettingsStore(); +const app = useAppStore(); onMounted(() => { + if (app.previousScreen === "achievements") { + store.isIntro = false; + return; + } store.animateIntro(); });