@@ -39,6 +39,16 @@ function t(key, params) {
3939 return val;
4040}
4141
42+ // The slug string to display or copy when "the link" needs one representative
43+ // chip: the link's primary, falling back to the first slug.
44+ function pickPrimarySlug(link) {
45+ if (!link.slugs || link.slugs.length === 0) return '';
46+ for (var i = 0; i < link.slugs.length; i++) {
47+ if (link.slugs[i].is_primary) return link.slugs[i].slug;
48+ }
49+ return link.slugs[0].slug;
50+ }
51+
4252// ---- Toast ----
4353function toast(msg, type) {
4454 var el = document.getElementById('toast');
@@ -150,8 +160,8 @@ function quickShorten() {
150160 window.location.href = '/_/admin/links/' + link.id;
151161 }
152162 } else {
153- var primary = link.slugs.find(function(s) { return !s.is_custom; } );
154- if (primary) copyUrl(primary.slug );
163+ var primary = pickPrimarySlug(link );
164+ if (primary) copyUrl(primary);
155165 toast(t('client.linkCreatedCopied'));
156166 window.location.href = '/_/admin/links/' + link.id;
157167 }
@@ -247,8 +257,8 @@ function createDuplicate(url) {
247257 api('/links', { method: 'POST', body: JSON.stringify({ url: url, allow_duplicate: true }) }).then(function(res) {
248258 if (res.ok) {
249259 return res.json().then(function(link) {
250- var primary = link.slugs.find(function(s) { return !s.is_custom; } );
251- if (primary) copyUrl(primary.slug );
260+ var primary = pickPrimarySlug(link );
261+ if (primary) copyUrl(primary);
252262 toast(t('client.linkCreatedCopied'));
253263 window.location.href = '/_/admin/links/' + link.id;
254264 });
@@ -1125,11 +1135,7 @@ function pollDashboard() {
11251135 if (recentNoData) recentNoData.remove();
11261136 for (var ri = 0; ri < d.recent_links.length; ri++) {
11271137 var link = d.recent_links[ri];
1128- var slug = '';
1129- for (var si = 0; si < link.slugs.length; si++) {
1130- if (!link.slugs[si].is_custom) { slug = link.slugs[si].slug; break; }
1131- }
1132- if (!slug && link.slugs.length > 0) slug = link.slugs[0].slug;
1138+ var slug = pickPrimarySlug(link);
11331139 var a = document.createElement('a');
11341140 a.href = '/_/admin/links/' + link.id;
11351141 a.style.cssText = 'display:flex;align-items:center;gap:0.75rem;padding:0.5rem 0;cursor:pointer;overflow:hidden;min-width:0;text-decoration:none;color:inherit';
@@ -1161,11 +1167,7 @@ function pollDashboard() {
11611167 if (tlNoData) tlNoData.remove();
11621168 for (var ti = 0; ti < d.top_links.length; ti++) {
11631169 var tLink = d.top_links[ti];
1164- var tSlug = '';
1165- for (var si = 0; si < tLink.slugs.length; si++) {
1166- if (!tLink.slugs[si].is_custom) { tSlug = tLink.slugs[si].slug; break; }
1167- }
1168- if (!tSlug && tLink.slugs.length > 0) tSlug = tLink.slugs[0].slug;
1170+ var tSlug = pickPrimarySlug(tLink);
11691171 var tPct = Math.round((tLink.total_clicks / tlMax) * 100);
11701172 var a = document.createElement('a');
11711173 a.href = '/_/admin/links/' + tLink.id;
@@ -1503,11 +1505,7 @@ function showAddLinkToBundlePicker(bundleId, excludeIds) {
15031505 html += '<div class="muted-hint">' + esc(t('bundles.allLinksAdded')) + '</div>';
15041506 } else {
15051507 available.forEach(function(link) {
1506- var slug = '';
1507- if (link.slugs && link.slugs.length > 0) {
1508- var primary = link.slugs.find(function(s) { return s.is_primary; }) || link.slugs[0];
1509- slug = primary.slug;
1510- }
1508+ var slug = pickPrimarySlug(link);
15111509 var label = link.label || link.url;
15121510 html += '<div class="add-to-bundle-row" data-search="' + esc((link.label || '') + ' ' + link.url + ' ' + slug).toLowerCase() + '" onclick="doAddLinkToBundle(' + bundleId + ',' + link.id + ')">';
15131511 html += '<span class="slug-chip">' + esc(slug) + '</span>';
0 commit comments