fix: dice url key
This commit is contained in:
parent
0a2c756213
commit
f596e66983
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
:md-dice[2d6]
|
:md-dice[2d6]
|
||||||
|
|
||||||
:md-dice[1d20+d8]
|
:md-dice[3d6kh1] :md-dice[3d6dl2-1]
|
||||||
|
|
||||||
:md-dice[3d6+5]{key="attack"}
|
:md-dice[3d6+5]{key="attack"}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,8 +128,17 @@ function getDiceResultFromUrl(key: string): number | null {
|
||||||
return value ? parseInt(value) : null;
|
return value ? parseInt(value) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:使用history.pushState
|
function setDiceResultToUrl(key: string, value: number | null) {
|
||||||
function setDiceResultToUrl(key: string, value: number) {}
|
if (typeof window === "undefined") return;
|
||||||
|
const params = new URLSearchParams(window.location.search);
|
||||||
|
if (value === null) {
|
||||||
|
params.delete(`dice-${key}`);
|
||||||
|
} else {
|
||||||
|
params.set(`dice-${key}`, value.toString());
|
||||||
|
}
|
||||||
|
const newUrl = `${window.location.pathname}${params.toString() ? `?${params.toString()}` : ""}${window.location.hash}`;
|
||||||
|
window.history.pushState({}, "", newUrl);
|
||||||
|
}
|
||||||
|
|
||||||
customElement("md-dice", { key: "" }, (props, { element }) => {
|
customElement("md-dice", { key: "" }, (props, { element }) => {
|
||||||
noShadowDOM();
|
noShadowDOM();
|
||||||
|
|
@ -160,7 +169,9 @@ customElement("md-dice", { key: "" }, (props, { element }) => {
|
||||||
setResult(rollResult.total);
|
setResult(rollResult.total);
|
||||||
setRollDetail(rollResult.detail);
|
setRollDetail(rollResult.detail);
|
||||||
setIsRolled(true);
|
setIsRolled(true);
|
||||||
// TODO:保存结果到url
|
if (effectiveKey()) {
|
||||||
|
setDiceResultToUrl(effectiveKey(), rollResult.total);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTextClick = () => {
|
const handleTextClick = () => {
|
||||||
|
|
@ -168,7 +179,9 @@ customElement("md-dice", { key: "" }, (props, { element }) => {
|
||||||
setResult(null);
|
setResult(null);
|
||||||
setIsRolled(false);
|
setIsRolled(false);
|
||||||
setRollDetail("");
|
setRollDetail("");
|
||||||
// TODO:从url中移除结果
|
if (effectiveKey()) {
|
||||||
|
setDiceResultToUrl(effectiveKey(), null);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const displayText = () => (isRolled() ? `${result()}` : formula);
|
const displayText = () => (isRolled() ? `${result()}` : formula);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue