storipress/karbon

View on GitHub
packages/karbon/src/runtime/plugins/paywall-noop.client.ts

Summary

Maintainability
A
3 hrs
Test Coverage
import { useStorage } from '@vueuse/core'
import { computed, defineNuxtPlugin, ref } from '#imports'

export enum ArticlePlan {
  Free = 'free',
  Member = 'member',
  Subscriber = 'subscriber',
}

export interface Article {
  id: string
  plan: ArticlePlan
}

export default defineNuxtPlugin(() => {
  const paywall = ref(null)
  const token = useStorage('storipress-token', '')
  const authInfo = ref<Record<string, any> | null | undefined>(null)

  return {
    provide: {
      paywall: {
        paywall,
        authInfo: computed<Record<string, any> | undefined | null>({
          get() {
            if (authInfo.value) {
              return authInfo.value
            }
            if (token.value) {
              return { token: token.value }
            }
            return null
          },
          set(val) {
            authInfo.value = val
          },
        }),
        mount() {},
        enable() {},
        signUp(_email: string) {},
        checkQuery() {},
        setArticle(_article: Article) {},
        reload() {},
        disable() {},
      },
    },
  }
})