Ariver
2026-07-12 24f551a39eae849d891da26cc91f90d354e3a2db
C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
@@ -1,6 +1,7 @@
<script lang="ts">
  import { onMount } from 'svelte'
  import { Call } from '@wailsio/runtime'
  import TextOutputFallbackPanel from './TextOutputFallbackPanel.svelte'
  import { t } from '../../lib/i18n'
  interface PermissionStatus {
@@ -14,11 +15,18 @@
  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() {
@@ -40,7 +48,13 @@
        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[]) {
@@ -83,6 +97,8 @@
    <button class="refresh-btn" onclick={refresh}>{t('permissions.refresh')}</button>
  </div>
  <TextOutputFallbackPanel />
  <div class="permission-list">
    {#each statuses as item}
      <div class="permission-row">