From 6f06f1f296be25694aa2642900af81996f822c67 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Mon, 16 Feb 2026 16:06:28 +0100 Subject: [PATCH 1/4] chore: fix quarkus build issue --- sticker-catalogue/src/test/resources/docker-java.properties | 1 + 1 file changed, 1 insertion(+) create mode 100644 sticker-catalogue/src/test/resources/docker-java.properties diff --git a/sticker-catalogue/src/test/resources/docker-java.properties b/sticker-catalogue/src/test/resources/docker-java.properties new file mode 100644 index 00000000..d06ebb92 --- /dev/null +++ b/sticker-catalogue/src/test/resources/docker-java.properties @@ -0,0 +1 @@ +api.version=1.44 From b2f7933ad0ed94e3cc708d18ead186e46b745f6e Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Mon, 16 Feb 2026 16:17:07 +0100 Subject: [PATCH 2/4] chore: better fix quarkus build issue with full quarkus upgrade --- sticker-catalogue/pom.xml | 10 ++++++---- .../src/main/resources/application.properties | 2 +- .../src/test/resources/application.properties | 2 +- .../src/test/resources/docker-java.properties | 1 - 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 sticker-catalogue/src/test/resources/docker-java.properties diff --git a/sticker-catalogue/pom.xml b/sticker-catalogue/pom.xml index 4ce03796..bebd0a10 100644 --- a/sticker-catalogue/pom.xml +++ b/sticker-catalogue/pom.xml @@ -18,7 +18,7 @@ UTF-8 quarkus-bom io.quarkus.platform - 3.22.1 + 3.31.3 true 3.5.2 10.18.2 @@ -115,12 +115,12 @@ io.quarkiverse.loggingjson quarkus-logging-json - 3.2.0 + 3.4.1 io.quarkus - quarkus-junit5 + quarkus-junit test @@ -136,7 +136,7 @@ io.quarkus - quarkus-junit5-mockito + quarkus-junit-mockito test @@ -224,6 +224,7 @@ org.jboss.logmanager.LogManager ${maven.home} + @{argLine} @@ -243,6 +244,7 @@ org.jboss.logmanager.LogManager ${maven.home} + @{argLine} diff --git a/sticker-catalogue/src/main/resources/application.properties b/sticker-catalogue/src/main/resources/application.properties index 89272f75..183f14ca 100644 --- a/sticker-catalogue/src/main/resources/application.properties +++ b/sticker-catalogue/src/main/resources/application.properties @@ -14,7 +14,7 @@ quarkus.log.json.fields.mdc.flat-fields=true quarkus.datasource.db-kind=postgresql # Hibernate ORM -quarkus.hibernate-orm.database.generation=validate +quarkus.hibernate-orm.schema-management.strategy=validate quarkus.hibernate-orm.log.sql=true # Flyway diff --git a/sticker-catalogue/src/test/resources/application.properties b/sticker-catalogue/src/test/resources/application.properties index c9bb3e82..6ab1c44a 100644 --- a/sticker-catalogue/src/test/resources/application.properties +++ b/sticker-catalogue/src/test/resources/application.properties @@ -3,7 +3,7 @@ quarkus.datasource.db-kind=postgresql quarkus.datasource.devservices.enabled=true # Test Hibernate ORM configuration -quarkus.hibernate-orm.database.generation=drop-and-create +quarkus.hibernate-orm.schema-management.strategy=drop-and-create quarkus.hibernate-orm.log.sql=true # Disable Flyway for tests diff --git a/sticker-catalogue/src/test/resources/docker-java.properties b/sticker-catalogue/src/test/resources/docker-java.properties deleted file mode 100644 index d06ebb92..00000000 --- a/sticker-catalogue/src/test/resources/docker-java.properties +++ /dev/null @@ -1 +0,0 @@ -api.version=1.44 From f3283f21f1448676e13d5706e88de758131865c3 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Mon, 16 Feb 2026 16:51:19 +0100 Subject: [PATCH 3/4] fix: broken UI breaking e2e tests --- e2e/fixtures/post-login-validation.ts | 6 +- web-frontend/src/App.jsx | 14 +---- web-frontend/src/components/StickerDetail.jsx | 57 +++++++++++-------- web-frontend/src/context/AuthContext.jsx | 8 +++ 4 files changed, 47 insertions(+), 38 deletions(-) diff --git a/e2e/fixtures/post-login-validation.ts b/e2e/fixtures/post-login-validation.ts index b3b7dc49..c7766138 100644 --- a/e2e/fixtures/post-login-validation.ts +++ b/e2e/fixtures/post-login-validation.ts @@ -63,9 +63,9 @@ export async function validateLoggedInState(page: Page): Promise { - if (!isLoading && isAuthenticated) { + if (isAuthenticated) { navigate("/dashboard"); } - }, [isAuthenticated, isLoading, navigate]); - - if (isLoading) { - return ( -
-

