diff --git a/src/app.js b/src/app.js index 33db937b..bc2bc058 100644 --- a/src/app.js +++ b/src/app.js @@ -359,7 +359,10 @@ console.log(`isLinux: ${LINUX}`); showGallerySelectDialog: this.showGallerySelectDialog, showGalleryDialog: this.showGalleryDialog, getImageUrlFromImageId: this.getImageUrlFromImageId, - getAvatarGallery: this.getAvatarGallery + getAvatarGallery: this.getAvatarGallery, + inviteImageUpload: this.inviteImageUpload, + clearInviteImageUpload: this.clearInviteImageUpload, + isLinux: this.isLinux }; }, el: '#root', diff --git a/src/components/dialogs/InviteDialog/EditAndSendInviteDialog.vue b/src/components/dialogs/InviteDialog/EditAndSendInviteDialog.vue index 3399fa48..c00e92d7 100644 --- a/src/components/dialogs/InviteDialog/EditAndSendInviteDialog.vue +++ b/src/components/dialogs/InviteDialog/EditAndSendInviteDialog.vue @@ -42,6 +42,7 @@ const $message = instance.proxy.$message; const API = inject('API'); + const clearInviteImageUpload = inject('clearInviteImageUpload'); const props = defineProps({ editAndSendInviteDialog: { @@ -181,7 +182,7 @@ notificationRequest .sendRequestInvitePhoto(I.params, I.userId) .catch((err) => { - this.clearInviteImageUpload(); + clearInviteImageUpload(); throw err; }) .then((args) => { diff --git a/src/components/dialogs/InviteDialog/InviteDialog.vue b/src/components/dialogs/InviteDialog/InviteDialog.vue index 8610e642..927f114f 100644 --- a/src/components/dialogs/InviteDialog/InviteDialog.vue +++ b/src/components/dialogs/InviteDialog/InviteDialog.vue @@ -160,7 +160,7 @@ :send-invite-dialog="sendInviteDialog" :invite-dialog="inviteDialog" :upload-image="uploadImage" - @close-invite-dialog="closeInviteDialog" /> + @closeInviteDialog="closeInviteDialog" /> @@ -180,6 +180,7 @@ const userStatusClass = inject('userStatusClass'); const userImage = inject('userImage'); const API = inject('API'); + const clearInviteImageUpload = inject('clearInviteImageUpload'); const props = defineProps({ inviteDialog: { @@ -209,10 +210,14 @@ } }); - const emit = defineEmits(['clearInviteImageUpload', 'inviteImageUpload', 'closeInviteDialog']); + const emit = defineEmits(['closeInviteDialog']); const sendInviteDialogVisible = ref(false); - const sendInviteDialog = ref({ message: '', messageSlot: 0, userId: '', messageType: '', params: {} }); + const sendInviteDialog = ref({ + messageSlot: {}, + userId: '', + params: {} + }); function closeInviteDialog() { emit('closeInviteDialog'); @@ -222,17 +227,13 @@ sendInviteDialog.value = { params, userId, - messageType: 'invite' + messageSlot: {} }; inviteMessagesRequest.refreshInviteMessageTableData('message'); clearInviteImageUpload(); sendInviteDialogVisible.value = true; } - function clearInviteImageUpload() { - emit('clearInviteImageUpload'); - } - function addSelfToInvite() { const D = props.inviteDialog; if (!D.userIds.includes(API.currentUser.id)) { diff --git a/src/components/dialogs/InviteDialog/SendInviteConfirmDialog.vue b/src/components/dialogs/InviteDialog/SendInviteConfirmDialog.vue index fea91f0d..5b155da6 100644 --- a/src/components/dialogs/InviteDialog/SendInviteConfirmDialog.vue +++ b/src/components/dialogs/InviteDialog/SendInviteConfirmDialog.vue @@ -33,6 +33,7 @@ const $message = instance.proxy.$message; const API = inject('API'); + const clearInviteImageUpload = inject('clearInviteImageUpload'); const props = defineProps({ visible: { @@ -62,6 +63,8 @@ function sendInviteConfirm() { const D = props.sendInviteDialog; const J = props.inviteDialog; + const messageType = D.messageSlot.messageType; + const slot = D.messageSlot.slot; if (J?.visible) { const inviteLoop = () => { if (J.userIds.length > 0) { @@ -82,7 +85,7 @@ instanceId: J.worldId, worldId: J.worldId, worldName: J.worldName, - messageSlot: D.messageSlot + messageSlot: slot }, receiverUserId ) @@ -94,7 +97,7 @@ instanceId: J.worldId, worldId: J.worldId, worldName: J.worldName, - messageSlot: D.messageSlot + messageSlot: slot }, receiverUserId ) @@ -110,8 +113,8 @@ } }; inviteLoop(); - } else if (D.messageType === 'invite') { - D.params.messageSlot = D.messageSlot; + } else if (messageType === 'invite') { + D.params.messageSlot = slot; if (props.uploadImage) { notificationRequest .sendInvitePhoto(D.params, D.userId) @@ -139,13 +142,13 @@ return args; }); } - } else if (D.messageType === 'requestInvite') { - D.params.requestSlot = D.messageSlot; + } else if (messageType === 'request') { + D.params.requestSlot = slot; if (props.uploadImage) { notificationRequest .sendRequestInvitePhoto(D.params, D.userId) .catch((err) => { - this.clearInviteImageUpload(); + clearInviteImageUpload(); throw err; }) .then((args) => { diff --git a/src/components/dialogs/InviteDialog/SendInviteDialog.vue b/src/components/dialogs/InviteDialog/SendInviteDialog.vue index 8198a2e7..8a43ec55 100644 --- a/src/components/dialogs/InviteDialog/SendInviteDialog.vue +++ b/src/components/dialogs/InviteDialog/SendInviteDialog.vue @@ -1,7 +1,7 @@ @@ -98,6 +98,7 @@ const { t } = useI18n(); const API = inject('API'); + const inviteImageUpload = inject('inviteImageUpload'); const props = defineProps({ sendInviteDialogVisible: { @@ -123,34 +124,25 @@ } }); - const emit = defineEmits(['inviteImageUpload', 'update:sendInviteDialogVisible', 'closeInviteDialog']); + const emit = defineEmits(['closeInviteDialog', 'update:sendInviteDialogVisible']); const isSendInviteConfirmDialogVisible = ref(false); const editAndSendInviteDialog = ref({ visible: false, - messageType: '', - newMessage: '', - inviteMessage: {} + newMessage: '' }); - function inviteImageUpload(event) { - emit('inviteImageUpload', event); - } - - function showSendInviteConfirmDialog(val) { + function showSendInviteConfirmDialog(row) { + props.sendInviteDialog.messageSlot = row; isSendInviteConfirmDialogVisible.value = true; - // - props.sendInviteDialog.messageSlot = val.slot; } - function showEditAndSendInviteDialog(messageType, inviteMessage) { - // todo + function showEditAndSendInviteDialog(row) { + props.sendInviteDialog.messageSlot = row; editAndSendInviteDialog.value = { newMessage: inviteMessage.message, - visible: true, - messageType, - inviteMessage + visible: true }; } diff --git a/src/components/dialogs/LaunchDialog.vue b/src/components/dialogs/LaunchDialog.vue index f832ab1d..5a734434 100644 --- a/src/components/dialogs/LaunchDialog.vue +++ b/src/components/dialogs/LaunchDialog.vue @@ -84,7 +84,7 @@ :active-friends="activeFriends" :invite-message-table="inviteMessageTable" :upload-image="uploadImage" - @close-invite-dialog="closeInviteDialog" /> + @closeInviteDialog="closeInviteDialog" /> diff --git a/src/components/dialogs/NewInstanceDialog.vue b/src/components/dialogs/NewInstanceDialog.vue index 01b3f51b..97216155 100644 --- a/src/components/dialogs/NewInstanceDialog.vue +++ b/src/components/dialogs/NewInstanceDialog.vue @@ -490,7 +490,7 @@ :active-friends="activeFriends" :invite-message-table="inviteMessageTable" :upload-image="uploadImage" - @close-invite-dialog="closeInviteDialog" /> + @closeInviteDialog="closeInviteDialog" /> diff --git a/src/components/dialogs/UserDialog/SendInviteRequestDialog.vue b/src/components/dialogs/UserDialog/SendInviteRequestDialog.vue index eb6243f5..4d3f9231 100644 --- a/src/components/dialogs/UserDialog/SendInviteRequestDialog.vue +++ b/src/components/dialogs/UserDialog/SendInviteRequestDialog.vue @@ -36,7 +36,7 @@ type="text" icon="el-icon-edit" size="mini" - @click.stop="showEditAndSendInviteDialog('request', scope.row)"> + @click.stop="showEditAndSendInviteDialog(scope.row)"> @@ -73,6 +73,7 @@ const { t } = useI18n(); const API = inject('API'); + const inviteImageUpload = inject('inviteImageUpload'); const props = defineProps({ sendInviteRequestDialogVisible: { @@ -98,33 +99,25 @@ } }); - const emit = defineEmits(['inviteImageUpload', 'update:sendInviteRequestDialogVisible', 'closeInviteDialog']); + const emit = defineEmits(['update:sendInviteRequestDialogVisible', 'closeInviteDialog']); const isSendInviteConfirmDialogVisible = ref(false); const editAndSendInviteDialog = ref({ visible: false, - messageType: '', - newMessage: '', - inviteMessage: {} + newMessage: '' }); - function inviteImageUpload(event) { - emit('inviteImageUpload', event); - } - - function showSendInviteConfirmDialog(val) { + function showSendInviteConfirmDialog(row) { + props.sendInviteDialog.messageSlot = row; isSendInviteConfirmDialogVisible.value = true; - // - props.sendInviteDialog.messageSlot = val.slot; } - function showEditAndSendInviteDialog(messageType, inviteMessage) { + function showEditAndSendInviteDialog(row) { + props.sendInviteDialog.messageSlot = row; editAndSendInviteDialog.value = { - newMessage: inviteMessage.message, - visible: true, - messageType, - inviteMessage + newMessage: row.message, + visible: true }; } diff --git a/src/components/dialogs/UserDialog/UserDialog.vue b/src/components/dialogs/UserDialog/UserDialog.vue index 67c24d87..a7af7b13 100644 --- a/src/components/dialogs/UserDialog/UserDialog.vue +++ b/src/components/dialogs/UserDialog/UserDialog.vue @@ -553,7 +553,7 @@ @@ -439,6 +439,7 @@ const showGroupDialog = inject('showGroupDialog'); const showUserDialog = inject('showUserDialog'); const showFullscreenImageDialog = inject('showFullscreenImageDialog'); + const clearInviteImageUpload = inject('clearInviteImageUpload'); const props = defineProps({ menuActiveIndex: { @@ -478,11 +479,8 @@ } }); - const emit = defineEmits(['inviteImageUpload', 'clearInviteImageUpload']); - const sendInviteResponseDialog = ref({ - message: '', - messageSlot: 0, + messageSlot: {}, invite: {} }); @@ -490,10 +488,6 @@ const sendInviteRequestResponseDialogVisible = ref(false); - function inviteImageUpload(event) { - emit('inviteImageUpload', event); - } - function saveTableFilters() { configRepository.setString( 'VRCX_notificationTableFilters', @@ -540,18 +534,13 @@ } function showSendInviteResponseDialog(invite) { - sendInviteResponseDialog.value = { - invite - }; + sendInviteResponseDialog.value.invite = invite; + sendInviteResponseDialog.value.messageSlot = {}; inviteMessagesRequest.refreshInviteMessageTableData('response'); clearInviteImageUpload(); sendInviteResponseDialogVisible.value = true; } - function clearInviteImageUpload() { - emit('clearInviteImageUpload'); - } - function acceptRequestInvite(row) { $confirm('Continue? Send Invite', 'Confirm', { confirmButtonText: 'Confirm', @@ -594,9 +583,8 @@ } function showSendInviteRequestResponseDialog(invite) { - sendInviteResponseDialog.value = { - invite - }; + sendInviteResponseDialog.value.invite = invite; + sendInviteResponseDialog.value.messageSlot = {}; inviteMessagesRequest.refreshInviteMessageTableData('requestResponse'); clearInviteImageUpload(); sendInviteRequestResponseDialogVisible.value = true; diff --git a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue index a5feb348..7918c127 100644 --- a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue +++ b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue @@ -61,11 +61,12 @@ } async function saveEditAndSendInviteResponse() { + const I = props.sendInviteResponseDialog; const D = props.editAndSendInviteResponseDialog; D.visible = false; - const messageType = D.messageType; - const slot = D.inviteMessage.slot; - if (D.inviteMessage.message !== D.newMessage) { + const messageType = I.messageSlot.messageType; + const slot = I.messageSlot.slot; + if (I.messageSlot.message !== D.newMessage) { const params = { message: D.newMessage }; @@ -88,7 +89,6 @@ return args; }); } - const I = props.sendInviteResponseDialog; const params = { responseSlot: slot, rsvp: true @@ -107,9 +107,10 @@ message: 'Invite response message sent', type: 'success' }); - - emit('closeInviteDialog'); return args; + }) + .finally(() => { + emit('closeInviteDialog'); }); } else { notificationRequest @@ -125,8 +126,10 @@ message: 'Invite response message sent', type: 'success' }); - emit('closeInviteDialog'); return args; + }) + .finally(() => { + emit('closeInviteDialog'); }); } } diff --git a/src/views/Notifications/dialogs/SendInviteRequestResponseDialog.vue b/src/views/Notifications/dialogs/SendInviteRequestResponseDialog.vue index 1c2779ff..dfac20fc 100644 --- a/src/views/Notifications/dialogs/SendInviteRequestResponseDialog.vue +++ b/src/views/Notifications/dialogs/SendInviteRequestResponseDialog.vue @@ -33,7 +33,7 @@ type="text" icon="el-icon-edit" size="mini" - @click.stop="showEditAndSendInviteResponseDialog('requestResponse', scope.row)"> + @click.stop="showEditAndSendInviteResponseDialog(scope.row)"> @@ -50,11 +50,13 @@ + :send-invite-response-dialog.sync="sendInviteResponseDialog" + @closeInviteDialog="closeInviteDialog" /> + :send-invite-response-confirm-dialog="sendInviteResponseConfirmDialog" + @closeInviteDialog="closeInviteDialog" /> @@ -67,6 +69,7 @@ const { t } = useI18n(); const API = inject('API'); + const inviteImageUpload = inject('inviteImageUpload'); defineProps({ sendInviteRequestResponseDialogVisible: { @@ -82,12 +85,10 @@ } }); - const emit = defineEmits(['update:sendInviteRequestResponseDialogVisible', 'inviteImageUpload']); + const emit = defineEmits(['update:sendInviteRequestResponseDialogVisible']); const editAndSendInviteResponseDialog = ref({ visible: false, - inviteMessage: {}, - messageType: '', newMessage: '' }); @@ -96,27 +97,25 @@ }); const sendInviteResponseDialog = ref({ - message: '', - messageSlot: 0, + messageSlot: {}, invite: {} }); - function inviteImageUpload(event) { - emit('inviteImageUpload', event); + function showEditAndSendInviteResponseDialog(row) { + props.sendInviteResponseDialog.messageSlot = row; + editAndSendInviteResponseDialog.value = { + newMessage: messageSlot.message, + visible: true + }; } function showSendInviteResponseConfirmDialog(row) { + props.sendInviteResponseDialog.messageSlot = row; sendInviteResponseConfirmDialog.value.visible = true; - sendInviteResponseDialog.value.messageSlot = row.slot; } - function showEditAndSendInviteResponseDialog(messageType, inviteMessage) { - editAndSendInviteResponseDialog.value = { - newMessage: inviteMessage.message, - visible: true, - messageType, - inviteMessage - }; + function closeInviteDialog() { + cancelSendInviteRequestResponse(); } function cancelSendInviteRequestResponse() { diff --git a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue index 012325a0..2565c4d4 100644 --- a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue +++ b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue @@ -31,16 +31,16 @@ const $message = instance.proxy.$message; const props = defineProps({ - sendInviteResponseConfirmDialog: { + sendInviteResponseDialog: { type: Object, - required: true + default: () => ({}) }, uploadImage: { type: String }, - sendInviteResponseDialog: { + sendInviteResponseConfirmDialog: { type: Object, - default: () => ({}) + required: true } }); @@ -48,17 +48,19 @@ function cancelInviteResponseConfirm() { emit('update:sendInviteResponseConfirmDialog', { visible: false }); + // TODO: temp fix to close dialog + props.sendInviteResponseConfirmDialog.visible = false; } function sendInviteResponseConfirm() { const D = props.sendInviteResponseDialog; const params = { - responseSlot: D.messageSlot, + responseSlot: D.messageSlot.slot, rsvp: true }; if (props.uploadImage) { notificationRequest - .sendInviteResponsePhoto(params, D.invite.id, D.messageType) + .sendInviteResponsePhoto(params, D.invite.id, D.messageSlot.messageType) .catch((err) => { throw err; }) @@ -71,10 +73,13 @@ type: 'success' }); return args; + }) + .finally(() => { + emit('closeInviteDialog'); }); } else { notificationRequest - .sendInviteResponse(params, D.invite.id, D.messageType) + .sendInviteResponse(params, D.invite.id, D.messageSlot.messageType) .catch((err) => { throw err; }) @@ -87,9 +92,11 @@ type: 'success' }); return args; + }) + .finally(() => { + emit('closeInviteDialog'); }); } cancelInviteResponseConfirm(); - emit('closeInviteDialog'); } diff --git a/src/views/Notifications/dialogs/SendInviteResponseDialog.vue b/src/views/Notifications/dialogs/SendInviteResponseDialog.vue index 76cd7ff0..d97f6ba0 100644 --- a/src/views/Notifications/dialogs/SendInviteResponseDialog.vue +++ b/src/views/Notifications/dialogs/SendInviteResponseDialog.vue @@ -36,7 +36,7 @@ type="text" icon="el-icon-edit" size="mini" - @click.stop="showEditAndSendInviteResponseDialog('response', scope.row)" /> + @click.stop="showEditAndSendInviteResponseDialog(scope.row)" /> @@ -52,11 +52,13 @@ + :send-invite-response-dialog.sync="sendInviteResponseDialog" + @closeInviteDialog="closeInviteDialog" /> + :send-invite-response-confirm-dialog="sendInviteResponseConfirmDialog" + @closeInviteDialog="closeInviteDialog" /> @@ -69,7 +71,12 @@ const { t } = useI18n(); const API = inject('API'); - defineProps({ + const inviteImageUpload = inject('inviteImageUpload'); + const props = defineProps({ + sendInviteResponseDialog: { + type: Object, + default: () => ({}) + }, sendInviteResponseDialogVisible: { type: Boolean, default: false @@ -85,42 +92,33 @@ const editAndSendInviteResponseDialog = ref({ visible: false, - inviteMessage: {}, - messageType: '', newMessage: '' }); - const emit = defineEmits(['update:sendInviteResponseDialogVisible', 'inviteImageUpload']); + const emit = defineEmits(['update:sendInviteResponseDialogVisible']); const sendInviteResponseConfirmDialog = ref({ visible: false }); - const sendInviteResponseDialog = ref({ - message: '', - messageSlot: 0, - invite: {} - }); + function closeInviteDialog() { + cancelSendInviteResponse(); + } function cancelSendInviteResponse() { emit('update:sendInviteResponseDialogVisible', false); } - function showEditAndSendInviteResponseDialog(messageType, inviteMessage) { + function showEditAndSendInviteResponseDialog(row) { + props.sendInviteResponseDialog.messageSlot = row; editAndSendInviteResponseDialog.value = { - newMessage: inviteMessage.message, - visible: true, - messageType, - inviteMessage + newMessage: messageSlot.message, + visible: true }; } - function inviteImageUpload(event) { - emit('inviteImageUpload', event); - } - function showSendInviteResponseConfirmDialog(row) { + props.sendInviteResponseDialog.messageSlot = row; sendInviteResponseConfirmDialog.value.visible = true; - sendInviteResponseDialog.value.messageSlot = row.slot; }