Share modal joins the window stack so back closes it, not the screens behind
This commit is contained in:
parent
a2cc150298
commit
eb2aab3e6b
1 changed files with 15 additions and 2 deletions
|
|
@ -3419,19 +3419,32 @@ function showShareModal(session, stats, points) {
|
|||
</div>
|
||||
</div>`;
|
||||
document.body.appendChild(ov);
|
||||
// Register in the global window stack so the hardware/gesture back closes THIS
|
||||
// modal instead of paging the screens behind it (winPush adds a history entry).
|
||||
let base = winStack.length, closed = false;
|
||||
winPush("share", () => ov.remove());
|
||||
let closeShare = () => {
|
||||
if (closed) return;
|
||||
closed = true;
|
||||
let count = winStack.length - base;
|
||||
for (let i = 0; i < count; i++) winStack.pop().close();
|
||||
_skipPops = count;
|
||||
if (count > 0) history.go(-count);
|
||||
ov.remove();
|
||||
};
|
||||
let bg = "transparent", dataUrl = null;
|
||||
let img = ov.querySelector("#share-img");
|
||||
let bt = ov.querySelector("#share-bg-t"), bp = ov.querySelector("#share-bg-p");
|
||||
async function render() { dataUrl = await buildShareImage(session, stats, points, { bg }); img.src = dataUrl; }
|
||||
bt.onclick = () => { bg = "transparent"; bt.classList.add("active"); bp.classList.remove("active"); render(); };
|
||||
bp.onclick = () => {
|
||||
if (!localStorage.getItem("baldav_share_bg")) { showToast("Подложка не выбрана — задайте в Настройках"); return; }
|
||||
if (!localStorage.getItem("baldav_share_bg")) { showToast("Подложка не выбрана - задайте в Настройках"); return; }
|
||||
bg = "photo"; bp.classList.add("active"); bt.classList.remove("active"); render();
|
||||
};
|
||||
let filename = () => "baldav-" + ((session && session.date) || "track") + ".png";
|
||||
ov.querySelector("#share-do").onclick = () => exportShareImage(dataUrl, filename(), "share");
|
||||
ov.querySelector("#share-save").onclick = () => exportShareImage(dataUrl, filename(), "save");
|
||||
ov.querySelector("#share-close").onclick = () => ov.remove();
|
||||
ov.querySelector("#share-close").onclick = () => closeShare();
|
||||
render();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue