Skip to content

Commit 54330ca

Browse files
committed
feat: updated UI to support bookmarked services
Signed-off-by: Mac Deluca <Mac.Deluca@quartech.com>
1 parent bfcf250 commit 54330ca

File tree

3 files changed

+37
-24
lines changed

3 files changed

+37
-24
lines changed

app/src/bcsc-theme/features/home/Home.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,6 @@ const Home: React.FC<HomeProps> = ({ navigation }) => {
4646
asyncEffect()
4747
}, [user, logger])
4848

49-
// replace with API response
50-
const savedServices = mockServices.filter((service) =>
51-
store.bcsc.bookmarks.some((serviceId) => serviceId === service.id)
52-
)
53-
5449
const styles = StyleSheet.create({
5550
buttonsContainer: {
5651
padding: Spacing.md,
@@ -82,7 +77,7 @@ const Home: React.FC<HomeProps> = ({ navigation }) => {
8277
/>
8378
<SectionButton title={mockLogInTitle} description={mockLogInDescription} onPress={handlePairingCodePress} />
8479
</View>
85-
<SavedServices services={savedServices} />
80+
<SavedServices />
8681
</>
8782
)}
8883
</TabScreenWrapper>

app/src/bcsc-theme/features/home/components/SavedServices.tsx

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { ServiceData } from '@/bcsc-theme/fixtures/services'
2-
import { ThemedText, useTheme } from '@bifold/core'
1+
import { ThemedText, useStore, useTheme } from '@bifold/core'
32
import React from 'react'
43
import { StyleSheet, TouchableOpacity, View } from 'react-native'
54
import Icon from 'react-native-vector-icons/MaterialCommunityIcons'
5+
import { useFilterServiceClients } from '../../services/hooks/useFilterServiceClients'
6+
import { BCState } from '@/store'
7+
import { BCSCRootStackParams, BCSCScreens } from '@/bcsc-theme/types/navigators'
8+
import { StackNavigationProp } from '@react-navigation/stack'
9+
import { useNavigation } from '@react-navigation/native'
610

711
interface SavedServiceProps {
812
title: string
@@ -28,16 +32,21 @@ const SavedService: React.FC<SavedServiceProps> = ({ title, onPress }) => {
2832
</TouchableOpacity>
2933
)
3034
}
31-
interface SavedServicesProps {
32-
services: ServiceData[]
33-
}
35+
36+
type ServicesNavigationProp = StackNavigationProp<BCSCRootStackParams, BCSCScreens.ServiceLoginScreen>
3437

3538
// to be replaced with API response or translation entries, whichever ends up being the case
3639
const mockTitle = 'YOUR SAVED SERVICES'
3740
const mockNoServicesMessage = 'No saved services'
3841

39-
const SavedServices: React.FC<SavedServicesProps> = ({ services = [] }) => {
42+
const SavedServices: React.FC = () => {
4043
const { ColorPalette, Spacing } = useTheme()
44+
const [store] = useStore<BCState>()
45+
const navigation = useNavigation<ServicesNavigationProp>()
46+
47+
const serviceClients = useFilterServiceClients({
48+
clientRefIdsFilter: store.bcsc.bookmarks,
49+
})
4150

4251
const styles = StyleSheet.create({
4352
container: {
@@ -51,6 +60,7 @@ const SavedServices: React.FC<SavedServicesProps> = ({ services = [] }) => {
5160
},
5261
bookmarkIcon: {
5362
marginRight: Spacing.sm,
63+
marginLeft: -Spacing.xs,
5464
},
5565
})
5666

@@ -63,15 +73,25 @@ const SavedServices: React.FC<SavedServicesProps> = ({ services = [] }) => {
6373
</ThemedText>
6474
</View>
6575

66-
{services.length === 0 ? (
76+
{serviceClients.length === 0 ? (
6777
<ThemedText
6878
variant={'headingFour'}
6979
style={{ color: ColorPalette.brand.tertiary, fontWeight: 'normal', paddingHorizontal: Spacing.md }}
7080
>
7181
{mockNoServicesMessage}
7282
</ThemedText>
7383
) : (
74-
services.map((service) => <SavedService key={service.id} title={service.title} onPress={service.onPress} />)
84+
serviceClients.map((serviceClient) => (
85+
<SavedService
86+
key={serviceClient.client_ref_id}
87+
title={serviceClient.client_name}
88+
onPress={() => {
89+
navigation.navigate(BCSCScreens.ServiceLoginScreen, {
90+
serviceClient: serviceClient,
91+
})
92+
}}
93+
/>
94+
))
7595
)}
7696
</View>
7797
)

app/src/bcsc-theme/features/pairing/ManualPairing.tsx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,14 @@ const ManualPairing: React.FC<ManualPairingProps> = ({ navigation }) => {
5757
try {
5858
setLoading(true)
5959
logger.info(`Submitting pairing code: ${code}`)
60-
const { success } = await pairing.loginByPairingCode(code)
61-
if (success) {
62-
logger.info('Pairing code submitted successfully.')
63-
navigation.navigate(BCSCScreens.PairingConfirmation, {
64-
serviceId: mockServices[0].id,
65-
serviceName: mockServices[0].title,
66-
})
67-
} else {
68-
throw new Error('unsuccessful response from pairing API')
69-
}
60+
const serviceClient = await pairing.loginByPairingCode(code)
61+
62+
logger.info('Pairing code submitted successfully.')
63+
64+
navigation.navigate(BCSCScreens.PairingConfirmation, {
65+
serviceId: serviceClient.client_ref_id,
66+
serviceName: serviceClient.client_name,
67+
})
7068
} catch (error) {
7169
logger.error(`Error submitting pairing code: ${error}`)
7270
setMessage('Failed to submit pairing code.')

0 commit comments

Comments
 (0)