<template>
  <div>
    <q-page padding class="fit row justify-center content-center items-center">
      <div class="text-h5 row">
        Deine Sessions:
      </div>
      <div
        class="fit row justify-center content-center items-center q-gutter-sm"
      >
        <circular-progress v-if="sessionsLoading" />
        <div>tada:: {{ sessionsLoading }}</div>
        <q-card
          class="col-12"
          height=""
          v-for="(session, index) in sessions"
          :key="'session' + index"
        >
          <q-card-section
            v-if="isThisSession(session.token)"
            class="text-caption"
          >
            Diese Session.
          </q-card-section>
          <q-card-section>
            <div class="row">
              <div class="col-xs-12 col-sm-6">
                Browser:
                <q-icon :name="getBrowserIcon(session.browser)" size="24px" />
                {{ session.browser }}
              </div>
              <div class="col-xs-12 col-sm-6">
                Plattform:
                <q-icon :name="getPlatformIcon(session.platform)" size="24px" />
                {{ session.platform }}
              </div>
            </div>
            <div class="row">
              <div class="col-xs-12 col-sm-6">
                Lebenszeit:
                {{ session.lifetime }}
              </div>
              <div class="col-xs-12 col-sm-6">
                Läuft aus: {{ session.expires }}
              </div>
            </div>
          </q-card-section>
          <q-card-actions align="right">
            <q-btn
              flat
              round
              dense
              icon="mdi-delete"
              @click="deleteSession(session.token)"
            />
          </q-card-actions>
        </q-card>
      </div>
      <div class="row">
        <q-btn label="show sessions" @click="showRootGetters" />
      </div>
    </q-page>
  </div>
</template>

<script lang="ts">
import { computed, defineComponent, onBeforeMount } from '@vue/composition-api';
import CircularProgress from 'components/loading/CircularProgress.vue';
export default defineComponent({
  // name: 'PageName'
  components: { CircularProgress },
  setup(_, { root }) {
    onBeforeMount(() => {
      root.$store.dispatch('sessions/getSessions');
    });

    const sessions = computed(() => root.$store.getters['sessions/sessions']);
    function showRootGetters() {
      //ctx.root.$store.dispatch('sessions/getSessions');
      console.log(sessions.value);
    }
    function getBrowserIcon(browser: string) {
      return browser == 'firefox'
        ? 'mdi-firefox'
        : browser == 'chrome'
        ? 'mdi-google-chrome'
        : browser == 'safari'
        ? 'mdi-apple-safari'
        : 'mdi-help';
    }
    function getPlatformIcon(platform: string) {
      return platform == 'linux'
        ? 'mdi-linux'
        : platform == 'windows'
        ? 'mdi-microsoft-windows'
        : platform == 'apple'
        ? 'mdi-apple'
        : 'mdi-help';
    }

    function deleteSession(token: string) {
      root.$store.dispatch('sessions/deleteSession', token);
    }
    function isThisSession(token: string) {
      return root.$store.getters['user/token'].token == token;
    }

    const sessionsLoading = computed(() => {
      return root.$store.getters['sessions/loading'];
    });

    return {
      showRootGetters,
      sessions,
      getBrowserIcon,
      getPlatformIcon,
      isThisSession,
      deleteSession,
      sessionsLoading
    };
  }
});
</script>