diff --git a/src/components.d.ts b/src/components.d.ts index eb307a6..1bf5fd8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,6 +18,7 @@ declare module 'vue' { VoAuthGithub: typeof import('./components/auth/VoAuthGithub.vue')['default'] VoAuthListItem: typeof import('./components/auth/VoAuthListItem.vue')['default'] VoAuthLogoutNavItem: typeof import('./components/auth/VoAuthLogoutNavItem.vue')['default'] + VoAuthOpenCollective: typeof import('./components/auth/VoAuthOpenCollective.vue')['default'] VoAuthShopify: typeof import('./components/auth/VoAuthShopify.vue')['default'] VoBtn: typeof import('./components/app/VoBtn.vue')['default'] VoCard: typeof import('./components/app/VoCard.vue')['default'] @@ -59,6 +60,7 @@ declare module 'vue' { VoSponsorshipsTimelineItemDiscord: typeof import('./components/sponsorships/VoSponsorshipsTimelineItemDiscord.vue')['default'] VoSponsorshipsTimelineItemGithub: typeof import('./components/sponsorships/VoSponsorshipsTimelineItemGithub.vue')['default'] VoSponsorshipsTimelineItemOne: typeof import('./components/sponsorships/VoSponsorshipsTimelineItemOne.vue')['default'] + VoSponsorshipsTimelineItemOpencollective: typeof import('./components/sponsorships/VoSponsorshipsTimelineItemOpencollective.vue')['default'] VoSpot: typeof import('./components/spots/VoSpot.vue')['default'] VoSubscriptionDialog: typeof import('./components/subscription/VoSubscriptionDialog.vue')['default'] VoSubscriptionInvoices: typeof import('./components/subscription/VoSubscriptionInvoices.vue')['default'] diff --git a/src/components/auth/VoAuthCard.vue b/src/components/auth/VoAuthCard.vue index 7108cde..eb60a4f 100644 --- a/src/components/auth/VoAuthCard.vue +++ b/src/components/auth/VoAuthCard.vue @@ -33,11 +33,13 @@ - + + + - diff --git a/src/components/auth/VoAuthListItem.vue b/src/components/auth/VoAuthListItem.vue index c1bef5b..b88426e 100644 --- a/src/components/auth/VoAuthListItem.vue +++ b/src/components/auth/VoAuthListItem.vue @@ -46,6 +46,8 @@ + + @@ -54,7 +56,7 @@ diff --git a/src/components/sponsorships/VoSponsorshipsTimeline.vue b/src/components/sponsorships/VoSponsorshipsTimeline.vue index 7223ea5..2908012 100644 --- a/src/components/sponsorships/VoSponsorshipsTimeline.vue +++ b/src/components/sponsorships/VoSponsorshipsTimeline.vue @@ -11,9 +11,11 @@ + + diff --git a/src/components/sponsorships/VoSponsorshipsTimelineItem.vue b/src/components/sponsorships/VoSponsorshipsTimelineItem.vue index c73a506..3e804ce 100644 --- a/src/components/sponsorships/VoSponsorshipsTimelineItem.vue +++ b/src/components/sponsorships/VoSponsorshipsTimelineItem.vue @@ -52,7 +52,7 @@ diff --git a/src/components/sponsorships/VoSponsorshipsTimelineItemOpencollective.vue b/src/components/sponsorships/VoSponsorshipsTimelineItemOpencollective.vue new file mode 100644 index 0000000..121fa10 --- /dev/null +++ b/src/components/sponsorships/VoSponsorshipsTimelineItemOpencollective.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/stores/auth.ts b/src/stores/auth.ts index 97598f8..008916d 100644 --- a/src/stores/auth.ts +++ b/src/stores/auth.ts @@ -42,7 +42,7 @@ export interface AuthState { isLoading: ShallowRef verify: (force?: boolean) => Promise findIdentity: (provider: string) => VOneIdentity | undefined - login: (provider?: 'github' | 'discord' | 'shopify') => Promise + login: (provider?: 'github' | 'discord' | 'shopify' | 'opencollective') => Promise logout: (identity?: string) => Promise lastLoginProvider: () => string | null sync: () => Promise @@ -141,7 +141,7 @@ export const useAuthStore = defineStore('auth', (): AuthState => { verify.promise = null as Promise | null - async function login (provider: 'github' | 'discord' | 'shopify' = 'github') { + async function login (provider: 'github' | 'discord' | 'shopify' | 'opencollective' = 'github') { isLoading.value = true const redirectUrl = `${http.url}/auth/${provider}/redirect` diff --git a/src/stores/one.ts b/src/stores/one.ts index 0d5367c..9b99e0f 100644 --- a/src/stores/one.ts +++ b/src/stores/one.ts @@ -52,6 +52,7 @@ interface OneState { github: ComputedRef discord: ComputedRef shopify: ComputedRef + opencollective: ComputedRef one: ComputedRef activate: () => Promise @@ -107,6 +108,9 @@ export const useOneStore = defineStore('one', (): OneState => { const discord = computed(() => { return auth.user?.sponsorships.find(s => s.platform === 'discord' && s.isActive) }) + const opencollective = computed(() => { + return auth.user?.sponsorships.find(s => s.platform === 'opencollective' && s.isActive) + }) const shopify = computed(() => { return auth.user?.identities.find(i => i.provider === 'shopify') }) @@ -259,6 +263,7 @@ export const useOneStore = defineStore('one', (): OneState => { isOpen, isSubscriber, + opencollective, github, discord, shopify,