Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions quiz-app/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import PressButton from "./components/ui/PressButton.vue";
import {
FOOTER_TAP_THRESHOLD,
PREVIEW_UNLOCK_KEYWORD,
SPECIAL_PAGE_URL,
STAGE_TIME_LIMIT_MS,
campaignTiers,
} from "./data/stages";
Expand Down Expand Up @@ -51,6 +50,11 @@ const conferenceLogoUrl = new URL(
const xLogoUrl = new URL("./assets/x-logo.svg", import.meta.url).href;
const blueskyLogoUrl = new URL("./assets/bluesky-logo.svg", import.meta.url)
.href;
const wallpaperUrl = new URL(
"./assets/gocon26-codelab-wallpaper.png",
import.meta.url,
).href;
const WALLPAPER_FILE_NAME = "gocon26-codelab-wallpaper.png";

const isSingleTier = campaignTiers.length === 1;

Expand Down Expand Up @@ -163,9 +167,9 @@ const i18n = computed(() => {
? "Present a souvenir!"
: "おみやげをプレゼント!",
allCorrectDesc: isEn
? "Prepared some souvenirs for everyone played."
: "プレイしてくれたみんなのために記念品を用意したよ。",
goToSpecial: isEn ? "Go to Souvenirs Page" : "おみやげページ",
? "We prepared a commemorative wallpaper for everyone who played. Save it and use it on your phone!"
: "プレイしてくれたみんなのために記念壁紙を用意したよ。保存してスマホの壁紙にしてね!",
downloadWallpaper: isEn ? "Download Wallpaper" : "壁紙をダウンロード",
nextLevel: isEn ? "Next Level" : "次のレベルへ",
retryLevel: isEn
? isSingleTier
Expand Down Expand Up @@ -1228,13 +1232,17 @@ onBeforeUnmount(() => {
<p class="mt-2 text-quiz-body text-sm leading-6">
{{ i18n.allCorrectDesc }}
</p>
<img
:src="wallpaperUrl"
alt="Go Conference 2026 CodeLab wallpaper"
class="mx-auto mt-4 max-h-[320px] rounded-[12px]"
/>
<a
:href="SPECIAL_PAGE_URL"
target="_blank"
rel="noreferrer"
:href="wallpaperUrl"
:download="WALLPAPER_FILE_NAME"
class="primary-link-button mt-4"
>
{{ i18n.goToSpecial }}
{{ i18n.downloadWallpaper }}
</a>
</section>

Expand Down
Binary file added quiz-app/src/assets/gocon26-codelab-wallpaper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion quiz-app/src/data/stages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import stagesDocument from "./stages.toml";
export const STAGE_TIME_LIMIT_MS = 30_000;
export const PREVIEW_UNLOCK_KEYWORD = "gofar,gotogether";
export const FOOTER_TAP_THRESHOLD = 10;
export const SPECIAL_PAGE_URL = "https://gocon.jp/2026/";

type TomlRecord = Record<string, unknown>;

Expand Down
7 changes: 7 additions & 0 deletions quiz-app/test/app.ui.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,13 @@ describe("quiz-app campaign flow", () => {
expect(wrapper.text()).toContain(`${stages.length}/${stages.length}`);
expect(wrapper.text()).toContain("おみやげをプレゼント");

const wallpaperLink = wrapper.find("a[download]");
expect(wallpaperLink.exists()).toBe(true);
expect(wallpaperLink.attributes("download")).toBe(
"gocon26-codelab-wallpaper.png",
);
expect(wallpaperLink.text()).toContain("壁紙をダウンロード");

// Tierが1つだけの場合はボタン名が「もう一度挑戦する」に変化する対応
const isSingleTier = campaignTiers.length === 1;
const retryButtonLabel = isSingleTier
Expand Down