diff --git a/html/src/app.js b/html/src/app.js index 7bd19ddc..616c33e2 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -3666,6 +3666,73 @@ speechSynthesis.getVoices(); } var wristFeed = []; wristFeed = wristFeed.concat(feeds.gameLog.wrist, feeds.feedTable.wrist, feeds.notificationTable.wrist, feeds.friendLogTable.wrist, feeds.playerModerationTable.wrist); + var notyFeed = []; + notyFeed = notyFeed.concat(feeds.gameLog.noty, feeds.feedTable.noty, feeds.notificationTable.noty, feeds.friendLogTable.noty, feeds.playerModerationTable.noty); + // OnPlayerJoining + var locationBias = Date.now() - 15000; //15 seconds + if ((this.isGameRunning) && (this.lastLocation.date < locationBias) && + ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'Friends') || (this.sharedFeedFilters.wrist.OnPlayerJoining === 'VIP') || + (this.sharedFeedFilters.noty.OnPlayerJoining === 'Friends') || (this.sharedFeedFilters.noty.OnPlayerJoining === 'VIP'))) { + var joiningMap = []; + var bias = new Date(Date.now() - 120000).toJSON(); //2 minutes + var feedTable = this.feedTable.data; + for (var i = feedTable.length - 1; i > -1; i--) { + var ctx = feedTable[i]; + if ((ctx.type === 'GPS') && (ctx.location[0] === this.lastLocation.location)) { + if (joiningMap[ctx.displayName]) { + continue; + } + var joining = true; + var gameLogTable = this.gameLogTable.data; + for (var k = gameLogTable.length - 1; k > -1; k--) { + var gameLogItem = gameLogTable[k]; + if (gameLogItem.type === 'Notification') { + continue; + } + if ((gameLogItem.type === 'OnPlayerJoined') && (gameLogItem.data === ctx.displayName)) { + joining = false; + break; + } + if ((gameLogItem.created_at < bias) || + (gameLogItem.type === 'Location')) { + break; + } + } + if (joining) { + for (var i = feedTable.length - 1; i > -1; i--) { + var feedItem = feedTable[i]; + if (((feedItem.type === 'Friend') || ((feedItem.type === 'Status') && (feedItem.status[0].status === 'active'))) && + (feedItem.displayName === ctx.displayName)) { + joining = false; + break; + } + if (feedItem.created_at < bias) { + break; + } + } + } + if (joining) { + var onPlayerJoining = { + ...ctx, + type: 'OnPlayerJoining' + }; + if ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'Friends') || + ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'VIP') && (ctx.isFavorite))) { + wristFeed.push(onPlayerJoining); + i++; + } + if ((this.sharedFeedFilters.noty.OnPlayerJoining === 'Friends') || + ((this.sharedFeedFilters.noty.OnPlayerJoining === 'VIP') && (ctx.isFavorite))) { + notyFeed.push(onPlayerJoining); + } + joiningMap[ctx.displayName] = ctx.created_at; + } + } + if (ctx.created_at < bias) { + break; + } + } + } wristFeed.sort(function (a, b) { if (a.created_at < b.created_at) { return 1; @@ -3676,55 +3743,6 @@ speechSynthesis.getVoices(); return 0; }); wristFeed.splice(20); - var notyFeed = []; - notyFeed = notyFeed.concat(feeds.gameLog.noty, feeds.feedTable.noty, feeds.notificationTable.noty, feeds.friendLogTable.noty, feeds.playerModerationTable.noty); - // OnPlayerJoining - if ((this.isGameRunning) && ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'Friends') || (this.sharedFeedFilters.wrist.OnPlayerJoining === 'VIP') || - (this.sharedFeedFilters.noty.OnPlayerJoining === 'Friends') || (this.sharedFeedFilters.noty.OnPlayerJoining === 'VIP'))) { - var bias = new Date(Date.now() - 120000).toJSON(); //2 minutes - var locationBias = new Date(Date.now() - 15000).toJSON(); //15 seconds - for (var i = 0; i < wristFeed.length; i++) { - var ctx = wristFeed[i]; - if ((ctx.created_at < bias) || (ctx.type === 'Location')) { - break; - } - if ((ctx.type === 'GPS') && (ctx.location[0] === this.lastLocation.location)) { - var joining = true; - for (var k = 0; k < wristFeed.length; k++) { - var feedItem = wristFeed[k]; - if ((this.hideOnPlayerJoined) && (feedItem.type === 'Location') && - (feedItem.created_at < locationBias)) { - joining = false; - break; - } - if ((feedItem.data === ctx.displayName) || - (((feedItem.type === 'Friend') || (feedItem.type === 'Status')) && (feedItem.displayName === ctx.displayName))) { - joining = false; - break; - } - if ((feedItem.created_at < bias) || - (feedItem.type === 'Location')) { - break; - } - } - if (joining) { - var onPlayerJoining = { - ...ctx, - type: 'OnPlayerJoining' - }; - if ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'Friends') || - ((this.sharedFeedFilters.wrist.OnPlayerJoining === 'VIP') && (ctx.isFavorite))) { - wristFeed.splice(i, 0, onPlayerJoining); - i++; - } - if ((this.sharedFeedFilters.noty.OnPlayerJoining === 'Friends') || - ((this.sharedFeedFilters.noty.OnPlayerJoining === 'VIP') && (ctx.isFavorite))) { - notyFeed.push(onPlayerJoining); - } - } - } - } - } notyFeed.sort(function (a, b) { if (a.created_at < b.created_at) { return 1;