| 
									
										
										
										
											2024-09-28 10:16:06 -05:00
										 |  |  | <template> | 
					
						
							|  |  |  |     <div | 
					
						
							|  |  |  |         v-if="wakeIsSupported" | 
					
						
							|  |  |  |         class="d-print-none d-flex px-2" | 
					
						
							|  |  |  |         :class="$vuetify.breakpoint.smAndDown ? 'justify-center' : 'justify-end'" | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |         <v-switch v-model="wakeLock" small :label="$t('recipe.screen-awake')" /> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { defineComponent, computed, onMounted, onUnmounted } from "@nuxtjs/composition-api"; | 
					
						
							|  |  |  | import { useWakeLock } from "@vueuse/core"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default defineComponent({ | 
					
						
							|  |  |  |     setup() { | 
					
						
							|  |  |  |         const { isSupported: wakeIsSupported, isActive, request, release } = useWakeLock(); | 
					
						
							|  |  |  |         const wakeLock = computed({ | 
					
						
							| 
									
										
										
										
											2024-11-15 00:26:55 -06:00
										 |  |  |             get: () => isActive.value, | 
					
						
							| 
									
										
										
										
											2024-09-28 10:16:06 -05:00
										 |  |  |             set: () => { | 
					
						
							|  |  |  |                 if (isActive.value) { | 
					
						
							|  |  |  |                     unlockScreen(); | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     lockScreen(); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |         async function lockScreen() { | 
					
						
							|  |  |  |             if (wakeIsSupported) { | 
					
						
							| 
									
										
										
										
											2024-11-15 00:26:55 -06:00
										 |  |  |                 console.debug("Wake Lock Requested"); | 
					
						
							| 
									
										
										
										
											2024-09-28 10:16:06 -05:00
										 |  |  |                 await request("screen"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         async function unlockScreen() { | 
					
						
							|  |  |  |             if (wakeIsSupported || isActive) { | 
					
						
							| 
									
										
										
										
											2024-11-15 00:26:55 -06:00
										 |  |  |                 console.debug("Wake Lock Released"); | 
					
						
							| 
									
										
										
										
											2024-09-28 10:16:06 -05:00
										 |  |  |                 await release(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         onMounted(() => lockScreen()); | 
					
						
							|  |  |  |         onUnmounted(() => unlockScreen()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             wakeLock, | 
					
						
							|  |  |  |             wakeIsSupported, | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |