|
|
@@ -16,8 +16,14 @@ Administration de la connexion Opentalent / HelloAsso
|
|
|
|
|
|
<v-row>
|
|
|
<v-col cols="12" class="d-flex justify-center align-center w-100 mt-6">
|
|
|
+ <v-progress-circular
|
|
|
+ v-if="statusHelloAssoProfile === FETCHING_STATUS.PENDING"
|
|
|
+ indeterminate
|
|
|
+ size="32"
|
|
|
+ />
|
|
|
+
|
|
|
<UiButtonHelloAssoConnect
|
|
|
- v-if="!helloAssoProfile || !helloAssoProfile.token"
|
|
|
+ v-else-if="!helloAssoProfile || !helloAssoProfile.token"
|
|
|
@click="onHelloAssoConnectClicked"
|
|
|
/>
|
|
|
|
|
|
@@ -34,10 +40,11 @@ Administration de la connexion Opentalent / HelloAsso
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import AuthUrl from '~/models/ApiResources/HelloAsso/AuthUrl'
|
|
|
-import HelloAssoProfile from '~/models/ApiResources/HelloAsso/HelloAssoProfile'
|
|
|
+import AuthUrl from '~/models/HelloAsso/AuthUrl'
|
|
|
+import HelloAssoProfile from '~/models/HelloAsso/HelloAssoProfile'
|
|
|
import { useEntityManager } from '~/composables/data/useEntityManager'
|
|
|
import { useEntityFetch } from '~/composables/data/useEntityFetch'
|
|
|
+import { FETCHING_STATUS } from '~/types/enum/data'
|
|
|
|
|
|
const { em } = useEntityManager()
|
|
|
|
|
|
@@ -74,13 +81,28 @@ onMounted(() => {
|
|
|
|
|
|
const { fetch } = useEntityFetch()
|
|
|
|
|
|
-const { data: helloAssoProfile, refresh: refreshHelloAsso } = await fetch(HelloAssoProfile)
|
|
|
+const {
|
|
|
+ status: statusHelloAssoProfile,
|
|
|
+ refresh: refreshHelloAssoProfile,
|
|
|
+} = await fetch(HelloAssoProfile)
|
|
|
+
|
|
|
+const helloAssoProfile: ComputedRef<HelloAssoProfile | null> = computed(() => {
|
|
|
+ if (statusHelloAssoProfile.value !== FETCHING_STATUS.SUCCESS) {
|
|
|
+ return null
|
|
|
+ }
|
|
|
+ return em.find(HelloAssoProfile, 1)
|
|
|
+})
|
|
|
|
|
|
const onHelloAssoConnected = async () => {
|
|
|
- console.log('Helloasso connected')
|
|
|
- await refreshHelloAsso()
|
|
|
-}
|
|
|
+ // On attend 200ms pour laisser en attente du message SSE
|
|
|
+ await new Promise(r => setTimeout(r, 200))
|
|
|
|
|
|
+ if (!helloAssoProfile.value || !helloAssoProfile.value.token) {
|
|
|
+ // Fallback en cas de défaut de fonctionnement du SSE
|
|
|
+ console.log('Helloasso connected (fallback SSE)')
|
|
|
+ await refreshHelloAssoProfile()
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|