Skip to content

Commit

Permalink
dependency: added DOMPurify
Browse files Browse the repository at this point in the history
  • Loading branch information
uyen18827 committed Sep 5, 2021
1 parent 580bdd7 commit e5ff08c
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 19 deletions.
40 changes: 40 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,9 @@
"buildResources": "electron/buildResources"
}
}
},
"dependencies": {
"@types/dompurify": "^2.2.3",
"dompurify": "^2.3.1"
}
}
25 changes: 13 additions & 12 deletions src/core/inventory/inventory.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { inventoryItem, Items } from "../model/item";
import { Paragraphs } from "../model/paragraph";
import { capitalise } from "../../tools/formatting";
import DOMPurify from 'DOMPurify';

export let inventory: Array<inventoryItem> = [];

Expand Down Expand Up @@ -47,16 +48,16 @@ export function getItem(item: Items, pName: Paragraphs["name"]) {
if (inInventory.item.itemQty == 0) {
removeItemHTML(inInventory.item.itemCode)
}
else{
console.log(`${item.itemName} is already in the inventory. Adding 1 to quantity.`);
console.log(inventory);
//update item quantity on view
let quantityDiv = document.querySelector(`#${item.itemCode}-quantity`);
quantityDiv!.textContent = `Quantity: ${inInventory.item.itemQty}`;
let pNameCheck = inInventory.pickedUpLocation.find(location => location == pName);
console.log(pNameCheck, pName)
if (!pNameCheck) {
inInventory.pickedUpLocation.push(pName);
else {
console.log(`${item.itemName} is already in the inventory. Adding 1 to quantity.`);
console.log(inventory);
//update item quantity on view
let quantityDiv = document.querySelector(`#${item.itemCode}-quantity`);
quantityDiv!.textContent = `Quantity: ${inInventory.item.itemQty}`;
let pNameCheck = inInventory.pickedUpLocation.find(location => location == pName);
console.log(pNameCheck, pName)
if (!pNameCheck) {
inInventory.pickedUpLocation.push(pName);
}
}
}
Expand Down Expand Up @@ -98,7 +99,7 @@ export function appendItemHTML(item: Items) {
role="tab"
aria-controls="pills-${item.itemCode}" aria-selected="false">${capitalise(item.itemName)}</a>
</li>`;
inventoryTab.innerHTML += tab;
inventoryTab.innerHTML += DOMPurify.sanitize(tab);

let tabContent: string = `<div class="tab-pane fade"
id="pills-${item.itemCode}"
Expand All @@ -107,7 +108,7 @@ export function appendItemHTML(item: Items) {
${item.description}
<div id="${item.itemCode}-quantity">Quantity: ${item.itemQty}</div>
</div>`
inventoryTabContent.innerHTML += tabContent;
inventoryTabContent.innerHTML += DOMPurify.sanitize(tabContent);
}
/**
* Clear all item from Inventory interface
Expand Down
15 changes: 8 additions & 7 deletions src/core/script/saveScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Save } from "../model/save";
import { getCurrentParagraphName, updateParagraph } from "../paragraphs/paragraphFunctions";
import { getPlayer, setPlayer, showNameDiv } from "../player/playerInfo";
import { loadPronounsRadioBtn, showPronouns } from "../player/pronouns";
import * as DOMPurify from 'DOMPurify';

/**
* Create a new save and stringify it.
Expand Down Expand Up @@ -81,8 +82,8 @@ export function exportStorageSave(saveSlot: string) {
let retrievedSave = localStorage.getItem(saveSlot);
let saveMessage = document.querySelector('#exportMessage');
saveMessage!.textContent = null; //clear old message
saveMessage!.innerHTML += `Save exported from ${saveSlot}.<br>
Copy and keep the code bellow to load later`;
saveMessage!.innerHTML += DOMPurify.sanitize(`Save exported from ${saveSlot}.<br>
Copy and keep the code bellow to load later`);
let saveOutput = document.querySelector(`#saveOutput`);
(<HTMLInputElement>saveOutput).value = ``; //clear old save
(<HTMLInputElement>saveOutput).value = `${btoa(retrievedSave!)}`; //encode to Base64
Expand All @@ -96,8 +97,8 @@ export function exportStorageSave(saveSlot: string) {
export function exportSave() {
let saveMessage = document.querySelector('#exportMessage');
saveMessage!.textContent = null; //clear old message
saveMessage!.innerHTML += `Save created at ${new Date().toLocaleString()}.<br>
Copy and keep the code bellow to load later`
saveMessage!.innerHTML += DOMPurify.sanitize(`Save created at ${new Date().toLocaleString()}.<br>
Copy and keep the code bellow to load later`);
let saveOutput = document.querySelector(`#saveOutput`);
(<HTMLInputElement>saveOutput).value = ``; //clear old save
(<HTMLInputElement>saveOutput).value += `${btoa(save())}`; //encode to Base64
Expand All @@ -116,10 +117,10 @@ export function loadSaveCode() {
console.log(retrievedSave)
load(retrievedSave);
let loadMessage = document.querySelector(`#exportMessage`);
loadMessage!.innerHTML += `<div class="alert alert-warning alert-dismissible fade show mt-1" role="alert">
loadMessage!.innerHTML += DOMPurify.sanitize(`<div class="alert alert-warning alert-dismissible fade show mt-1" role="alert">
<strong> Load Success! </strong> Loaded save from ${retrievedSave.date}.
<button type = "button" class="btn-close" data - bs - dismiss="alert" aria - label="Close"> </button>
</div>`;
</div>`);
//TODO: verify if save is valid.
//TODO: fallback: If load is invalid, start new game.
}
Expand All @@ -128,5 +129,5 @@ export function getSaveDesc(saveSlot: string) {
let retrievedSave = JSON.parse(localStorage.getItem(saveSlot)!);
let description = retrievedSave.date;
let descContainer = document.querySelector(`#saveDesc-${saveSlot}`);
descContainer!.innerHTML = description;
descContainer!.innerHTML = DOMPurify.sanitize(description);
}

0 comments on commit e5ff08c

Please sign in to comment.