forked from cory/tildefriends
Redo sharing apps so that they can be mentioned from regular posts.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3723 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
@ -325,17 +325,8 @@ core.register('message', async function(m) {
|
||||
} else if (m.message) {
|
||||
if (m.message.connect) {
|
||||
await ssb.connect(m.message.connect);
|
||||
} else if (m.message.post) {
|
||||
await ssb.post(m.message.post);
|
||||
} else if (m.message.appendMessage) {
|
||||
await ssb.appendMessage(m.message.appendMessage);
|
||||
} else if (m.message.share_app) {
|
||||
var app = await ssb.blobGet(m.message.share_app.app);
|
||||
app = JSON.parse(utf8Decode(app));
|
||||
app.type = 'tildefriends-app';
|
||||
app.name = m.message.share_app.name;
|
||||
app.text = m.message.share_app.text;
|
||||
await ssb.appendMessage(app);
|
||||
} else if (m.message.user) {
|
||||
await sendUser(await database("ssb"), m.message.user);
|
||||
} else if (m.message.refresh) {
|
||||
|
@ -53,8 +53,8 @@
|
||||
<div class="md-title">What's up?</div>
|
||||
</md-card-header>
|
||||
<md-card-content>
|
||||
<md-chip v-if="share_app" md-deletable @md-delete="share_app = null">
|
||||
{{share_app}}: {{apps[share_app]}}
|
||||
<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>
|
||||
<md-field>
|
||||
<label>Post a message</label>
|
||||
@ -65,7 +65,7 @@
|
||||
<md-menu>
|
||||
<md-button md-menu-trigger>Share App</md-button>
|
||||
<md-menu-content>
|
||||
<md-menu-item v-for="app in Object.keys(apps)" v-bind:key="app" @click="share_app = app">
|
||||
<md-menu-item v-for="app in Object.keys(apps)" v-bind:key="app" @click="add_app_to_mentions(app)">
|
||||
{{app}}
|
||||
</md-menu-item>
|
||||
</md-menu-content>
|
||||
|
@ -39,7 +39,10 @@ Vue.component('tf-message', {
|
||||
<div v-else>
|
||||
<div v-if="content_json && content_json.type == 'post'">
|
||||
<div v-html="this.markdown(content_json.text)"></div>
|
||||
<img v-for="mention in content_json.mentions" v-if="mention.link && typeof(mention.link) == 'string' && mention.link.startsWith('&')" :src="'/' + mention.link + '/view'"></img>
|
||||
<div v-for="mention in content_json.mentions" v-if="mention.link && typeof(mention.link) == 'string' && mention.link.startsWith('&')">
|
||||
<a v-if="mention.type == 'application/tildefriends'" :href="'/' + mention.link + '/'" target="_top">{{mention.name}}</a>
|
||||
<img v-else :src="'/' + mention.link + '/view'"></img>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="content_json && content_json.type == 'tildefriends-app'">
|
||||
<div v-html="this.markdown(content_json.text)"></div>
|
||||
|
@ -11,7 +11,7 @@ var g_data = {
|
||||
pubs: [],
|
||||
votes: {},
|
||||
apps: {},
|
||||
share_app: null,
|
||||
mentions: {},
|
||||
unread: 0,
|
||||
};
|
||||
|
||||
@ -117,16 +117,16 @@ window.addEventListener('load', function() {
|
||||
data: g_data,
|
||||
methods: {
|
||||
post_message: function() {
|
||||
if (g_data.share_app) {
|
||||
window.parent.postMessage({share_app: {
|
||||
app: g_data.apps[g_data.share_app],
|
||||
name: g_data.share_app,
|
||||
text: document.getElementById('post_text').value,
|
||||
}}, '*');
|
||||
} else {
|
||||
window.parent.postMessage({post: document.getElementById('post_text').value}, '*');
|
||||
var message = {
|
||||
type: 'post',
|
||||
text: document.getElementById('post_text').value,
|
||||
};
|
||||
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, {});
|
||||
},
|
||||
ssb_connect: function(connection) {
|
||||
window.parent.postMessage({connect: connection}, '*');
|
||||
@ -141,6 +141,16 @@ window.addEventListener('load', function() {
|
||||
refresh: function() {
|
||||
window.parent.postMessage({refresh: true}, '*');
|
||||
},
|
||||
add_app_to_mentions: function(app) {
|
||||
Vue.set(g_data.mentions, g_data.apps[app], {
|
||||
link: g_data.apps[app],
|
||||
name: app,
|
||||
type: 'application/tildefriends',
|
||||
});
|
||||
},
|
||||
remove_from_mentions: function(link) {
|
||||
Vue.delete(g_data.mentions, link);
|
||||
},
|
||||
}
|
||||
});
|
||||
window.parent.postMessage('ready', '*');
|
||||
|
Reference in New Issue
Block a user