Skip to content
This repository was archived by the owner on Feb 8, 2026. It is now read-only.

Commit 6a54251

Browse files
committed
fix: disable resolving profiles by default in useProfile hook
Resolving profiles seem to block UI, which is most impactful in the Contacts List screen, disabling it by default, and enabling while adding new contacts reduces that lag significantly
1 parent 0916862 commit 6a54251

5 files changed

Lines changed: 23 additions & 38 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"@synonymdev/react-native-lnurl": "0.0.3",
4747
"@synonymdev/result": "0.0.2",
4848
"@synonymdev/slashtags-auth": "^1.0.0-alpha.5",
49-
"@synonymdev/slashtags-sdk": "1.0.0-alpha.35",
49+
"@synonymdev/slashtags-sdk": "^1.0.0-alpha.36",
5050
"assert": "^2.0.0",
5151
"backpack-client": "github:synonymdev/bitkit-backup-client#f08fdb28529d8a3f8bfecc789443c43b966a7581",
5252
"bip21": "^2.0.3",

src/hooks/slashtags.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,15 @@ export const useSelectedSlashtag = (): {
2626
/**
2727
* Watches the public profile of a local or remote slashtag by its url.
2828
* Overrides name property if it is saved as a contact record!
29+
*
30+
* Note: by default it will _NOT_ resolve profile from remote peers (or seeder)
31+
* to avoid unnecessary UI blocking. Use `opts.resolve = true` if needed.
2932
*/
3033
export const useProfile = (
3134
url: string,
35+
opts?: {
36+
resolve?: boolean;
37+
},
3238
): { resolving: boolean; profile: BasicProfile } => {
3339
const sdk = useSlashtagsSDK();
3440
const contactRecord = useSlashtags().contacts[url];
@@ -43,7 +49,14 @@ export const useProfile = (
4349
: profile;
4450
}, [profile, contactRecord]);
4551

52+
const shouldResolve = opts?.resolve ? true : false;
53+
4654
useEffect(() => {
55+
// Skip resolving profile from peers to avoid blocking UI
56+
if (!shouldResolve) {
57+
return;
58+
}
59+
4760
let unmounted = false;
4861
if (sdk.closed) {
4962
console.debug('useProfile: SKIP sdk is closed');
@@ -82,7 +95,7 @@ export const useProfile = (
8295
drive.core.removeAllListeners();
8396
drive.close();
8497
};
85-
}, [url, sdk]);
98+
}, [url, sdk, shouldResolve]);
8699

