forked from cory/tildefriends
		
	Fixed some problems linking messages with their threads in the UI.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3811 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -1 +1 @@ | ||||
| {"type":"tildefriends-app","files":{"app.js":"&WCq6ssQedT5denXPXlz2BswPD6hmt++EmWIMIDUMurA=.sha256","index.md":"&5EeOHUkDadC+lJsDsKXbfrVDQdePyOHZ7KwaJtR5mrs=.sha256","todo.md":"&U6hrQ6cfJ6+Uvg+wA7ahpCQaM2XiYXKjZUOz2iZDSGM=.sha256","structure.md":"&T+CBfT9XP6ooKFvD1ZCI9hsutqsNIamfBxtAho0HtlU=.sha256","guide.md":"&SgnGL0+rjetY2o9A2+lVRbNvHIkqKwMnZr9gXWneIlc=.sha256","id_refactor.md":"&RCGnByvk25SuPQ5wywVwgOhAFIxOeoUm17sD24XSSZw=.sha256"}} | ||||
| {"type":"tildefriends-app","files":{"app.js":"&WCq6ssQedT5denXPXlz2BswPD6hmt++EmWIMIDUMurA=.sha256","index.md":"&5EeOHUkDadC+lJsDsKXbfrVDQdePyOHZ7KwaJtR5mrs=.sha256","todo.md":"&U6hrQ6cfJ6+Uvg+wA7ahpCQaM2XiYXKjZUOz2iZDSGM=.sha256","structure.md":"&T+CBfT9XP6ooKFvD1ZCI9hsutqsNIamfBxtAho0HtlU=.sha256","guide.md":"&SgnGL0+rjetY2o9A2+lVRbNvHIkqKwMnZr9gXWneIlc=.sha256","id_refactor.md":"&8yoYd14gX2Z3ppktVrPYf4qR78fuwAlvrtsWkSCkWUA=.sha256"}} | ||||
| @@ -7,7 +7,7 @@ | ||||
|  | ||||
| ## Schema | ||||
|  - separate table to discourage leakage | ||||
|  - `CREATE TABLE identities (user TEXT, public TEXT, secret TEXT);' | ||||
|  - `CREATE TABLE identities (user TEXT, public TEXT, secret TEXT);` | ||||
|  | ||||
| ## API | ||||
|  - `ssb.createIdentity()` -> `id` | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| {"type":"tildefriends-app","files":{"app.js":"&iqkvaTLEbxeintzHb07jiFncdg3N1aS8h8ZNUzy7MZI=.sha256","index.html":"&ko7qv1Ihzmw8ibXr0RinyzNBc2xNzcGDQDPO9X3JAAQ=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&DdJwZYEo7AqFyutYMvEjykoVXxdHVog0UXye6Sbo0TU=.sha256","tf-message.js":"&wyqn+8yC3O/m6LfZrR5RIfd6+g+rVCUaPCPT3FcQsPg=.sha256","tf.js":"&/yKh5E/PLaK/M3tivdldiEDnpeYQYyuLHWjjdM/QpxE=.sha256","commonmark.min.js":"&EP0OeR9zyLwZannz+0ga4s9AGES2RLvvIIQYHqqV6+k=.sha256","vue.js":"&g1wvA+yHl1sVC+eufTsg9If7ZeVyMTBU+h0tks7ZNzE=.sha256","vue-material-theme-default-dark.css":"&RP2nr+2CR18BpHHw5ST9a5GJUCOG9n0G2kuGkcQioWE=.sha256","vue-material.min.css":"&kGbUM2QgFSyHZRzqQb0b+0S3EVIlZ0AXpdiAVjIhou8=.sha256","roboto.css":"&jJv43Om673mQO5JK0jj7714s5E+5Yrf82H6LcDx7wUs=.sha256","material-icons.css":"&a28PdcVvgq/DxyIvJAx/e+ZOEtOuHnr3kjLWKyzH11M=.sha256","tf-shared.js":"&+qPP3g4CAUlkt8K4iBCZ+F5Fy6N7fu6MggvSVss2juE=.sha256"}} | ||||
| {"type":"tildefriends-app","files":{"app.js":"&iqkvaTLEbxeintzHb07jiFncdg3N1aS8h8ZNUzy7MZI=.sha256","index.html":"&ko7qv1Ihzmw8ibXr0RinyzNBc2xNzcGDQDPO9X3JAAQ=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&DdJwZYEo7AqFyutYMvEjykoVXxdHVog0UXye6Sbo0TU=.sha256","tf-message.js":"&wyqn+8yC3O/m6LfZrR5RIfd6+g+rVCUaPCPT3FcQsPg=.sha256","tf.js":"&XAGSA200wKbWaBG+aMWgoC+c2mleeAFiNbzaypDc6vU=.sha256","commonmark.min.js":"&EP0OeR9zyLwZannz+0ga4s9AGES2RLvvIIQYHqqV6+k=.sha256","vue.js":"&g1wvA+yHl1sVC+eufTsg9If7ZeVyMTBU+h0tks7ZNzE=.sha256","vue-material-theme-default-dark.css":"&RP2nr+2CR18BpHHw5ST9a5GJUCOG9n0G2kuGkcQioWE=.sha256","vue-material.min.css":"&kGbUM2QgFSyHZRzqQb0b+0S3EVIlZ0AXpdiAVjIhou8=.sha256","roboto.css":"&jJv43Om673mQO5JK0jj7714s5E+5Yrf82H6LcDx7wUs=.sha256","material-icons.css":"&a28PdcVvgq/DxyIvJAx/e+ZOEtOuHnr3kjLWKyzH11M=.sha256","tf-shared.js":"&+qPP3g4CAUlkt8K4iBCZ+F5Fy6N7fu6MggvSVss2juE=.sha256"}} | ||||
| @@ -3,6 +3,7 @@ var g_data = { | ||||
| 	whoami: null, | ||||
| 	connections: [], | ||||
| 	messages: [], | ||||
| 	messages_by_id: {}, | ||||
| 	users: {}, | ||||
| 	broadcasts: [], | ||||
| 	show_connect_dialog: false, | ||||
| @@ -42,45 +43,43 @@ function processMessages() { | ||||
| 			new_message.children = []; | ||||
| 			var found = false; | ||||
| 			var root = JSON.parse(new_message.content).root; | ||||
| 			if (root) { | ||||
| 				for (let message of g_data.messages) { | ||||
| 					if (root == message.id) { | ||||
| 						message.children.push(new_message); | ||||
| 						message.children.sort((x, y) => x.timestamp - y.timestamp); | ||||
| 						found = true; | ||||
| 					} | ||||
|  | ||||
| 			/* If we had inserted a fake root, replace it if we see the real message. */ | ||||
| 			if (g_data.messages_by_id[new_message.id]) { | ||||
| 				var old_message = g_data.messages_by_id[new_message.id]; | ||||
| 				new_message.children = old_message.children; | ||||
| 				for (let child of new_message.children) { | ||||
| 					child.parent = new_message; | ||||
| 				} | ||||
| 				if (!found) { | ||||
| 				if (old_message.parent) { | ||||
| 					old_message.parent.children = old_message.parent.children.filter(x => x != old_message); | ||||
| 				} else { | ||||
| 					g_data.messages = g_data.messages.filter(x => x != old_message); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			Vue.set(g_data.messages_by_id, new_message.id, new_message); | ||||
|  | ||||
| 			if (root) { | ||||
| 				/* If we don't know of the message's root, add it. */ | ||||
| 				if (!g_data.messages_by_id[root]) { | ||||
| 					var fake_root = { | ||||
| 						id: root, | ||||
| 						children: [new_message], | ||||
| 						children: [], | ||||
| 						timestamp: new_message.timestamp, | ||||
| 						content: '{}', | ||||
| 					}; | ||||
| 					Vue.set(g_data.messages_by_id, root, fake_root); | ||||
| 					g_data.messages.push(fake_root); | ||||
| 					g_data.messages.sort((x, y) => y.timestamp - x.timestamp); | ||||
| 					found = true; | ||||
| 				} | ||||
| 			} | ||||
| 			var removed = {}; | ||||
| 			for (let message of g_data.messages) { | ||||
| 				if (JSON.parse(message.content).root == new_message.id) { | ||||
| 					new_message.children.push(message); | ||||
| 					new_message.children.sort((x, y) => x.timestamp - y.timestamp); | ||||
| 					removed[message.id] = true; | ||||
| 				} | ||||
| 			} | ||||
| 			g_data.messages = g_data.messages.filter(x => !removed[x.id]); | ||||
| 			if (!found) { | ||||
| 				for (let message of g_data.messages) { | ||||
| 					if (message.id == new_message.id) { | ||||
| 						new_message.children = message.children; | ||||
| 						Vue.set(g_data.messages, g_data.messages.indexOf(message), new_message); | ||||
| 						found = true; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			if (!found) { | ||||
| 				var message = g_data.messages_by_id[root]; | ||||
| 				new_message.parent = message; | ||||
| 				message.children.push(new_message); | ||||
| 				message.children.sort((x, y) => x.timestamp - y.timestamp); | ||||
| 			} else { | ||||
| 				/* This is just a new message with no root.  Add it. */ | ||||
| 				g_data.messages.push(new_message); | ||||
| 				g_data.messages.sort((x, y) => y.timestamp - x.timestamp); | ||||
| 			} | ||||
| @@ -136,6 +135,14 @@ function processMessages() { | ||||
| 			g_data.load_time = (new Date() - g_load_start) / 1000; | ||||
| 			g_data.loading = false; | ||||
| 			g_data.times = event.data.times; | ||||
|  | ||||
| 			function dump(messages, indent) { | ||||
| 				for (let m of messages) { | ||||
| 					console.log(indent + m.id); | ||||
| 					dump(m.children, indent + '  '); | ||||
| 				} | ||||
| 			} | ||||
| 			dump(g_data.messages, ''); | ||||
| 		} else if (key == 'unread') { | ||||
| 			g_data.unread += event.data.unread; | ||||
| 		} else if (key == 'hash') { | ||||
| @@ -186,7 +193,7 @@ window.addEventListener('load', function() { | ||||
| 					message.mentions = Object.values(g_data.mentions); | ||||
| 				} | ||||
| 				window.parent.postMessage({appendMessage: message}, '*'); | ||||
| 				document.getElementById('post_text').value = ''; | ||||
| 				g_data.post_text = null; | ||||
| 				Vue.set(g_data, 'mentions', {}); | ||||
| 				g_data.reply_root = null; | ||||
| 				g_data.reply_branch = null; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user