diff --git a/src/controllers/Message.ts b/src/controllers/Message.ts index c8340d66f..01ca848c2 100644 --- a/src/controllers/Message.ts +++ b/src/controllers/Message.ts @@ -12,6 +12,7 @@ import { FileSaveConfig } from "../models/configs/FileSaveConfig"; import { DashboardConfig } from "../models/configs/DashboardConfig"; import { DamageSnapshotConfig, DamageSnapshotMode } from "../models/configs/DamageSnapshotConfig"; import { GameWindowConfig } from "../models/configs/GameWindowConfig"; +import { Logbook } from "../models/Logbook"; import { NotificationService } from "../services/NotificationService"; const onMessage = new Router(); @@ -84,6 +85,11 @@ onMessage.on("/damage-snapshot/capture", async (req, sender) => { const img = await WorkerImage.from(raw); const uri = await (new CropService(img)).crop("damagesnapshot"); + // 海域と連戦数の情報を取得 + const sortie = Logbook.sortie; + const seaAreaInfo = sortie.map ? `${sortie.map.area}-${sortie.map.info}` : ""; + const battleCount = sortie.battles.length; + const config = await DamageSnapshotConfig.user(); switch (config.mode) { case DamageSnapshotMode.DISABLED: @@ -93,7 +99,7 @@ onMessage.on("/damage-snapshot/capture", async (req, sender) => { case DamageSnapshotMode.SEPARATE: { const win = await Launcher.damagesnapshot(config); if (!win || !win.tabs || !win.tabs[0].id) throw new Error("Failed to get damage snapshot window"); - return chrome.tabs.sendMessage(win.tabs[0].id, { __action__: "/dsnapshot/separate:push", uri, timestamp }); + return chrome.tabs.sendMessage(win.tabs[0].id, { __action__: "/dsnapshot/separate:push", uri, timestamp, seaArea: seaAreaInfo, battleCount }); } } }); diff --git a/src/page/snapshot/DamageSnapshotPage.tsx b/src/page/snapshot/DamageSnapshotPage.tsx index 30699703a..99593aa1b 100644 --- a/src/page/snapshot/DamageSnapshotPage.tsx +++ b/src/page/snapshot/DamageSnapshotPage.tsx @@ -2,14 +2,23 @@ import { useEffect, useState } from "react" export function DamageSnapshotPage() { const [uris, setURIs] = useState([]); + useEffect(() => { chrome.runtime.onMessage.addListener((msg) => { if (msg.__action__ === "/dsnapshot/separate:push") { - setURIs((prev) => [...prev, msg.uri as string]); + const { uri, seaArea, battleCount } = msg; + setURIs((prev) => [...prev, uri]); + + // タイトルを海域と連戦数で更新 + if (seaArea && battleCount) { + document.title = `${seaArea} (${battleCount}) - 艦隊状況`; + } else if (seaArea) { + document.title = `${seaArea} - 艦隊状況`; + } else { + document.title = "艦隊状況"; + } } }); - // TODO: どの海域の何戦目かを表示するタイトルにする - document.title = "艦隊状況"; // TODO: このウィンドウのサイズ・位置を保存して次回起動時に復元する }, []); return (