Skip to content

Commit a24edfd

Browse files
committed
feat: shareable compare file links
1 parent e132c67 commit a24edfd

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

app/pages/compare/[...path].vue

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ const packageName = computed(() => parsedRoute.value.packageName)
4141
const fromVersion = computed(() => parsedRoute.value.range?.from ?? '')
4242
const toVersion = computed(() => parsedRoute.value.range?.to ?? '')
4343
44+
const router = useRouter()
45+
const initializedFromQuery = ref(false)
4446
const { data: pkg } = usePackage(packageName)
4547
4648
const { data: compare, status: compareStatus } = useFetch<CompareResponse>(
@@ -68,6 +70,31 @@ const filteredChanges = computed(() => {
6870
return allChanges.value.filter(f => f.type === fileFilter.value)
6971
})
7072
73+
// Sync selection with ?file= query for shareable links
74+
watch(
75+
() => route.query.file,
76+
filePath => {
77+
if (initializedFromQuery.value || !filePath || !compare.value) return
78+
const match = allChanges.value.find(f => f.path === filePath)
79+
if (match) {
80+
selectedFile.value = match
81+
initializedFromQuery.value = true
82+
}
83+
},
84+
{ immediate: true },
85+
)
86+
87+
watch(
88+
selectedFile,
89+
file => {
90+
const query = { ...route.query }
91+
if (file?.path) query.file = file.path
92+
else delete query.file
93+
router.replace({ query })
94+
},
95+
{ deep: false },
96+
)
97+
7198
const groupedDeps = computed(() => {
7299
if (!compare.value?.dependencyChanges) return new Map()
73100

0 commit comments

Comments
 (0)