Browse Source

fix: ensure repo naddr consistancy

proposals / issues are fetched that tag the repo address pointer
for each maintainer listed in the selected repo event. not just the
ones that tag the selected proposal event.

previously, the link to each proposal would change the selected
repository to the first address pointer tagged in the proposal event

not only is the selected repo changing without the user's knowledge,
it can also cause an error if it points to a repo event that doesn't
exist. this happned here:
nostr:note1h25kwpycszl33285exdkrm4qz7a03e37nf4ujvexwqz94yj3k4xql9yj23

this ensures that the selected repo address pointer doesnt change.

if the proposal is accessed via gitworkhop.dev/e/<ref> the page will
error. a seperate change is needed to check through each
address pointer listed until it finds one that points to an actual
event.
master
DanConwayDev 2 years ago
parent
commit
2c26c7d339
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. 3
      src/lib/components/proposals/ProposalsList.svelte
  2. 10
      src/lib/components/proposals/ProposalsListItem.svelte
  3. 2
      src/lib/components/repo/utils.ts
  4. 1
      src/routes/r/[repo_naddr]/issues/+page.svelte
  5. 1
      src/routes/r/[repo_naddr]/proposals/+page.svelte

3
src/lib/components/proposals/ProposalsList.svelte

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
export let title: string = ''
export let proposals_or_issues: ProposalSummary[] | IssueSummary[] = []
export let repo_naddr_override: string | undefined = undefined;
export let loading: boolean = false
export let show_repo: boolean = false
export let limit: number = 0
@ -25,7 +26,7 @@ @@ -25,7 +26,7 @@
<ul class=" divide-y divide-base-400">
{#each sort_youngest_first ? proposals_or_issues.sort((a, b) => (b.created_at || 0) - (a.created_at || 0)) : proposals_or_issues as proposal, index}
{#if current_limit === 0 || index + 1 <= current_limit}
<ProposalsListItem {...proposal} {show_repo} />
<ProposalsListItem {...proposal} {repo_naddr_override} {show_repo} />
{/if}
{/each}
{#if loading}

10
src/lib/components/proposals/ProposalsListItem.svelte

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
proposal_status_open,
} from '$lib/kinds'
import { issue_icon_path } from '../issues/icons'
import { aToNaddr, extractAReference } from '../repo/utils'
import { aToNaddr, naddrToPointer } from '../repo/utils'
import { nip19 } from 'nostr-tools'
dayjs.extend(relativeTime)
@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
loading,
} = summary_defaults
export let show_repo: boolean = false
export let repo_naddr_override: string | undefined = undefined;
let short_title: string
let created_at_ago: string
$: {
@ -45,9 +46,10 @@ @@ -45,9 +46,10 @@
let repo_identifier = ''
$: {
if (repo_a.length > 0) {
repo_naddr = aToNaddr(repo_a) || ''
let a_ref = extractAReference(repo_a)
repo_identifier = a_ref ? a_ref.identifier : ''
repo_naddr = repo_naddr_override || aToNaddr(repo_a) || ''
if (repo_naddr_override) {
repo_identifier = naddrToPointer(repo_naddr)?.identifier || ''
}
}
}
</script>

2
src/lib/components/repo/utils.ts

@ -64,7 +64,7 @@ const extractRepoAddress = (clone_string: string): string => { @@ -64,7 +64,7 @@ const extractRepoAddress = (clone_string: string): string => {
return s
}
const naddrToPointer = (s: string): AddressPointer | undefined => {
export const naddrToPointer = (s: string): AddressPointer | undefined => {
const decoded = nip19.decode(s)
if (
typeof decoded.data === 'string' ||

1
src/routes/r/[repo_naddr]/issues/+page.svelte

@ -84,6 +84,7 @@ @@ -84,6 +84,7 @@
</div>
{:else}
<ProposalsList
repo_naddr_override={repo_naddr}
proposals_or_issues={filtered}
loading={$issue_summaries.loading}
/>

1
src/routes/r/[repo_naddr]/proposals/+page.svelte

@ -88,6 +88,7 @@ @@ -88,6 +88,7 @@
</div>
{:else}
<ProposalsList
repo_naddr_override={repo_naddr}
proposals_or_issues={filtered}
loading={$proposal_summaries.loading}
/>

Loading…
Cancel
Save