Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: async termination of connection (using ack from server) #1022

Merged
merged 11 commits into from
Sep 19, 2024

Conversation

abretonc7s
Copy link
Collaborator

@abretonc7s abretonc7s commented Sep 11, 2024

Explanation

A potential issue was discovered if a user terminates their connection without an internet connection.

The behavior to disconnect is to send a terminate message to the server, which will relay it to the dApp to inform that the connection has been destroyed.

However, if the wallet doesn't have an active internet connection, it would delete the connection without sending the event, potentially leaving the dApp uninformed that the connection was destroyed.

In this case, the dApp would need to provide a mechanism to disconnect and create a new connection.

To fix the issue, we have two approaches:

Only remove the connection after the terminate message has been acknowledged by the server.
Remove the connection from the UI directly (set the state to removed) and wait for acknowledgment from the server before fully removing it from storage.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate

Copy link

codecov bot commented Sep 11, 2024

Codecov Report

Attention: Patch coverage is 67.25664% with 37 lines in your changes missing coverage. Please review.

Project coverage is 78.81%. Comparing base (1e41819) to head (9a56aaf).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...ackages/sdk-communication-layer/src/KeyExchange.ts 0.00% 15 Missing ⚠️
...unication/ConnectionManager/handleAuthorization.ts 50.00% 6 Missing ⚠️
...rvice/ConnectionManager/handleJoinChannelResult.ts 0.00% 4 Missing ⚠️
...ices/SocketService/EventListeners/handleMessage.ts 62.50% 3 Missing ⚠️
...sdk-communication-layer/src/RemoteCommunication.ts 71.42% 2 Missing ⚠️
...emoteCommunication/ConnectionManager/disconnect.ts 93.54% 2 Missing ⚠️
...ion/MessageHandlers/onCommunicationLayerMessage.ts 0.00% 2 Missing ⚠️
...services/SocketService/ConnectionManager/resume.ts 50.00% 1 Missing ⚠️
...ketService/EventListeners/handleChannelRejected.ts 0.00% 1 Missing ⚠️
...SocketService/MessageHandlers/handleSendMessage.ts 88.88% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1022      +/-   ##
==========================================
- Coverage   79.16%   78.81%   -0.36%     
==========================================
  Files         179      179              
  Lines        4084     4120      +36     
  Branches     1013     1016       +3     
==========================================
+ Hits         3233     3247      +14     
- Misses        851      873      +22     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@abretonc7s abretonc7s changed the base branch from main to serverreject September 18, 2024 22:36
@abretonc7s abretonc7s marked this pull request as ready for review September 19, 2024 02:23
@abretonc7s abretonc7s requested a review from a team as a code owner September 19, 2024 02:23
@abretonc7s abretonc7s marked this pull request as draft September 19, 2024 06:44
@abretonc7s abretonc7s marked this pull request as ready for review September 19, 2024 07:24
elefantel
elefantel previously approved these changes Sep 19, 2024
Copy link
Contributor

@elefantel elefantel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Base automatically changed from serverreject to main September 19, 2024 07:35
@abretonc7s abretonc7s dismissed elefantel’s stale review September 19, 2024 07:35

The base branch was changed.

Copy link
Contributor

@elefantel elefantel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link

sonarcloud bot commented Sep 19, 2024

@abretonc7s abretonc7s merged commit 7c1894a into main Sep 19, 2024
35 of 37 checks passed
@abretonc7s abretonc7s deleted the asyncterminate branch September 19, 2024 07:59
github-merge-queue bot pushed a commit to MetaMask/metamask-mobile that referenced this pull request Sep 19, 2024
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR is an update to the SDK communication protocol that allows the
following:
- prevent deleting connection until server confirmation
- emit rejection event 

## **Related issues**

- MetaMask/metamask-sdk#1020
- MetaMask/metamask-sdk#1022

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
abretonc7s added a commit to MetaMask/metamask-mobile that referenced this pull request Sep 19, 2024
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR is an update to the SDK communication protocol that allows the
following:
- prevent deleting connection until server confirmation
- emit rejection event 

## **Related issues**

- MetaMask/metamask-sdk#1020
- MetaMask/metamask-sdk#1022

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
Daniel-Cross pushed a commit to MetaMask/metamask-mobile that referenced this pull request Sep 20, 2024
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR is an update to the SDK communication protocol that allows the
following:
- prevent deleting connection until server confirmation
- emit rejection event 

## **Related issues**

- MetaMask/metamask-sdk#1020
- MetaMask/metamask-sdk#1022

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants