Skip to content

Commit 743c88e

Browse files
Set banner messages with the alert type, instead of trying to set a nullable value's title. (#934)
1 parent 2687d37 commit 743c88e

File tree

4 files changed

+56
-28
lines changed

4 files changed

+56
-28
lines changed

frontend/src/components/FTUE/ConnectCalendars.vue

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import { useI18n } from 'vue-i18n';
33
import {
44
onMounted, inject, ref, computed, watch,
55
} from 'vue';
6-
import { useFTUEStore } from '@/stores/ftue-store';
7-
import { useCalendarStore } from '@/stores/calendar-store';
86
import { storeToRefs } from 'pinia';
9-
import { callKey } from '@/keys';
10-
import { CalendarItem } from '@/models';
117
import PrimaryButton from '@/tbpro/elements/PrimaryButton.vue';
128
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
139
import SyncCard from '@/tbpro/elements/SyncCard.vue';
10+
import { useFTUEStore } from '@/stores/ftue-store';
11+
import { useCalendarStore } from '@/stores/calendar-store';
12+
import { callKey } from '@/keys';
13+
import { CalendarItem } from '@/models';
1414
1515
const { t } = useI18n();
1616
@@ -32,7 +32,10 @@ const continueTitle = computed(() => (selectedCount.value ? t('label.continue')
3232
3333
watch(selectedCount, (val) => {
3434
if (val === 0) {
35-
warningMessage.value.title = t('ftue.oneCalendarRequired');
35+
warningMessage.value = {
36+
title: t('ftue.oneCalendarRequired'),
37+
details: null,
38+
};
3639
} else {
3740
warningMessage.value = null;
3841
}
@@ -41,7 +44,10 @@ watch(selectedCount, (val) => {
4144
onMounted(async () => {
4245
isLoading.value = true;
4346
44-
infoMessage.value.title = t('ftue.connectCalendarInfo');
47+
infoMessage.value = {
48+
title: t('ftue.connectCalendarInfo'),
49+
details: null,
50+
};
4551
4652
await calendarStore.fetch(call, true);
4753
calendars.value = calendarStore.calendars.map((calendar) => ({

frontend/src/components/FTUE/ConnectVideo.vue

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<script setup lang="ts">
22
import { useI18n } from 'vue-i18n';
33
import { onMounted, inject, ref } from 'vue';
4+
import { storeToRefs } from 'pinia';
5+
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
6+
import PrimaryButton from '@/tbpro/elements/PrimaryButton.vue';
7+
import TextInput from '@/tbpro/elements/TextInput.vue';
48
import { useFTUEStore } from '@/stores/ftue-store';
59
import { useExternalConnectionsStore } from '@/stores/external-connections-store';
6-
import { storeToRefs } from 'pinia';
710
import { callKey } from '@/keys';
811
import {
912
AuthUrl, AuthUrlResponse, BooleanResponse, Error, Exception, ExceptionDetail,
1013
} from '@/models';
11-
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
12-
import PrimaryButton from '@/tbpro/elements/PrimaryButton.vue';
13-
import TextInput from '@/tbpro/elements/TextInput.vue';
1414
import { useScheduleStore } from '@/stores/schedule-store';
1515
1616
const { t } = useI18n();
@@ -45,7 +45,10 @@ onMounted(async () => {
4545
const { data, error }: BooleanResponse = await call('zoom/ftue-status').get().json();
4646
// Did they hit back?
4747
if (error?.value) {
48-
errorMessage.value.title = ((data.value as Exception)?.detail as ExceptionDetail)?.message;
48+
errorMessage.value = {
49+
title: ((data.value as Exception)?.detail as ExceptionDetail)?.message,
50+
details: null,
51+
};
4952
return;
5053
}
5154
@@ -62,7 +65,7 @@ const onSubmit = async () => {
6265
});
6366
6467
if ((data as Error)?.error) {
65-
errorMessage.value.title = (data as Error)?.message;
68+
errorMessage.value = { title: (data as Error)?.message, details: null };
6669
isLoading.value = false;
6770
return;
6871
}

frontend/src/components/FTUE/GoogleOauthProvider.vue

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
<script setup lang="ts">
22
import { useI18n } from 'vue-i18n';
33
import { onMounted, inject, ref } from 'vue';
4+
import { storeToRefs } from 'pinia';
5+
import { useRoute, useRouter } from 'vue-router';
6+
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
47
import { useFTUEStore } from '@/stores/ftue-store';
58
import { useCalendarStore } from '@/stores/calendar-store';
69
import { useUserStore } from '@/stores/user-store';
7-
import { storeToRefs } from 'pinia';
8-
import { useRoute, useRouter } from 'vue-router';
910
import { useExternalConnectionsStore } from '@/stores/external-connections-store';
1011
import { callKey } from '@/keys';
1112
import { ExternalConnectionProviders } from '@/definitions';
12-
import { BooleanResponse, Exception, ExceptionDetail } from '@/models';
13-
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
13+
import {
14+
BooleanResponse, Error, Exception, ExceptionDetail,
15+
} from '@/models';
1416
1517
const { t } = useI18n();
1618
const route = useRoute();
@@ -48,14 +50,20 @@ onMounted(async () => {
4850
if (route.query.error || noCalendarsError) {
4951
localStorage?.removeItem(initFlowKey);
5052
if (noCalendarsError) {
51-
errorMessage.value.title = t('error.externalAccountHasNoCalendars', { external: 'Google' });
53+
errorMessage.value = {
54+
title: t('error.externalAccountHasNoCalendars', { external: 'Google' }),
55+
details: null,
56+
};
5257
5358
// Also remove the google calendar
5459
if (externalConnectionStore.google.length > 0) {
5560
await externalConnectionStore.disconnect(call, ExternalConnectionProviders.Google);
5661
}
5762
} else {
58-
errorMessage.value.title = route.query.error as string;
63+
errorMessage.value = {
64+
title: route.query.error as string,
65+
details: null,
66+
};
5967
}
6068
await router.replace(route.path);
6169
}
@@ -66,7 +74,10 @@ onMounted(async () => {
6674
const { data, error }: BooleanResponse = await call('google/ftue-status').get().json();
6775
// Did they hit back?
6876
if (error?.value) {
69-
errorMessage.value.title = ((data.value as Exception)?.detail as ExceptionDetail)?.message;
77+
errorMessage.value = {
78+
title: ((data.value as Exception)?.detail as ExceptionDetail)?.message,
79+
details: null,
80+
};
7081
return;
7182
}
7283

frontend/src/components/FTUE/SetupSchedule.vue

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@ import {
33
computed, inject, onMounted, ref,
44
} from 'vue';
55
import { storeToRefs } from 'pinia';
6-
import { DateFormatStrings, DEFAULT_SLOT_DURATION, SLOT_DURATION_OPTIONS } from '@/definitions';
76
import { useI18n } from 'vue-i18n';
7+
import TextInput from '@/tbpro/elements/TextInput.vue';
8+
import SelectInput from '@/tbpro/elements/SelectInput.vue';
9+
import PrimaryButton from '@/tbpro/elements/PrimaryButton.vue';
10+
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
11+
import BubbleSelect from '@/tbpro/elements/BubbleSelect.vue';
12+
import { DateFormatStrings, DEFAULT_SLOT_DURATION, SLOT_DURATION_OPTIONS } from '@/definitions';
813
import { useFTUEStore } from '@/stores/ftue-store';
914
import { useUserStore } from '@/stores/user-store';
1015
import { useCalendarStore } from '@/stores/calendar-store';
1116
import { useScheduleStore } from '@/stores/schedule-store';
1217
import {
1318
dayjsKey, callKey, isoWeekdaysKey,
1419
} from '@/keys';
15-
import { Error, SelectOption } from '@/models';
16-
import TextInput from '@/tbpro/elements/TextInput.vue';
17-
import SelectInput from '@/tbpro/elements/SelectInput.vue';
18-
import PrimaryButton from '@/tbpro/elements/PrimaryButton.vue';
19-
import SecondaryButton from '@/tbpro/elements/SecondaryButton.vue';
20-
import BubbleSelect from '@/tbpro/elements/BubbleSelect.vue';
20+
import {
21+
Error, Exception, ExceptionDetail, SelectOption,
22+
} from '@/models';
2123
2224
const { t } = useI18n();
2325
const dj = inject(dayjsKey);
@@ -99,7 +101,10 @@ const onSubmit = async () => {
99101
: await scheduleStore.createSchedule(call, scheduleData);
100102
101103
if ((data as Error)?.error) {
102-
errorMessage.value.title = (data as Error)?.message;
104+
errorMessage.value = {
105+
title: (data as Error)?.message,
106+
details: null,
107+
};
103108
isLoading.value = false;
104109
return;
105110
}
@@ -109,7 +114,10 @@ const onSubmit = async () => {
109114
110115
onMounted(async () => {
111116
isLoading.value = true;
112-
infoMessage.value.title = t('ftue.setupScheduleInfo');
117+
infoMessage.value = {
118+
title: t('ftue.setupScheduleInfo'),
119+
details: null,
120+
};
113121
114122
await Promise.all([
115123
calendarStore.fetch(call, true),

0 commit comments

Comments
 (0)