diff --git a/html/src/app.js b/html/src/app.js
index 88fa5f0e..6a73c86c 100644
--- a/html/src/app.js
+++ b/html/src/app.js
@@ -4801,7 +4801,9 @@ speechSynthesis.getVoices();
switch (gameLog.type) {
case 'location':
- this.lastLocation = gameLog.location;
+ if (this.isGameRunning) {
+ this.lastLocation = gameLog.location;
+ }
tableData = {
created_at: gameLog.dt,
type: 'Location',
@@ -5968,6 +5970,8 @@ speechSynthesis.getVoices();
sharedFeedFilters.noty.Status = 'Off';
sharedFeedFilters.noty.invite = 'Friends';
sharedFeedFilters.noty.requestInvite = 'Friends';
+ sharedFeedFilters.noty.inviteResponse = 'Friends';
+ sharedFeedFilters.noty.requestInviteResponse = 'Friends';
sharedFeedFilters.noty.friendRequest = 'On';
sharedFeedFilters.noty.Friend = 'On';
sharedFeedFilters.noty.Unfriend = 'On';
@@ -5988,6 +5992,8 @@ speechSynthesis.getVoices();
sharedFeedFilters.wrist.Status = 'Friends';
sharedFeedFilters.wrist.invite = 'Friends';
sharedFeedFilters.wrist.requestInvite = 'Friends';
+ sharedFeedFilters.wrist.inviteResponse = 'Friends';
+ sharedFeedFilters.wrist.requestInviteResponse = 'Friends';
sharedFeedFilters.wrist.friendRequest = 'On';
sharedFeedFilters.wrist.Friend = 'On';
sharedFeedFilters.wrist.Unfriend = 'On';
diff --git a/html/src/app.scss b/html/src/app.scss
index 16cb2184..9232ee52 100644
--- a/html/src/app.scss
+++ b/html/src/app.scss
@@ -516,7 +516,7 @@ i.x-user-status.busy {
.toggle-list .toggle-name {
display: inline-block;
- min-width: 100px;
+ min-width: 140px;
padding: 2px 5px 2px 0;
vertical-align: top;
text-align: right;
diff --git a/html/src/index.pug b/html/src/index.pug
index 380c38bb..201b26bc 100644
--- a/html/src/index.pug
+++ b/html/src/index.pug
@@ -1343,7 +1343,7 @@ html
el-button(type="primary" size="small" style="margin-left:auto" @click="notificationPositionDialog.visible = false") OK
//- dialog: Noty feed filters
- el-dialog.x-dialog(ref="notyFeedFiltersDialog" :visible.sync="notyFeedFiltersDialog.visible" title="Notification Filters" width="400px")
+ el-dialog.x-dialog(ref="notyFeedFiltersDialog" :visible.sync="notyFeedFiltersDialog.visible" title="Notification Filters" width="450px")
div.toggle-list
div
span.toggle-name OnPlayerJoining
@@ -1372,6 +1372,12 @@ html
div
span.toggle-name Request Invite
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGrouprequestInvite" v-model="sharedFeedFilters.noty.requestInvite" class="toggle-switch")
+ div
+ span.toggle-name Invite Response
+ toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGroupinviteResponse" v-model="sharedFeedFilters.noty.inviteResponse" class="toggle-switch")
+ div
+ span.toggle-name Request Invite Response
+ toggle-switch(:options="toggleSwitchOptionsFriends" group="switchNotyGrouprequestInviteResponse" v-model="sharedFeedFilters.noty.requestInviteResponse" class="toggle-switch")
div
span.toggle-name Friend Request
toggle-switch(:options="toggleSwitchOptionsOn" group="switchNotyGrouprequestfriendRequest" v-model="sharedFeedFilters.noty.friendRequest" class="toggle-switch")
@@ -1407,7 +1413,7 @@ html
el-button(type="primary" size="small" style="margin-left:10px" @click="saveSharedFeedFilters") Save
//- dialog: wrist feed filters
- el-dialog.x-dialog(ref="wristFeedFiltersDialog" :visible.sync="wristFeedFiltersDialog.visible" title="Wrist Feed Filters" width="400px")
+ el-dialog.x-dialog(ref="wristFeedFiltersDialog" :visible.sync="wristFeedFiltersDialog.visible" title="Wrist Feed Filters" width="450px")
div.toggle-list
div
span.toggle-name Self Location
@@ -1439,6 +1445,12 @@ html
div
span.toggle-name Request Invite
toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGrouprequestInvite" v-model="sharedFeedFilters.wrist.requestInvite" class="toggle-switch")
+ div
+ span.toggle-name Invite Response
+ toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGroupinviteResponse" v-model="sharedFeedFilters.wrist.inviteResponse" class="toggle-switch")
+ div
+ span.toggle-name Request Invite Response
+ toggle-switch(:options="toggleSwitchOptionsFriends" group="switchWristGrouprequestInviteResponse" v-model="sharedFeedFilters.wrist.requestInviteResponse" class="toggle-switch")
div
span.toggle-name Friend Request
toggle-switch(:options="toggleSwitchOptionsOn" group="switchWristGrouprequestfriendRequest" v-model="sharedFeedFilters.wrist.friendRequest" class="toggle-switch")
diff --git a/html/src/vr.js b/html/src/vr.js
index 8f9a7476..5314877b 100644
--- a/html/src/vr.js
+++ b/html/src/vr.js
@@ -827,7 +827,7 @@ speechSynthesis.getVoices();
}
this.lastFeedEntry = feeds[0];
- if (isGameRunning) {
+ if (this.isGameRunning) {
// OnPlayerJoining
var bias = new Date(Date.now() - 120000).toJSON();
for (var i = 0; i < feeds.length; i++) {
@@ -862,22 +862,22 @@ speechSynthesis.getVoices();
}
}
}
+ }
- // on Location change remove OnPlayerJoined
- if (this.config.hideOnPlayerJoined) {
- for (i = 0; i < feeds.length; i++) {
- var ctx = feeds[i];
- if (ctx.type === 'Location') {
- var bias = new Date(Date.parse(ctx.created_at) + 10000).toJSON();
- for (var k = i - 1; k > 0; k--) {
- var feedItem = feeds[k];
- if (feedItem.type === 'OnPlayerJoined') {
- feeds.splice(k, 1);
- i--;
- }
- if ((feedItem.created_at > bias) || (feedItem.type === 'Location')) {
- break;
- }
+ // on Location change remove OnPlayerJoined
+ if (this.config.hideOnPlayerJoined) {
+ for (i = 0; i < feeds.length; i++) {
+ var ctx = feeds[i];
+ if (ctx.type === 'Location') {
+ var bias = new Date(Date.parse(ctx.created_at) + 10000).toJSON();
+ for (var k = i - 1; k > 0; k--) {
+ var feedItem = feeds[k];
+ if (feedItem.type === 'OnPlayerJoined') {
+ feeds.splice(k, 1);
+ i--;
+ }
+ if ((feedItem.created_at > bias) || (feedItem.type === 'Location')) {
+ break;
}
}
}
@@ -962,11 +962,18 @@ speechSynthesis.getVoices();
}
var bias = new Date(Date.now() - 60000).toJSON();
var noty = {};
+ var messageList = [ 'inviteMessage', 'requestMessage', 'responseMessage' ];
for (var i = 0; i < notyToPlay.length; i++) {
noty = notyToPlay[i];
if (noty.created_at < bias) {
continue;
}
+ var message = '';
+ for (i = 0; i < messageList.length; i++) {
+ if (typeof noty.details[messageList[i]] !== 'undefined') {
+ message = noty.details[messageList[i]];
+ }
+ }
if ((this.config.overlayNotifications) && (!this.isGameNoVR) && (this.isGameRunning)) {
var text = '';
switch (noty.type) {
@@ -992,10 +999,16 @@ speechSynthesis.getVoices();
text = `${noty.displayName} status is now ${noty.status[0].status} ${noty.status[0].statusDescription}`;
break;
case 'invite':
- text = `${noty.senderUsername} has invited you to ${noty.details.worldName}`;
+ text = `${noty.senderUsername} has invited you to ${noty.details.worldName} ${message}`;
break;
case 'requestInvite':
- text = `${noty.senderUsername} has requested an invite`;
+ text = `${noty.senderUsername} has requested an invite ${message}`;
+ break;
+ case 'inviteResponse':
+ text = `${noty.senderUsername} has responded to your invite ${message}`;
+ break;
+ case 'requestInviteResponse':
+ text = `${noty.senderUsername} has responded to your invite request ${message}`;
break;
case 'friendRequest':
text = `${noty.senderUsername} has sent you a friend request`;
@@ -1064,10 +1077,16 @@ speechSynthesis.getVoices();
this.speak(`${noty.displayName} status is now ${noty.status[0].status} ${noty.status[0].statusDescription}`);
break;
case 'invite':
- this.speak(`${noty.senderUsername} has invited you to ${noty.details.worldName}`);
+ this.speak(`${noty.senderUsername} has invited you to ${noty.details.worldName} ${message}`);
break;
case 'requestInvite':
- this.speak(`${noty.senderUsername} has requested an invite`);
+ this.speak(`${noty.senderUsername} has requested an invite ${message}`);
+ break;
+ case 'inviteResponse':
+ this.speak(`${noty.senderUsername} has responded to your invite ${message}`);
+ break;
+ case 'requestInviteResponse':
+ this.speak(`${noty.senderUsername} has responded to your invite request ${message}`);
break;
case 'friendRequest':
this.speak(`${noty.senderUsername} has sent you a friend request`);
@@ -1142,10 +1161,16 @@ speechSynthesis.getVoices();
AppApi.DesktopNotification(noty.displayName, `status is now ${noty.status[0].status} ${noty.status[0].statusDescription}`, imageURL);
break;
case 'invite':
- AppApi.DesktopNotification(noty.senderUsername, `has invited you to ${noty.details.worldName}`, imageURL);
+ AppApi.DesktopNotification(noty.senderUsername, `has invited you to ${noty.details.worldName} ${message}`, imageURL);
break;
case 'requestInvite':
- AppApi.DesktopNotification(noty.senderUsername, 'has requested an invite', imageURL);
+ AppApi.DesktopNotification(noty.senderUsername, `has requested an invite ${message}`, imageURL);
+ break;
+ case 'inviteResponse':
+ AppApi.DesktopNotification(noty.senderUsername, `has responded to your invite ${message}`, imageURL);
+ break;
+ case 'requestInviteResponse':
+ AppApi.DesktopNotification(noty.senderUsername, `has responded to your invite request ${message}`, imageURL);
break;
case 'friendRequest':
AppApi.DesktopNotification(noty.senderUsername, 'has sent you a friend request', imageURL);
diff --git a/html/src/vr.pug b/html/src/vr.pug
index 0c1ca683..d3933861 100644
--- a/html/src/vr.pug
+++ b/html/src/vr.pug
@@ -62,12 +62,22 @@ html
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
- | 📨 #[span.name(v-text="feed.senderUsername")] #[location(:location="feed.details.worldId")]
+ | 📨 #[span.name(v-text="feed.senderUsername")] #[location(:location="feed.details.worldId")] #[span(v-text="feed.details.inviteMessage")]
div(v-else-if="feed.type === 'requestInvite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
- | 📩 #[span.name(v-text="feed.senderUsername")]
+ | 📩 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.requestMessage")]
+ div(v-else-if="feed.type === 'inviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
+ .detail
+ span.extra
+ span.time {{ feed.created_at | formatDate('HH:MI') }}
+ | 💬 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.responseMessage")]
+ div(v-else-if="feed.type === 'requestInviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
+ .detail
+ span.extra
+ span.time {{ feed.created_at | formatDate('HH:MI') }}
+ | 💬 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.details.responseMessage")]
div(v-else-if="feed.type === 'friendRequest'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
@@ -164,12 +174,22 @@ html
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
- | #[span.name(v-text="feed.senderUsername")] has invited you to #[location(:location="feed.details.worldId")]
+ | #[span.name(v-text="feed.senderUsername")] has invited you to #[location(:location="feed.details.worldId")] #[span(v-text="feed.details.inviteMessage")]
div(v-else-if="feed.type === 'requestInvite'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra
span.time {{ feed.created_at | formatDate('HH:MI') }}
- | #[span.name(v-text="feed.senderUsername")] has requested an invite
+ | #[span.name(v-text="feed.senderUsername")] has requested an invite #[span(v-text="feed.details.requestMessage")]
+ div(v-else-if="feed.type === 'inviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
+ .detail
+ span.extra
+ span.time {{ feed.created_at | formatDate('HH:MI') }}
+ | #[span.name(v-text="feed.senderUsername")] has responded to your invite #[span(v-text="feed.details.responseMessage")]
+ div(v-else-if="feed.type === 'requestInviteResponse'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
+ .detail
+ span.extra
+ span.time {{ feed.created_at | formatDate('HH:MI') }}
+ | #[span.name(v-text="feed.senderUsername")] has responded to your invite request #[span(v-text="feed.details.responseMessage")]
div(v-else-if="feed.type === 'friendRequest'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
.detail
span.extra