Loading...

-
- ); - } + }, [isAuthenticated, navigate]); return (
diff --git a/web-frontend/src/components/StickerDetail.jsx b/web-frontend/src/components/StickerDetail.jsx index 58200996..087b0e4a 100644 --- a/web-frontend/src/components/StickerDetail.jsx +++ b/web-frontend/src/components/StickerDetail.jsx @@ -4,7 +4,6 @@ import LocalPrintshopOutlinedIcon from "@mui/icons-material/LocalPrintshopOutlin import HeaderBar from "./HeaderBar"; import Sidebar from "./Sidebar"; import { API_BASE_URL } from "../config"; -import AuthService from "../services/AuthService"; import { useAuth } from "../context/AuthContext"; import { authFetch } from "../utils/authFetch"; import { getLastActiveEvent } from "../services/eventStorage"; @@ -12,24 +11,13 @@ import { getLastActiveEvent } from "../services/eventStorage"; function StickerDetail() { const { id } = useParams(); const navigate = useNavigate(); - const { user, isLoading: authLoading } = useAuth(); + const { user } = useAuth(); const [sticker, setSticker] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [isOwned, setIsOwned] = useState(false); useEffect(() => { - const userId = user?.sub || user?.email; - - // Validate userId before fetching - if (!userId) { - if (!authLoading) { - setError('Unable to identify user. Please log in again.'); - setLoading(false); - } - return; - } - const controller = new AbortController(); const fetchSticker = async () => { @@ -47,20 +35,14 @@ function StickerDetail() { } const data = await response.json(); - setSticker(data); - - // Check if user owns this sticker - const awardsResponse = await authFetch( - `${API_BASE_URL}/api/awards/v1/assignments/${encodeURIComponent(userId)}` - ); - if (awardsResponse.ok) { - const awardsData = await awardsResponse.json(); - const assignments = awardsData.stickers || []; - setIsOwned(assignments.some((a) => a.stickerId === id)); + if (!controller.signal.aborted) { + setSticker(data); } } catch (err) { console.error("Error fetching sticker:", err); - setError(err.message); + if (!controller.signal.aborted) { + setError(err.message); + } } finally { if (!controller.signal.aborted) { setLoading(false); @@ -69,8 +51,35 @@ function StickerDetail() { }; fetchSticker(); + return () => controller.abort(); }, [id]); + // Check ownership when user context is available + useEffect(() => { + const userId = user?.sub || user?.email; + if (!userId || !sticker) return; + + const controller = new AbortController(); + + const checkOwnership = async () => { + try { + const awardsResponse = await authFetch( + `${API_BASE_URL}/api/awards/v1/assignments/${encodeURIComponent(userId)}` + ); + if (awardsResponse.ok && !controller.signal.aborted) { + const awardsData = await awardsResponse.json(); + const assignments = awardsData.stickers || []; + setIsOwned(assignments.some((a) => a.stickerId === id)); + } + } catch (err) { + console.error("Error checking ownership:", err); + } + }; + + checkOwnership(); + return () => controller.abort(); + }, [id, user, sticker]); + const formatDate = (dateString) => { if (!dateString) return "Unknown"; return new Date(dateString).toLocaleDateString("en-US", { diff --git a/web-frontend/src/context/AuthContext.jsx b/web-frontend/src/context/AuthContext.jsx index 58fe44c6..0e89037d 100644 --- a/web-frontend/src/context/AuthContext.jsx +++ b/web-frontend/src/context/AuthContext.jsx @@ -119,6 +119,14 @@ export const AuthProvider = ({ children }) => { clearLoginError } + if (isLoading) { + return ( +
+

Loading...

+
+ ) + } + return ( {children} From 610ff4beb6ec785503dee5f49431cf21557963b9 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Tue, 17 Feb 2026 08:44:25 +0100 Subject: [PATCH 4/4] fix: change UI to show betterer info in sidebar --- e2e/fixtures/post-login-validation.ts | 6 +++--- web-frontend/src/components/UserInfo.jsx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/e2e/fixtures/post-login-validation.ts b/e2e/fixtures/post-login-validation.ts index c7766138..b3b7dc49 100644 --- a/e2e/fixtures/post-login-validation.ts +++ b/e2e/fixtures/post-login-validation.ts @@ -63,9 +63,9 @@ export async function validateLoggedInState(page: Page): Promise {isLoading ? "..." - : user?.role?.length - ? user.role.join(", ") - : "No roles assigned"} + : user?.role?.includes("admin") + ? "Sticker Admin" + : "Sticker Collector"}