forked from cory/tildefriends
Trying to improve some of my slow vue code by pre-computing some things.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3718 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
@@ -19,9 +19,32 @@ var g_data_initial = JSON.parse(JSON.stringify(g_data));
|
||||
window.addEventListener('message', function(event) {
|
||||
var key = Object.keys(event.data)[0];
|
||||
if (key == 'message') {
|
||||
g_data.messages.push(event.data[key]);
|
||||
g_data.messages.sort((x, y) => y.timestamp - x.timestamp);
|
||||
g_data.messages.splice(100);
|
||||
event.data[key].children = [];
|
||||
var found = false;
|
||||
var root = JSON.parse(event.data[key].content).root;
|
||||
if (root) {
|
||||
for (let message of g_data.messages) {
|
||||
if (root == message.id) {
|
||||
message.children.push(event.data[key]);
|
||||
message.children.sort((x, y) => y.timestamp - x.timestamp);
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
for (let message of g_data.messages) {
|
||||
if (JSON.parse(message.content).root == event.data[key].id) {
|
||||
event.data[key].children.push(message);
|
||||
event.data[key].children.sort((x, y) => y.timestamp - x.timestamp);
|
||||
g_data.messages.splice(g_data.messages.indexOf(message), 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
g_data.messages.push(event.data[key]);
|
||||
g_data.messages.sort((x, y) => y.timestamp - x.timestamp);
|
||||
}
|
||||
} else if (key + 's' in g_data && Array.isArray(g_data[key + 's'])) {
|
||||
g_data[key + 's'].push(event.data[key]);
|
||||
} else if (key == 'user') {
|
||||
@@ -44,11 +67,15 @@ window.addEventListener('message', function(event) {
|
||||
g_data.apps = event.data.apps;
|
||||
} else if (key == 'votes') {
|
||||
event.data.votes.forEach(function(vote) {
|
||||
var link = JSON.parse(vote.content).vote.link;
|
||||
var content = JSON.parse(vote.content);
|
||||
var link = content.vote.link;
|
||||
if (!g_data.votes[link]) {
|
||||
Vue.set(g_data.votes, link, []);
|
||||
Vue.set(g_data.votes, link, {});
|
||||
}
|
||||
g_data.votes[link].push(vote);
|
||||
if (!g_data.votes[link][content.vote.expression]) {
|
||||
Vue.set(g_data.votes[link], content.vote.expression, []);
|
||||
}
|
||||
g_data.votes[link][content.vote.expression].push({author: vote.author, value: content.vote.value});
|
||||
});
|
||||
} else if (key == 'clear') {
|
||||
Object.keys(g_data_initial).forEach(function(key) {
|
||||
|
Reference in New Issue
Block a user