import { defineStore } from 'pinia'
import { computed } from 'vue'
import { useDesktopStore } from './storeDesktop'
import { nanoid } from 'nanoid'

export const useDesktopWorkspaceStore = defineStore(
  'owd/desktop/workspace',
  () => {
    const desktopStore = useDesktopStore()

    const active = computed(() => {
      return desktopStore.state.workspace.active
    })

    const overview = computed(() => {
      return desktopStore.state.workspace.overview
    })

    const list = computed(() => {
      return desktopStore.state.workspace.list
    })

    function setupWorkspaces() {
      if (desktopStore.state.workspace.list.length === 0) {
        createWorkspace()
        desktopStore.state.workspace.active = desktopStore.state.workspace
          .list[0] as string
      }

      if (desktopStore.state.workspace.list.length === 1) {
        createWorkspace()
      }
    }

    function setOverview(value: boolean) {
      desktopStore.state.workspace.overview = value
    }

    function setWorkspace(value: string) {
      desktopStore.state.workspace.active = value
    }

    function createWorkspace() {
      desktopStore.state.workspace.list.push(nanoid(8))
    }

    const workspaceActiveIndex = computed(() => {
      return desktopStore.state.workspace.list.findIndex(
        (workspace) => workspace === desktopStore.state.workspace.active,
      )
    })

    return {
      active,
      overview,
      list,
      workspaceActiveIndex,
      setupWorkspaces,
      setOverview,
      setWorkspace,
    }
  },
)
