oxen-io / session-desktop

Session Desktop - Onion routing based messenger
https://getsession.org
GNU General Public License v3.0
1.44k stars 186 forks source link

feat: add "trust this website" button in external link popup when clicking on a link #3088

Open VityaSchel opened 2 months ago

VityaSchel commented 2 months ago

First time contributor checklist:

Contributor checklist:

Description

Feature request: #2662

This PR adds separate SessionOpenExternalLinkDialog component which is used instead of customized confirmation modal when opening links. This component has significant design changes to links popup, instead of forcing user to choose: either copy link or open it in browser, it allows to copy URL fully, partially, close popup and open link in default browser.

Additionally, second commit adds trusted websites controller which is essentially a list of hostnames that user trusts. When clicking on a link that can be parsed and that has matching hostname in that list, user will not be prompted to copy url, but instead, this link will be opened in default browser instantly.

User can add trusted websites by clicking on a "trust this website" button under main actions buttons in SessionOpenExternalLinkDialog, and remove websites from trusted websites list from settings -> privacy section.

Trusted websites controller is based on BlockedNumberController and saves hostnames list by trusted-websites key in db.

I've added 4 localization keys: trustHostname (has hostname variable), trustedWebsites, trustedWebsitesDescription, noTrustedWebsitesEntries.

This commit also fixes 2 bugs:

KeeJef commented 1 month ago

Tracking this internally via ticket SES-1808