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,