Skip to content

Commit f39598d

Browse files
committed
Refactors URL handling with pathutil.BuildPath
Introduces consistent use of pathutil.BuildPath function for building URLs Adds proper path prefixing to image paths in support project data Improves URL generation across various dashboard components WIP on feature/path-prefix
1 parent 7b81f8a commit f39598d

10 files changed

Lines changed: 66 additions & 21 deletions

File tree

internal/view/web/component/support_project.inc.js

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,47 @@ window.alpineSupportProjectData = function () {
5555
}
5656
},
5757

58+
prefixImagePath(path) {
59+
// If the path starts with / and doesn't start with http, add the path prefix
60+
if (path && path.startsWith("/") && !path.startsWith("http")) {
61+
return window.PBW_PATH_PREFIX + path;
62+
}
63+
return path;
64+
},
65+
66+
processData(data) {
67+
// Add path prefix to all image URLs
68+
if (data.referralLinks) {
69+
data.referralLinks = data.referralLinks.map((link) => ({
70+
...link,
71+
logo: this.prefixImagePath(link.logo),
72+
}));
73+
}
74+
75+
if (data.sponsors) {
76+
if (data.sponsors.gold) {
77+
data.sponsors.gold = data.sponsors.gold.map((sponsor) => ({
78+
...sponsor,
79+
logo: this.prefixImagePath(sponsor.logo),
80+
}));
81+
}
82+
if (data.sponsors.silver) {
83+
data.sponsors.silver = data.sponsors.silver.map((sponsor) => ({
84+
...sponsor,
85+
logo: this.prefixImagePath(sponsor.logo),
86+
}));
87+
}
88+
if (data.sponsors.bronze) {
89+
data.sponsors.bronze = data.sponsors.bronze.map((sponsor) => ({
90+
...sponsor,
91+
logo: this.prefixImagePath(sponsor.logo),
92+
}));
93+
}
94+
}
95+
96+
return data;
97+
},
98+
5899
async getData() {
59100
const cacheKey = "pbw-support-project-data";
60101

@@ -63,7 +104,7 @@ window.alpineSupportProjectData = function () {
63104
const cached = JSON.parse(cachedJSON);
64105
// Cache for 2 minutes
65106
if (Date.now() - cached.timestamp < 2 * 60 * 1000) {
66-
return cached.data;
107+
return this.processData(cached.data);
67108
}
68109
}
69110

@@ -80,7 +121,7 @@ window.alpineSupportProjectData = function () {
80121
timestamp: Date.now(),
81122
});
82123
localStorage.setItem(cacheKey, dataToCache);
83-
return data;
124+
return this.processData(data);
84125
} catch {
85126
return null;
86127
}

