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

Commit f461a2c

Browse files
authored
Merge pull request #902 from synonymdev/fix/contacts-list-lag
fix: disable resolving profiles by default in useProfile hook
2 parents 05c8916 + 6a54251 commit f461a2c

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/slashtags-sdk@1.0.0-alpha.35":
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)