| | |
| | | <script lang="ts"> |
| | | import { onMount } from 'svelte' |
| | | import { Call } from '@wailsio/runtime' |
| | | import TextOutputFallbackPanel from './TextOutputFallbackPanel.svelte' |
| | | import { t } from '../../lib/i18n' |
| | | |
| | | interface PermissionStatus { |
| | |
| | | |
| | | let statuses = $state<PermissionStatus[]>([]) |
| | | let loading = $state(true) |
| | | let refreshTimeout: number | null = null |
| | | |
| | | onMount(() => { |
| | | refresh() |
| | | const timer = window.setInterval(refresh, 2500) |
| | | return () => window.clearInterval(timer) |
| | | return () => { |
| | | window.clearInterval(timer) |
| | | if (refreshTimeout !== null) { |
| | | window.clearTimeout(refreshTimeout) |
| | | refreshTimeout = null |
| | | } |
| | | } |
| | | }) |
| | | |
| | | async function refresh() { |
| | |
| | | await Call.ByName('voicesnap/services.PermissionService.OpenSettings', id) |
| | | } catch {} |
| | | } |
| | | window.setTimeout(refresh, 800) |
| | | if (refreshTimeout !== null) { |
| | | window.clearTimeout(refreshTimeout) |
| | | } |
| | | refreshTimeout = window.setTimeout(() => { |
| | | refreshTimeout = null |
| | | refresh() |
| | | }, 800) |
| | | } |
| | | |
| | | function sortStatuses(items: PermissionStatus[]) { |
| | |
| | | <button class="refresh-btn" onclick={refresh}>{t('permissions.refresh')}</button> |
| | | </div> |
| | | |
| | | <TextOutputFallbackPanel /> |
| | | |
| | | <div class="permission-list"> |
| | | {#each statuses as item} |
| | | <div class="permission-row"> |