87100
return {
88101
resolving,

src/screens/Contacts/ContactEdit.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const ContactEdit = ({
2222
const url = route.params.url;
2323
const saved = useSlashtags().contacts[url];
2424
const { slashtag } = useSelectedSlashtag();
25-
const contact = useProfile(url);
25+
const contact = useProfile(url, { resolve: !saved });
2626
const { keyboardShown } = useKeyboard();
2727
const [form, setForm] = useState<BasicProfile>(saved || {});
2828

src/utils/slashtags/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { createLightningInvoice } from '../../store/actions/lightning';
1919
import { getSettingsStore } from '../../store/helpers';
2020
import { TAvailableNetworks } from '../networks';
2121
import { TWalletName } from '../../store/types/wallet';
22+
import { cacheProfile } from '../../store/actions/slashtags';
2223

2324
/**
2425
* Handles pasting or scanning a slash:// url
@@ -92,6 +93,8 @@ export const saveProfile = async (
9293
}),
9394
);
9495

96+
cacheProfile(slashtag.url, drive.files.feed.fork, drive.version, profile);
97+
9598
drive.close();
9699
};
97100

yarn.lock

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2095,10 +2095,10 @@
20952095
b4a "^1.6.0"
20962096
protomux-rpc "^1.3.0"
20972097

2098-
"@synonymdev/[email protected]":
2099-
version "1.0.0-alpha.35"
2100-
resolved "https://registry.yarnpkg.com/@synonymdev/slashtags-sdk/-/slashtags-sdk-1.0.0-alpha.35.tgz#5ad4f627e226e01d886736e330c6606d13e247f2"
2101-
integrity sha512-hl9TOjT8SOPlrAcvLTCmxH4Mu1EMuAx48xw1khMVlLiDiCxR/nLpLpmG6aFrUXZEBAjSf1dHWtRqanr8XwOdMg==
2098+
"@synonymdev/slashtags-sdk@^1.0.0-alpha.19", "@synonymdev/slashtags-sdk@^1.0.0-alpha.35":
2099+
version "1.0.0-alpha.36"
2100+
resolved "https://registry.yarnpkg.com/@synonymdev/slashtags-sdk/-/slashtags-sdk-1.0.0-alpha.36.tgz#d47b60bbaf8b55259034d4aa36be6af062c9cdc2"
2101+
integrity sha512-7G6cLINKjaJ/28n7zj8F7RFkusGkIJ3XzUWZtIopomjwTvLYdYrFyFjwL/mIyiuNtK/9OeLNp1NIVw7KpX+ULQ==
21022102
dependencies:
21032103
"@hyperswarm/dht" "^6.2.1"
21042104
"@hyperswarm/dht-relay" "^0.3.0"
@@ -2115,26 +2115,6 @@
21152115
turbo-hash-map "^1.0.3"
21162116
ws "^8.8.1"
21172117

2118-
"@synonymdev/slashtags-sdk@^1.0.0-alpha.19":
2119-
version "1.0.0-alpha.34"
2120-
resolved "https://registry.yarnpkg.com/@synonymdev/slashtags-sdk/-/slashtags-sdk-1.0.0-alpha.34.tgz#34eeb2de839965d6d0b6ad516637e49d86c04401"
2121-
integrity sha512-YKgQcgq8UWLXUNfNLbnJ9iQiwDYfdOBbzv4QjG2VRhNVk3riWMBzDRjmSXAJMJRAfgtrYDcUoLdm/lk5QUYHFA==
2122-
dependencies:
2123-
"@hyperswarm/dht" "^6.2.1"
2124-
"@hyperswarm/dht-relay" "^0.3.0"
2125-
"@synonymdev/slashtag" "^1.0.0-alpha.24"
2126-
"@synonymdev/slashtags-url" "^1.0.0-alpha.0"
2127-
b4a "^1.6.0"
2128-
corestore "^6.2.1"
2129-
graceful-goodbye "^1.1.0"
2130-
hypercore-crypto "^3.3.0"
2131-
hyperdrive "^11.0.0-alpha.3"
2132-
hyperswarm "=4.3.3"
2133-
random-access-memory "^5.0.1"
2134-
sodium-universal "^3.1.0"
2135-
turbo-hash-map "^1.0.3"
2136-
ws "^8.8.1"
2137-
21382118
"@synonymdev/slashtags-url@^1.0.0-alpha.0", "@synonymdev/slashtags-url@^1.0.0-alpha.1":
21392119
version "1.0.0-alpha.2"
21402120
resolved "https://registry.yarnpkg.com/@synonymdev/slashtags-url/-/slashtags-url-1.0.0-alpha.2.tgz#f8ce54e6fa9738a044083e313781697a4aee510a"
@@ -6255,17 +6235,6 @@ hyperdrive@^11.0.0-alpha.3, hyperdrive@^11.0.0-alpha.5:
62556235
streamx "^2.12.4"
62566236
unix-path-resolve "^1.0.2"
62576237

6258-
hyperswarm@=4.3.3:
6259-
version "4.3.3"
6260-
resolved "https://registry.yarnpkg.com/hyperswarm/-/hyperswarm-4.3.3.tgz#95e92a0ddc1858af94e002d656e8222171178451"
6261-
integrity sha512-pTckch/1lLU0LsjoFgJT4bqTK4GOcxMXyeVAFJZHbR68jk52Y9Fo9yaSuDPdzuv2pbknUwk6MfCqsokgCBxehQ==
6262-
dependencies:
6263-
"@hyperswarm/dht" "^6.0.1"
6264-
b4a "^1.3.1"
6265-
events "^3.3.0"
6266-
safety-catch "^1.0.2"
6267-
shuffled-priority-queue "^2.1.0"
6268-
62696238
hyperswarm@^4.3.5:
62706239
version "4.3.5"
62716240
resolved "https://registry.yarnpkg.com/hyperswarm/-/hyperswarm-4.3.5.tgz#3818bdf754ad68c345ed7f666938dea6458e977c"

0 commit comments

Comments
 (0)