Skip to content

Commit

Permalink
fix: recommended users subscription and filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
rolznz committed Sep 1, 2024
1 parent b12a2d3 commit c520575
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 24 deletions.
44 changes: 23 additions & 21 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -266,28 +266,30 @@ export default function App() {
)}
{store.isLoggedIn && (
<div className="flex flex-wrap gap-2">
{jim.recommendedByUsers.map((user) => (
<a
key={user.user.pubkey}
href={`https://nostrudel.ninja/#/u/${user.user.npub}`}
>
<div className="avatar">
<div className="w-8 rounded-lg">
<img
title={
user.user.profile?.displayName ||
user.user.profile?.name ||
user.user.npub
}
src={
user.user.profile?.image ||
`https://api.dicebear.com/9.x/pixel-art/svg?seed=${user.user.pubkey}`
}
/>
{jim.recommendedByUsers
.filter((user) => user.mutual)
.map((user) => (
<a
key={user.user.pubkey}
href={`https://nostrudel.ninja/#/u/${user.user.npub}`}
>
<div className="avatar">
<div className="w-8 rounded-lg">
<img
title={
user.user.profile?.displayName ||
user.user.profile?.name ||
user.user.npub
}
src={
user.user.profile?.image ||
`https://api.dicebear.com/9.x/pixel-art/svg?seed=${user.user.pubkey}`
}
/>
</div>
</div>
</div>
</a>
))}
</a>
))}
</div>
)}

Expand Down
15 changes: 12 additions & 3 deletions src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,12 @@ export const useStore = create<Store>((set, get) => ({
updatedJim,
];
const jims = _jims.filter((jim) => !!jim.info) as Jim[];
const recommendedUsersFilter = (user: { mutual: boolean }) =>
!ndk.signer || user.mutual;
jims.sort(
(a, b) => b.recommendedByUsers.length - a.recommendedByUsers.length,
(a, b) =>
b.recommendedByUsers.filter(recommendedUsersFilter).length -
a.recommendedByUsers.filter(recommendedUsersFilter).length,
);

set({ _jims, jims });
Expand Down Expand Up @@ -121,6 +125,7 @@ export const useStore = create<Store>((set, get) => ({
})();

let jimInstanceEventsSub: NDKSubscription | undefined;
let jimRecommendationEventsSub: NDKSubscription | undefined;
async function loadJims() {
if (jimInstanceEventsSub) {
jimInstanceEventsSub.stop();
Expand All @@ -141,6 +146,7 @@ async function loadJims() {
event,
eventId: event.id,
});
return;
}

const url = event.dTag;
Expand Down Expand Up @@ -181,12 +187,15 @@ async function loadJims() {

// load recommendations

const jimRecommendationSub = ndk.subscribe({
if (jimRecommendationEventsSub) {
jimRecommendationEventsSub.stop();
}
jimRecommendationEventsSub = ndk.subscribe({
kinds: [38000],
"#k": [JIM_INSTANCE_KIND.toString()],
});

jimRecommendationSub.on("event", (recommendationEvent: NDKEvent) => {
jimRecommendationEventsSub.on("event", (recommendationEvent: NDKEvent) => {
const jimEventId = recommendationEvent.dTag;
useStore.getState().updateJim({
eventId: jimEventId,
Expand Down

0 comments on commit c520575

Please sign in to comment.