Support replying to a thread.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3726 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		@@ -1 +1 @@
 | 
			
		||||
{"type":"tildefriends-app","files":{"app.js":"&W9Hxi6cX37sg8daxdiuvZMLJj0FJLoVAYE65T/X6Yp8=.sha256","index.html":"&mQ2fDeVm6D6+pwmF/6K04H1q5saq/Fl6Cq23UKlvJls=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&KmUw2D8yehJU95RQ+8DWP69w/5wK7yWR6fUc5/LIpio=.sha256","tf-message.js":"&c7NMlMBi2UZE7ChUXd3h4ih0q2myuHhp3PpNUfBRvHM=.sha256","tf.js":"&I45p0703bQNAWq/5wFHdVrwM3z+5FL4K8QmDTfSnBAU=.sha256","commonmark.min.js":"&5x6ek3tFrKTZX6hXNNyFsjmhvrjmWpUkwuuaiyVV1Us=.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"}}
 | 
			
		||||
{"type":"tildefriends-app","files":{"app.js":"&W9Hxi6cX37sg8daxdiuvZMLJj0FJLoVAYE65T/X6Yp8=.sha256","index.html":"&dyJyLJJqx+qcGXY9CYLY6Jxj/T/ZK+Z8ARa8MhLVhJI=.sha256","vue-material.js":"&K5cdLqXYCENPak/TCINHQhyJhpS4G9DlZHGwoh/LF2g=.sha256","tf-user.js":"&KmUw2D8yehJU95RQ+8DWP69w/5wK7yWR6fUc5/LIpio=.sha256","tf-message.js":"&oQggZN26PtRi4Ce9HY8TKVJ9jRrYWLRE5tN+3yHwEJE=.sha256","tf.js":"&xNEPeISBMcsMcE7o1XFrj5JT5z+UMEGPajLQYZYfh2k=.sha256","commonmark.min.js":"&5x6ek3tFrKTZX6hXNNyFsjmhvrjmWpUkwuuaiyVV1Us=.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"}}
 | 
			
		||||
@@ -53,6 +53,7 @@
 | 
			
		||||
							<div class="md-title">What's up?</div>
 | 
			
		||||
						</md-card-header>
 | 
			
		||||
						<md-card-content>
 | 
			
		||||
							<md-chip v-if="reply_root || reply_branch" md-deletable @md-delete="reply_root = null; reply_branch = null">Replying in thread {{reply_root}} to message {{reply_branch}}</md-chip>
 | 
			
		||||
							<md-chip v-for="link in Object.keys(mentions)" v-bind:key="link" md-deletable @md-delete="remove_from_mentions(link)">
 | 
			
		||||
								{{mentions[link].name}}: {{link}}
 | 
			
		||||
							</md-chip>
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@ Vue.component('tf-message', {
 | 
			
		||||
			var writer = new commonmark.HtmlRenderer();
 | 
			
		||||
			return writer.render(reader.parse(md));
 | 
			
		||||
		},
 | 
			
		||||
		set_reply: function() {
 | 
			
		||||
			g_data.reply_root = this.content_json.root || this.message.id;
 | 
			
		||||
			g_data.reply_branch = this.message.id;
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	template: `<md-app class="md-elevation-8" style="margin: 1em" v-if="!content_json || ['pub', 'vote'].indexOf(content_json.type) == -1">
 | 
			
		||||
<md-app-toolbar>
 | 
			
		||||
@@ -30,6 +34,7 @@ Vue.component('tf-message', {
 | 
			
		||||
			<md-menu-content>
 | 
			
		||||
				<md-menu-item v-if="!showRaw" v-on:click="showRaw = true">View Raw</md-menu-item>
 | 
			
		||||
				<md-menu-item v-else v-on:click="showRaw = false">View Message</md-menu-item>
 | 
			
		||||
				<md-menu-item @click="set_reply()">Reply</md-menu-item>
 | 
			
		||||
			</md-menu-content>
 | 
			
		||||
		</md-menu>
 | 
			
		||||
	</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,8 @@ var g_data = {
 | 
			
		||||
	pubs: [],
 | 
			
		||||
	votes: {},
 | 
			
		||||
	apps: {},
 | 
			
		||||
	reply_root: null,
 | 
			
		||||
	reply_branch: null,
 | 
			
		||||
	mentions: {},
 | 
			
		||||
	unread: 0,
 | 
			
		||||
};
 | 
			
		||||
@@ -121,12 +123,18 @@ window.addEventListener('load', function() {
 | 
			
		||||
					type: 'post',
 | 
			
		||||
					text: document.getElementById('post_text').value,
 | 
			
		||||
				};
 | 
			
		||||
				if (g_data.reply_root || g_data.reply_branch) {
 | 
			
		||||
					message.root = g_data.reply_root;
 | 
			
		||||
					message.branch = g_data.reply_branch;
 | 
			
		||||
				}
 | 
			
		||||
				if (Object.keys(g_data.mentions).length) {
 | 
			
		||||
					message.mentions = Object.values(g_data.mentions);
 | 
			
		||||
				}
 | 
			
		||||
				window.parent.postMessage({appendMessage: message}, '*');
 | 
			
		||||
				document.getElementById('post_text').value = '';
 | 
			
		||||
				Vue.set(g_data, mentions, {});
 | 
			
		||||
				g_data.reply_root = null;
 | 
			
		||||
				g_data.reply_branch = null;
 | 
			
		||||
			},
 | 
			
		||||
			ssb_connect: function(connection) {
 | 
			
		||||
				window.parent.postMessage({connect: connection}, '*');
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user