Problem: most important rockets not shown on top /rockets

This commit is contained in:
Bob
2024-08-07 20:49:38 +08:00
parent 2ecb4894b3
commit 737738faf5

View File

@@ -13,28 +13,51 @@
_rockets?.unsubscribe();
});
let rockets = derived(_rockets, ($rockets)=>{
let _r = new Map<string, Rocket>()
let rockets = derived(_rockets, ($rockets) => {
let _r = new Map<string, Rocket>();
for (let e of $rockets) {
let existing = _r.get(`${e.pubkey}${e.dTag}`)
let existing = _r.get(`${e.pubkey}${e.dTag}`);
if (!existing) {
existing = new Rocket(e)
existing = new Rocket(e);
}
if (existing.Event.created_at <= e.created_at) {
_r.set(`${e.pubkey}${e.dTag}`, existing)
const existingCreatedAt = existing.Event?.created_at ?? 0;
const newCreatedAt = e.created_at ?? 0;
if (existingCreatedAt <= newCreatedAt) {
_r.set(`${e.pubkey}${e.dTag}`, existing);
}
}
return Array.from(_r, ([_, r])=>{return r})
})
let rocketArray = Array.from(_r.values());
rocketArray.sort((a, b) => {
// First condition: "Nostrocket" at the top
if (a.Name() === 'Nostrocket') return -1;
if (b.Name() === 'Nostrocket') return 1;
// Second condition: "test" rockets grouped underneath
const aIsTest = a.Name().toLowerCase().includes('test');
const bIsTest = b.Name().toLowerCase().includes('test');
if (aIsTest && !bIsTest) return 1;
if (!aIsTest && bIsTest) return -1;
// Default sorting by created_at, handling undefined
const aCreatedAt = a.Event?.created_at ?? 0;
const bCreatedAt = b.Event?.created_at ?? 0;
return aCreatedAt - bCreatedAt;
});
return rocketArray;
});
//todo: until we have namerocket working, just manually dedupe rockets based on my pubkey
//todo: write a recognizer/validator for rocket events
</script>
<Heading title="Rockets" />
{#if rockets && $rockets}
<AssociateBitcoinAddress {rockets} />
<AssociateBitcoinAddress {rockets} />
<Todo text={['render these in a nicer way, maybe a grid or something']} />
{#each $rockets as rocket (`${rocket.Event.pubkey}${rocket.Name()}`)}