Skip to content

Commit

Permalink
feat: connection reuse
Browse files Browse the repository at this point in the history
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
  • Loading branch information
sairanjit committed Aug 27, 2024
1 parent 65d730e commit 9c00999
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 18 deletions.
8 changes: 4 additions & 4 deletions app/navigators/RootStack.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,10 @@ const RootStack: React.FC = () => {
}

// Try connection based
const { connectionRecord } = await connectFromInvitation(agent, invitationUrl)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, invitationUrl)
navigation.navigate(Stacks.ConnectionStack as any, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
} catch {
try {
Expand Down Expand Up @@ -146,11 +146,11 @@ const RootStack: React.FC = () => {
return
}

const { connectionRecord } = await connectFromInvitation(agent, urlData)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, urlData)

navigation.getParent()?.navigate(Stacks.ConnectionStack, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
return
}
Expand Down
9 changes: 5 additions & 4 deletions app/screens/Connection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import Button, { ButtonType } from '../components/buttons/Button'
import { useAnimatedComponents } from '../contexts/animated-components'
import { useConfiguration } from '../contexts/configuration'
import { useTheme } from '../contexts/theme'
import { useOutOfBandByConnectionId } from '../hooks/connections'
import { useOutOfBandById } from '../hooks/connections'
import { useNotifications } from '../hooks/notifications'
import { Screens, TabStacks, DeliveryStackParams, Stacks } from '../types/navigators'
import { useAppAgent } from '../utils/agent'
Expand All @@ -35,15 +35,15 @@ const Connection: React.FC<ConnectionProps> = ({ navigation, route }) => {
// delay message, the user should be redirected to the home screen.
const { connectionTimerDelay, autoRedirectConnectionToHome } = useConfiguration()
const connTimerDelay = connectionTimerDelay ?? 10000 // in ms
const { connectionId, threadId } = route.params
const { connectionId, outOfBandId, threadId } = route.params
const timerRef = useRef<NodeJS.Timeout | null>(null)
const connection = connectionId ? useConnectionById(connectionId) : undefined
const { t } = useTranslation()
const { notifications } = useNotifications()
const { ColorPallet, TextTheme } = useTheme()
const { ConnectionLoading } = useAnimatedComponents()
const { agent } = useAppAgent()
const oobRecord = useOutOfBandByConnectionId(agent, connectionId ?? '')
const oobRecord = useOutOfBandById(agent, outOfBandId ?? '')
const goalCode = oobRecord?.outOfBandInvitation.goalCode
const merge: MergeFunction = (current, next) => ({ ...current, ...next })
const [state, dispatch] = useReducer(merge, {
Expand All @@ -52,6 +52,7 @@ const Connection: React.FC<ConnectionProps> = ({ navigation, route }) => {
shouldShowDelayMessage: false,
connectionIsActive: false,
})

const styles = StyleSheet.create({
container: {
height: '100%',
Expand Down Expand Up @@ -168,7 +169,7 @@ const Connection: React.FC<ConnectionProps> = ({ navigation, route }) => {
if (state.notificationRecord && goalCode) {
goalCodeAction(goalCode)()
}
}, [connection, goalCode, state.notificationRecord])
}, [connection, oobRecord, goalCode, state.notificationRecord])

useMemo(() => {
startTimer()
Expand Down
8 changes: 4 additions & 4 deletions app/screens/OrganizationDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,11 @@ const OrganizationDetails: React.FC = () => {

const handleInvitation = async (value: string): Promise<void> => {
try {
const { connectionRecord } = await connectFromInvitation(agent, value)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, value)

navigation.getParent()?.navigate(Stacks.ConnectionStack, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
} catch (err: unknown) {
try {
Expand Down Expand Up @@ -188,11 +188,11 @@ const OrganizationDetails: React.FC = () => {
return
}

const { connectionRecord } = await connectFromInvitation(agent, urlData)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, urlData)

navigation.getParent()?.navigate(Stacks.ConnectionStack, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
return
}
Expand Down
8 changes: 4 additions & 4 deletions app/screens/Scan.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,11 @@ const Scan: React.FC<ScanProps> = ({ navigation, route }) => {
return
}

const { connectionRecord } = await connectFromInvitation(agent, value)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, value)
setLoading(false)
navigation.getParent()?.navigate(Stacks.ConnectionStack, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
} catch (err: unknown) {
try {
Expand Down Expand Up @@ -95,12 +95,12 @@ const Scan: React.FC<ScanProps> = ({ navigation, route }) => {
return
}

const { connectionRecord } = await connectFromInvitation(agent, urlData)
const { connectionRecord, outOfBandRecord } = await connectFromInvitation(agent, urlData)

setLoading(false)
navigation.getParent()?.navigate(Stacks.ConnectionStack, {
screen: Screens.Connection,
params: { connectionId: connectionRecord?.id },
params: { connectionId: connectionRecord?.id, outOfBandId: outOfBandRecord.id },
})
return
}
Expand Down
2 changes: 1 addition & 1 deletion app/types/navigators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ export type NotificationStackParams = {
}

export type DeliveryStackParams = {
[Screens.Connection]: { connectionId?: string; threadId?: string }
[Screens.Connection]: { connectionId?: string; threadId?: string; outOfBandId?: string }
[Screens.CredentialOffer]: { credentialId: string }
[Screens.ProofRequest]: { proofId: string }
[Screens.OnTheWay]: { credentialId: string }
Expand Down
4 changes: 3 additions & 1 deletion app/utils/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1047,7 +1047,9 @@ export const checkIfAlreadyConnected = async (agent: AdeyaAgent, invitationUrl:
* @returns a connection record from parsing and receiving the invitation
*/
export const connectFromInvitation = async (agent: AdeyaAgent, uri: string) => {
return await acceptInvitationFromUrl(agent, uri)
return await acceptInvitationFromUrl(agent, uri, {
reuseConnection: true,
})
}

/**
Expand Down

0 comments on commit 9c00999

Please sign in to comment.