commit 9a8ff3de39eb0aab56241505be577b227e31b5b4
parent 44363b424cf7112b78565110f590dc20a4b46bb2
Author: lash <dev@holbrook.no>
Date:   Thu, 22 Dec 2022 19:52:17 +0000
Upload attachments to content store
Diffstat:
3 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/js/index.html b/js/index.html
@@ -9,28 +9,33 @@
 		<script src="src/common.js"></script>
 		<script src="src/wala.js"></script>
 <style type='text/css'>
+
 #detail {
 	display: none;
-	/*visibility: hidden;*/
 }
+
 #mint {
 	display: none;
-	/*visibility: hidden;*/
 }
+
 a {
 	text-decoration: underline;
 	color: #0000ff;
 }
+
 a:hover {
 	cursor: pointer;
 }
+
 label:after {
 	content: '\a';
 	white-space: pre;
 }
+
 dt {
 	font-weight: 900;
 }
+
 </style>
 	</head>
 	<body>
@@ -60,7 +65,7 @@ dt {
 				<label for="panel_amount">Batch size (0 or empty for unique work)</label>
 				<input type="file" id="panel_thumb" name="thumb" onChange='fileChange();'; />
 				<label for="panel_thumb">Add image</label>
-				<ol id="panel_images_list">
+				<ol id="panel_attachment_list">
 				</ol>
 				<button id="panel_submit" onClick='return false;'>allocate</button>
 			</form>
diff --git a/js/manual_test_browser.js b/js/manual_test_browser.js
@@ -64,6 +64,7 @@ async function generateAllocation() {
 		name: undefined,
 		description: undefined,
 		amount: 0,
+		attachments: [],
 	};
 
 	let amount = document.getElementById('panel_amount').value;
@@ -82,6 +83,11 @@ async function generateAllocation() {
 	sha_raw.update(s);
 	const digest = sha_raw.getHash("HEX");
 
+	const attachments = document.getElementById('panel_attachment_list').children;
+	for (let i = 0; i < attachments.length; i++) {
+		tokenData.attachments.push(attachments[i].innerHTML);
+	}
+
 	if (session.contentGateway !== undefined) {
 		try {
 			let r = await session.contentGateway.put(s);
@@ -324,30 +330,40 @@ async function run(w3, generated_session) {
 }
 
 
-async function renderFile(contents) {
+async function renderFile(contents, filename) {
 	//const sha_raw = new jsSHA("SHA-256", "BINARY", { encoding: "UTF8" });
-	console.log('hexking', contents);
 	const sha_raw = new jsSHA("SHA-256", "ARRAYBUFFER");
 	sha_raw.update(contents);
 	const digest = sha_raw.getHash("HEX");
-	console.debug('digest', digest);
 	let li = document.createElement('li');
 	li.innerHTML = 'sha256:' + digest;
-	document.getElementById('panel_images_list').appendChild(li);
+	document.getElementById('panel_attachment_list').appendChild(li);
+	return digest;
 }
 
-async function uploadFile(v) {
 
+async function uploadFile(contents, filename) {
+	if (session.contentGateway !== undefined) {
+		try {
+			let r = await session.contentGateway.put(contents, filename);
+			//if (r != digest) {
+			//	throw 'digest mismatch (' + r + ' != ' + digest + ')';
+			//}
+		} catch(e) {
+			console.error('failed to upload token attachment data:', e);
+		}
+	}
 }
 
+
 async function fileChange(e) {
 	let fileButton = document.getElementById("panel_thumb")
 	let file = fileButton.files[0];
 	if (file) {
 		let f = new FileReader();
 		f.onloadend = async (r) => {
-			renderFile(r.target.result);
-			uploadFile(r.target.result);
+			renderFile(r.target.result, file.name);
+			uploadFile(r.target.result, file.name);
 		};
 		f.readAsArrayBuffer(file);
 	}
diff --git a/js/src/wala.js b/js/src/wala.js
@@ -2,9 +2,14 @@ function Wala(url) {
 	this._url = url;
 }
 
-Wala.prototype.put = async function(v) {
+Wala.prototype.put = async function(v, filename, mimetype) {
+	let headers = {};
+	if (filename !== undefined) {
+		headers['X-Filename'] = filename;
+	}
 	let r = await fetch(this._url, {
 		method: 'put',
+		headers: headers,
 		body: v,
 	});
 	if (!r.ok) {