internal/view/web/dashboard/backups/list_backups.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ func listBackups(
7070
nodx.Td(component.OptionsDropdown(
7171
component.OptionsDropdownA(
7272
nodx.Class("btn btn-sm btn-ghost btn-square"),
73-
nodx.Href(
73+
nodx.Href(pathutil.BuildPath(
7474
fmt.Sprintf("/dashboard/executions?backup=%s", backup.ID),
75-
),
75+
)),
7676
nodx.Target("_blank"),
7777
lucide.List(),
7878
component.SpanText("Show executions"),
@@ -125,9 +125,9 @@ func listBackups(
125125

126126
if pagination.HasNextPage {
127127
trs = append(trs, nodx.Tr(
128-
htmx.HxGet(fmt.Sprintf(
128+
htmx.HxGet(pathutil.BuildPath(fmt.Sprintf(
129129
"/dashboard/backups/list?page=%d", pagination.NextPage,
130-
)),
130+
))),
131131
htmx.HxTrigger("intersect once"),
132132
htmx.HxSwap("afterend"),
133133
))

internal/view/web/dashboard/databases/list_databases.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ func listDatabases(
6565
nodx.Div(
6666
nodx.Class("flex flex-col space-y-1"),
6767
component.OptionsDropdownA(
68-
nodx.Href(
68+
nodx.Href(pathutil.BuildPath(
6969
fmt.Sprintf("/dashboard/executions?database=%s", database.ID),
70-
),
70+
)),
7171
nodx.Target("_blank"),
7272
lucide.List(),
7373
component.SpanText("Show executions"),
@@ -105,9 +105,9 @@ func listDatabases(
105105

106106
if pagination.HasNextPage {
107107
trs = append(trs, nodx.Tr(
108-
htmx.HxGet(fmt.Sprintf(
108+
htmx.HxGet(pathutil.BuildPath(fmt.Sprintf(
109109
"/dashboard/databases/list?page=%d", pagination.NextPage,
110-
)),
110+
))),
111111
htmx.HxTrigger("intersect once"),
112112
htmx.HxSwap("afterend"),
113113
))

internal/view/web/dashboard/destinations/list_destinations.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ func listDestinations(
6363
trs = append(trs, nodx.Tr(
6464
nodx.Td(component.OptionsDropdown(
6565
component.OptionsDropdownA(
66-
nodx.Href(
66+
nodx.Href(pathutil.BuildPath(
6767
fmt.Sprintf("/dashboard/executions?destination=%s", destination.ID),
68-
),
68+
)),
6969
nodx.Target("_blank"),
7070
lucide.List(),
7171
component.SpanText("Show executions"),
@@ -131,9 +131,9 @@ func listDestinations(
131131

132132
if pagination.HasNextPage {
133133
trs = append(trs, nodx.Tr(
134-
htmx.HxGet(fmt.Sprintf(
134+
htmx.HxGet(pathutil.BuildPath(fmt.Sprintf(
135135
"/dashboard/destinations/list?page=%d", pagination.NextPage,
136-
)),
136+
))),
137137
htmx.HxTrigger("intersect once"),
138138
htmx.HxSwap("afterend"),
139139
))

internal/view/web/dashboard/executions/index.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"net/http"
55

66
"github.com/eduardolat/pgbackweb/internal/util/echoutil"
7+
"github.com/eduardolat/pgbackweb/internal/util/pathutil"
78
"github.com/eduardolat/pgbackweb/internal/util/strutil"
89
"github.com/eduardolat/pgbackweb/internal/validate"
910
"github.com/eduardolat/pgbackweb/internal/view/reqctx"
@@ -61,7 +62,7 @@ func indexPage(reqCtx reqctx.Ctx, queryData execsQueryData) nodx.Node {
6162
nodx.Tbody(
6263
component.SkeletonTr(8),
6364
htmx.HxGet(func() string {
64-
url := "/dashboard/executions/list?page=1"
65+
url := pathutil.BuildPath("/dashboard/executions/list?page=1")
6566
if queryData.Database != uuid.Nil {
6667
url = strutil.AddQueryParamToUrl(url, "database", queryData.Database.String())
6768
}

internal/view/web/dashboard/executions/list_executions.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/eduardolat/pgbackweb/internal/service/executions"
99
"github.com/eduardolat/pgbackweb/internal/util/echoutil"
1010
"github.com/eduardolat/pgbackweb/internal/util/paginateutil"
11+
"github.com/eduardolat/pgbackweb/internal/util/pathutil"
1112
"github.com/eduardolat/pgbackweb/internal/util/strutil"
1213
"github.com/eduardolat/pgbackweb/internal/util/timeutil"
1314
"github.com/eduardolat/pgbackweb/internal/validate"
@@ -117,7 +118,7 @@ func listExecutions(
117118
if pagination.HasNextPage {
118119
trs = append(trs, nodx.Tr(
119120
htmx.HxGet(func() string {
120-
url := "/dashboard/executions/list"
121+
url := pathutil.BuildPath("/dashboard/executions/list")
121122
url = strutil.AddQueryParamToUrl(url, "page", fmt.Sprintf("%d", pagination.NextPage))
122123
if queryData.Database != uuid.Nil {
123124
url = strutil.AddQueryParamToUrl(url, "database", queryData.Database.String())

internal/view/web/dashboard/restorations/index.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"net/http"
55

66
"github.com/eduardolat/pgbackweb/internal/util/echoutil"
7+
"github.com/eduardolat/pgbackweb/internal/util/pathutil"
78
"github.com/eduardolat/pgbackweb/internal/util/strutil"
89
"github.com/eduardolat/pgbackweb/internal/validate"
910
"github.com/eduardolat/pgbackweb/internal/view/reqctx"
@@ -66,7 +67,7 @@ func indexPage(reqCtx reqctx.Ctx, queryData resQueryData) nodx.Node {
6667
nodx.Tbody(
6768
component.SkeletonTr(8),
6869
htmx.HxGet(func() string {
69-
url := "/dashboard/restorations/list?page=1"
70+
url := pathutil.BuildPath("/dashboard/restorations/list?page=1")
7071
if queryData.Execution != uuid.Nil {
7172
url = strutil.AddQueryParamToUrl(url, "execution", queryData.Execution.String())
7273
}

internal/view/web/dashboard/restorations/list_restorations.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/eduardolat/pgbackweb/internal/service/restorations"
99
"github.com/eduardolat/pgbackweb/internal/util/echoutil"
1010
"github.com/eduardolat/pgbackweb/internal/util/paginateutil"
11+
"github.com/eduardolat/pgbackweb/internal/util/pathutil"
1112
"github.com/eduardolat/pgbackweb/internal/util/strutil"
1213
"github.com/eduardolat/pgbackweb/internal/util/timeutil"
1314
"github.com/eduardolat/pgbackweb/internal/validate"
@@ -109,7 +110,7 @@ func listRestorations(
109110
if pagination.HasNextPage {
110111
trs = append(trs, nodx.Tr(
111112
htmx.HxGet(func() string {
112-
url := "/dashboard/restorations/list"
113+
url := pathutil.BuildPath("/dashboard/restorations/list")
113114
url = strutil.AddQueryParamToUrl(url, "page", fmt.Sprintf("%d", pagination.NextPage))
114115
if queryData.Execution != uuid.Nil {
115116
url = strutil.AddQueryParamToUrl(url, "execution", queryData.Execution.String())

internal/view/web/dashboard/webhooks/list_webhooks.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func listWebhooks(
9292
if pagination.HasNextPage {
9393
trs = append(trs, nodx.Tr(
9494
htmx.HxGet(func() string {
95-
url := "/dashboard/webhooks/list"
95+
url := pathutil.BuildPath("/dashboard/webhooks/list")
9696
url = strutil.AddQueryParamToUrl(url, "page", fmt.Sprintf("%d", pagination.NextPage))
9797
return url
9898
}()),

internal/view/web/dashboard/webhooks/webhook_executions.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func webhookExecutionsList(
8888
if pagination.HasNextPage {
8989
trs = append(trs, nodx.Tr(
9090
htmx.HxGet(func() string {
91-
url := "/dashboard/webhooks/" + webhookID.String() + "/executions"
91+
url := pathutil.BuildPath("/dashboard/webhooks/" + webhookID.String() + "/executions")
9292
url = strutil.AddQueryParamToUrl(url, "page", fmt.Sprintf("%d", pagination.NextPage))
9393
return url
9494
}()),
@@ -258,7 +258,7 @@ func webhookExecutionsButton(webhookID uuid.UUID) nodx.Node {
258258
),
259259
nodx.Tbody(
260260
htmx.HxGet(
261-
"/dashboard/webhooks/"+webhookID.String()+"/executions?page=1",
261+
pathutil.BuildPath("/dashboard/webhooks/"+webhookID.String()+"/executions?page=1"),
262262
),
263263
htmx.HxIndicator("#webhook-executions-loading"),
264264
htmx.HxTrigger("intersect once"),

0 commit comments

Comments
 (0)