Fix invite stuff

This commit is contained in:
Natsumi
2025-05-26 04:53:17 +10:00
parent 2f019ac038
commit 8b93bf5d57
15 changed files with 136 additions and 147 deletions
+4 -1
View File
@@ -359,7 +359,10 @@ console.log(`isLinux: ${LINUX}`);
showGallerySelectDialog: this.showGallerySelectDialog, showGallerySelectDialog: this.showGallerySelectDialog,
showGalleryDialog: this.showGalleryDialog, showGalleryDialog: this.showGalleryDialog,
getImageUrlFromImageId: this.getImageUrlFromImageId, getImageUrlFromImageId: this.getImageUrlFromImageId,
getAvatarGallery: this.getAvatarGallery getAvatarGallery: this.getAvatarGallery,
inviteImageUpload: this.inviteImageUpload,
clearInviteImageUpload: this.clearInviteImageUpload,
isLinux: this.isLinux
}; };
}, },
el: '#root', el: '#root',
@@ -42,6 +42,7 @@
const $message = instance.proxy.$message; const $message = instance.proxy.$message;
const API = inject('API'); const API = inject('API');
const clearInviteImageUpload = inject('clearInviteImageUpload');
const props = defineProps({ const props = defineProps({
editAndSendInviteDialog: { editAndSendInviteDialog: {
@@ -181,7 +182,7 @@
notificationRequest notificationRequest
.sendRequestInvitePhoto(I.params, I.userId) .sendRequestInvitePhoto(I.params, I.userId)
.catch((err) => { .catch((err) => {
this.clearInviteImageUpload(); clearInviteImageUpload();
throw err; throw err;
}) })
.then((args) => { .then((args) => {
@@ -160,7 +160,7 @@
:send-invite-dialog="sendInviteDialog" :send-invite-dialog="sendInviteDialog"
:invite-dialog="inviteDialog" :invite-dialog="inviteDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
@close-invite-dialog="closeInviteDialog" /> @closeInviteDialog="closeInviteDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
@@ -180,6 +180,7 @@
const userStatusClass = inject('userStatusClass'); const userStatusClass = inject('userStatusClass');
const userImage = inject('userImage'); const userImage = inject('userImage');
const API = inject('API'); const API = inject('API');
const clearInviteImageUpload = inject('clearInviteImageUpload');
const props = defineProps({ const props = defineProps({
inviteDialog: { inviteDialog: {
@@ -209,10 +210,14 @@
} }
}); });
const emit = defineEmits(['clearInviteImageUpload', 'inviteImageUpload', 'closeInviteDialog']); const emit = defineEmits(['closeInviteDialog']);
const sendInviteDialogVisible = ref(false); const sendInviteDialogVisible = ref(false);
const sendInviteDialog = ref({ message: '', messageSlot: 0, userId: '', messageType: '', params: {} }); const sendInviteDialog = ref({
messageSlot: {},
userId: '',
params: {}
});
function closeInviteDialog() { function closeInviteDialog() {
emit('closeInviteDialog'); emit('closeInviteDialog');
@@ -222,17 +227,13 @@
sendInviteDialog.value = { sendInviteDialog.value = {
params, params,
userId, userId,
messageType: 'invite' messageSlot: {}
}; };
inviteMessagesRequest.refreshInviteMessageTableData('message'); inviteMessagesRequest.refreshInviteMessageTableData('message');
clearInviteImageUpload(); clearInviteImageUpload();
sendInviteDialogVisible.value = true; sendInviteDialogVisible.value = true;
} }
function clearInviteImageUpload() {
emit('clearInviteImageUpload');
}
function addSelfToInvite() { function addSelfToInvite() {
const D = props.inviteDialog; const D = props.inviteDialog;
if (!D.userIds.includes(API.currentUser.id)) { if (!D.userIds.includes(API.currentUser.id)) {
@@ -33,6 +33,7 @@
const $message = instance.proxy.$message; const $message = instance.proxy.$message;
const API = inject('API'); const API = inject('API');
const clearInviteImageUpload = inject('clearInviteImageUpload');
const props = defineProps({ const props = defineProps({
visible: { visible: {
@@ -62,6 +63,8 @@
function sendInviteConfirm() { function sendInviteConfirm() {
const D = props.sendInviteDialog; const D = props.sendInviteDialog;
const J = props.inviteDialog; const J = props.inviteDialog;
const messageType = D.messageSlot.messageType;
const slot = D.messageSlot.slot;
if (J?.visible) { if (J?.visible) {
const inviteLoop = () => { const inviteLoop = () => {
if (J.userIds.length > 0) { if (J.userIds.length > 0) {
@@ -82,7 +85,7 @@
instanceId: J.worldId, instanceId: J.worldId,
worldId: J.worldId, worldId: J.worldId,
worldName: J.worldName, worldName: J.worldName,
messageSlot: D.messageSlot messageSlot: slot
}, },
receiverUserId receiverUserId
) )
@@ -94,7 +97,7 @@
instanceId: J.worldId, instanceId: J.worldId,
worldId: J.worldId, worldId: J.worldId,
worldName: J.worldName, worldName: J.worldName,
messageSlot: D.messageSlot messageSlot: slot
}, },
receiverUserId receiverUserId
) )
@@ -110,8 +113,8 @@
} }
}; };
inviteLoop(); inviteLoop();
} else if (D.messageType === 'invite') { } else if (messageType === 'invite') {
D.params.messageSlot = D.messageSlot; D.params.messageSlot = slot;
if (props.uploadImage) { if (props.uploadImage) {
notificationRequest notificationRequest
.sendInvitePhoto(D.params, D.userId) .sendInvitePhoto(D.params, D.userId)
@@ -139,13 +142,13 @@
return args; return args;
}); });
} }
} else if (D.messageType === 'requestInvite') { } else if (messageType === 'request') {
D.params.requestSlot = D.messageSlot; D.params.requestSlot = slot;
if (props.uploadImage) { if (props.uploadImage) {
notificationRequest notificationRequest
.sendRequestInvitePhoto(D.params, D.userId) .sendRequestInvitePhoto(D.params, D.userId)
.catch((err) => { .catch((err) => {
this.clearInviteImageUpload(); clearInviteImageUpload();
throw err; throw err;
}) })
.then((args) => { .then((args) => {
@@ -1,7 +1,7 @@
<template> <template>
<safe-dialog <safe-dialog
class="x-dialog" class="x-dialog"
:visible.sync="sendInviteDialogVisible" :visible="sendInviteDialogVisible"
:title="t('dialog.invite_message.header')" :title="t('dialog.invite_message.header')"
width="800px" width="800px"
append-to-body append-to-body
@@ -61,7 +61,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" size="mini"
@click.stop="showEditAndSendInviteDialog('message', scope.row)"></el-button> @click.stop="showEditAndSendInviteDialog(scope.row)"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</data-tables> </data-tables>
@@ -98,6 +98,7 @@
const { t } = useI18n(); const { t } = useI18n();
const API = inject('API'); const API = inject('API');
const inviteImageUpload = inject('inviteImageUpload');
const props = defineProps({ const props = defineProps({
sendInviteDialogVisible: { sendInviteDialogVisible: {
@@ -123,34 +124,25 @@
} }
}); });
const emit = defineEmits(['inviteImageUpload', 'update:sendInviteDialogVisible', 'closeInviteDialog']); const emit = defineEmits(['closeInviteDialog', 'update:sendInviteDialogVisible']);
const isSendInviteConfirmDialogVisible = ref(false); const isSendInviteConfirmDialogVisible = ref(false);
const editAndSendInviteDialog = ref({ const editAndSendInviteDialog = ref({
visible: false, visible: false,
messageType: '', newMessage: ''
newMessage: '',
inviteMessage: {}
}); });
function inviteImageUpload(event) { function showSendInviteConfirmDialog(row) {
emit('inviteImageUpload', event); props.sendInviteDialog.messageSlot = row;
}
function showSendInviteConfirmDialog(val) {
isSendInviteConfirmDialogVisible.value = true; isSendInviteConfirmDialogVisible.value = true;
//
props.sendInviteDialog.messageSlot = val.slot;
} }
function showEditAndSendInviteDialog(messageType, inviteMessage) { function showEditAndSendInviteDialog(row) {
// todo props.sendInviteDialog.messageSlot = row;
editAndSendInviteDialog.value = { editAndSendInviteDialog.value = {
newMessage: inviteMessage.message, newMessage: inviteMessage.message,
visible: true, visible: true
messageType,
inviteMessage
}; };
} }
+1 -1
View File
@@ -84,7 +84,7 @@
:active-friends="activeFriends" :active-friends="activeFriends"
:invite-message-table="inviteMessageTable" :invite-message-table="inviteMessageTable"
:upload-image="uploadImage" :upload-image="uploadImage"
@close-invite-dialog="closeInviteDialog" /> @closeInviteDialog="closeInviteDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
+1 -1
View File
@@ -490,7 +490,7 @@
:active-friends="activeFriends" :active-friends="activeFriends"
:invite-message-table="inviteMessageTable" :invite-message-table="inviteMessageTable"
:upload-image="uploadImage" :upload-image="uploadImage"
@close-invite-dialog="closeInviteDialog" /> @closeInviteDialog="closeInviteDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
@@ -36,7 +36,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" size="mini"
@click.stop="showEditAndSendInviteDialog('request', scope.row)"></el-button> @click.stop="showEditAndSendInviteDialog(scope.row)"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</data-tables> </data-tables>
@@ -73,6 +73,7 @@
const { t } = useI18n(); const { t } = useI18n();
const API = inject('API'); const API = inject('API');
const inviteImageUpload = inject('inviteImageUpload');
const props = defineProps({ const props = defineProps({
sendInviteRequestDialogVisible: { sendInviteRequestDialogVisible: {
@@ -98,33 +99,25 @@
} }
}); });
const emit = defineEmits(['inviteImageUpload', 'update:sendInviteRequestDialogVisible', 'closeInviteDialog']); const emit = defineEmits(['update:sendInviteRequestDialogVisible', 'closeInviteDialog']);
const isSendInviteConfirmDialogVisible = ref(false); const isSendInviteConfirmDialogVisible = ref(false);
const editAndSendInviteDialog = ref({ const editAndSendInviteDialog = ref({
visible: false, visible: false,
messageType: '', newMessage: ''
newMessage: '',
inviteMessage: {}
}); });
function inviteImageUpload(event) { function showSendInviteConfirmDialog(row) {
emit('inviteImageUpload', event); props.sendInviteDialog.messageSlot = row;
}
function showSendInviteConfirmDialog(val) {
isSendInviteConfirmDialogVisible.value = true; isSendInviteConfirmDialogVisible.value = true;
//
props.sendInviteDialog.messageSlot = val.slot;
} }
function showEditAndSendInviteDialog(messageType, inviteMessage) { function showEditAndSendInviteDialog(row) {
props.sendInviteDialog.messageSlot = row;
editAndSendInviteDialog.value = { editAndSendInviteDialog.value = {
newMessage: inviteMessage.message, newMessage: row.message,
visible: true, visible: true
messageType,
inviteMessage
}; };
} }
@@ -553,7 +553,7 @@
<template v-if="isRealInstance(userDialog.$location.tag)"> <template v-if="isRealInstance(userDialog.$location.tag)">
<launch <launch
:location="userDialog.$location.tag" :location="userDialog.$location.tag"
@show-launch-dialog="showLaunchDialog"></launch> @show-launch-dialog="showLaunchDialog" />
<el-tooltip <el-tooltip
placement="top" placement="top"
:content="t('dialog.user.info.self_invite_tooltip')" :content="t('dialog.user.info.self_invite_tooltip')"
@@ -1755,13 +1755,14 @@
:send-invite-dialog-visible.sync="sendInviteDialogVisible" :send-invite-dialog-visible.sync="sendInviteDialogVisible"
:invite-message-table="inviteMessageTable" :invite-message-table="inviteMessageTable"
:send-invite-dialog="sendInviteDialog" :send-invite-dialog="sendInviteDialog"
:upload-image="uploadImage" /> :upload-image="uploadImage"
@closeInviteDialog="closeInviteDialog" />
<SendInviteRequestDialog <SendInviteRequestDialog
:send-invite-request-dialog-visible.sync="sendInviteRequestDialogVisible" :send-invite-request-dialog-visible.sync="sendInviteRequestDialogVisible"
:invite-request-message-table="inviteRequestMessageTable" :invite-request-message-table="inviteRequestMessageTable"
:send-invite-dialog="sendInviteDialog" :send-invite-dialog="sendInviteDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
@inviteImageUpload="inviteImageUpload" /> @closeInviteDialog="closeInviteDialog" />
<PreviousInstancesUserDialog <PreviousInstancesUserDialog
:previous-instances-user-dialog.sync="previousInstancesUserDialog" :previous-instances-user-dialog.sync="previousInstancesUserDialog"
:shift-held="shiftHeld" /> :shift-held="shiftHeld" />
@@ -1848,6 +1849,7 @@
const API = inject('API'); const API = inject('API');
const showFullscreenImageDialog = inject('showFullscreenImageDialog'); const showFullscreenImageDialog = inject('showFullscreenImageDialog');
const clearInviteImageUpload = inject('clearInviteImageUpload');
const userImage = inject('userImage'); const userImage = inject('userImage');
const showLaunchDialog = inject('showLaunchDialog'); const showLaunchDialog = inject('showLaunchDialog');
@@ -2032,7 +2034,6 @@
'saveUserMemo', 'saveUserMemo',
'setGroupVisibility', 'setGroupVisibility',
'leaveGroupPrompt', 'leaveGroupPrompt',
'clearInviteImageUpload',
'refreshGalleryTable', 'refreshGalleryTable',
'refreshVRCPlusIconsTable', 'refreshVRCPlusIconsTable',
'refreshStickerTable', 'refreshStickerTable',
@@ -2075,7 +2076,11 @@
const favoriteWorldsRef = ref(null); const favoriteWorldsRef = ref(null);
const sendInviteDialogVisible = ref(false); const sendInviteDialogVisible = ref(false);
const sendInviteDialog = ref({ message: '', messageSlot: 0, userId: '', messageType: '', params: {} }); const sendInviteDialog = ref({
messageSlot: {},
userId: '',
params: {}
});
const sendInviteRequestDialogVisible = ref(false); const sendInviteRequestDialogVisible = ref(false);
const previousInstancesUserDialog = ref({ const previousInstancesUserDialog = ref({
@@ -2308,7 +2313,7 @@
sendInviteDialog.value = { sendInviteDialog.value = {
params, params,
userId, userId,
messageType: 'invite' messageSlot: {}
}; };
inviteMessagesRequest.refreshInviteMessageTableData('message'); inviteMessagesRequest.refreshInviteMessageTableData('message');
clearInviteImageUpload(); clearInviteImageUpload();
@@ -2319,7 +2324,7 @@
sendInviteDialog.value = { sendInviteDialog.value = {
params, params,
userId, userId,
messageType: 'requestInvite' messageSlot: {}
}; };
inviteMessagesRequest.refreshInviteMessageTableData('request'); inviteMessagesRequest.refreshInviteMessageTableData('request');
clearInviteImageUpload(); clearInviteImageUpload();
@@ -3244,11 +3249,8 @@
function saveUserMemo(userId, memo) { function saveUserMemo(userId, memo) {
emit('saveUserMemo', userId, memo); emit('saveUserMemo', userId, memo);
} }
function clearInviteImageUpload() { function closeInviteDialog() {
emit('clearInviteImageUpload'); clearInviteImageUpload();
}
function inviteImageUpload(event) {
emit('inviteImageUpload', event);
} }
function refreshGalleryTable() { function refreshGalleryTable() {
emit('refreshGalleryTable'); emit('refreshGalleryTable');
-1
View File
@@ -110,7 +110,6 @@ mixin dialogs
@saveUserMemo='saveUserMemo' @saveUserMemo='saveUserMemo'
@setGroupVisibility='setGroupVisibility' @setGroupVisibility='setGroupVisibility'
@leaveGroupPrompt='leaveGroupPrompt' @leaveGroupPrompt='leaveGroupPrompt'
@clearInviteImageUpload='clearInviteImageUpload'
@closeGalleryDialog='galleryDialogVisible = false') @closeGalleryDialog='galleryDialogVisible = false')
WorldDialog( WorldDialog(
+10 -22
View File
@@ -399,15 +399,15 @@
</el-table-column> </el-table-column>
</data-tables> </data-tables>
<SendInviteResponseDialog <SendInviteResponseDialog
:send-invite-response-dialog="sendInviteResponseDialog"
:send-invite-response-dialog-visible.sync="sendInviteResponseDialogVisible" :send-invite-response-dialog-visible.sync="sendInviteResponseDialogVisible"
:invite-response-message-table="inviteResponseMessageTable" :invite-response-message-table="inviteResponseMessageTable"
:upload-image="uploadImage" :upload-image="uploadImage" />
@invite-image-upload="inviteImageUpload" />
<SendInviteRequestResponseDialog <SendInviteRequestResponseDialog
:send-invite-response-dialog="sendInviteResponseDialog"
:send-invite-request-response-dialog-visible.sync="sendInviteRequestResponseDialogVisible" :send-invite-request-response-dialog-visible.sync="sendInviteRequestResponseDialogVisible"
:invite-request-response-message-table="inviteRequestResponseMessageTable" :invite-request-response-message-table="inviteRequestResponseMessageTable"
:upload-image="uploadImage" :upload-image="uploadImage" />
@invite-image-upload="inviteImageUpload" />
</div> </div>
</template> </template>
@@ -439,6 +439,7 @@
const showGroupDialog = inject('showGroupDialog'); const showGroupDialog = inject('showGroupDialog');
const showUserDialog = inject('showUserDialog'); const showUserDialog = inject('showUserDialog');
const showFullscreenImageDialog = inject('showFullscreenImageDialog'); const showFullscreenImageDialog = inject('showFullscreenImageDialog');
const clearInviteImageUpload = inject('clearInviteImageUpload');
const props = defineProps({ const props = defineProps({
menuActiveIndex: { menuActiveIndex: {
@@ -478,11 +479,8 @@
} }
}); });
const emit = defineEmits(['inviteImageUpload', 'clearInviteImageUpload']);
const sendInviteResponseDialog = ref({ const sendInviteResponseDialog = ref({
message: '', messageSlot: {},
messageSlot: 0,
invite: {} invite: {}
}); });
@@ -490,10 +488,6 @@
const sendInviteRequestResponseDialogVisible = ref(false); const sendInviteRequestResponseDialogVisible = ref(false);
function inviteImageUpload(event) {
emit('inviteImageUpload', event);
}
function saveTableFilters() { function saveTableFilters() {
configRepository.setString( configRepository.setString(
'VRCX_notificationTableFilters', 'VRCX_notificationTableFilters',
@@ -540,18 +534,13 @@
} }
function showSendInviteResponseDialog(invite) { function showSendInviteResponseDialog(invite) {
sendInviteResponseDialog.value = { sendInviteResponseDialog.value.invite = invite;
invite sendInviteResponseDialog.value.messageSlot = {};
};
inviteMessagesRequest.refreshInviteMessageTableData('response'); inviteMessagesRequest.refreshInviteMessageTableData('response');
clearInviteImageUpload(); clearInviteImageUpload();
sendInviteResponseDialogVisible.value = true; sendInviteResponseDialogVisible.value = true;
} }
function clearInviteImageUpload() {
emit('clearInviteImageUpload');
}
function acceptRequestInvite(row) { function acceptRequestInvite(row) {
$confirm('Continue? Send Invite', 'Confirm', { $confirm('Continue? Send Invite', 'Confirm', {
confirmButtonText: 'Confirm', confirmButtonText: 'Confirm',
@@ -594,9 +583,8 @@
} }
function showSendInviteRequestResponseDialog(invite) { function showSendInviteRequestResponseDialog(invite) {
sendInviteResponseDialog.value = { sendInviteResponseDialog.value.invite = invite;
invite sendInviteResponseDialog.value.messageSlot = {};
};
inviteMessagesRequest.refreshInviteMessageTableData('requestResponse'); inviteMessagesRequest.refreshInviteMessageTableData('requestResponse');
clearInviteImageUpload(); clearInviteImageUpload();
sendInviteRequestResponseDialogVisible.value = true; sendInviteRequestResponseDialogVisible.value = true;
@@ -61,11 +61,12 @@
} }
async function saveEditAndSendInviteResponse() { async function saveEditAndSendInviteResponse() {
const I = props.sendInviteResponseDialog;
const D = props.editAndSendInviteResponseDialog; const D = props.editAndSendInviteResponseDialog;
D.visible = false; D.visible = false;
const messageType = D.messageType; const messageType = I.messageSlot.messageType;
const slot = D.inviteMessage.slot; const slot = I.messageSlot.slot;
if (D.inviteMessage.message !== D.newMessage) { if (I.messageSlot.message !== D.newMessage) {
const params = { const params = {
message: D.newMessage message: D.newMessage
}; };
@@ -88,7 +89,6 @@
return args; return args;
}); });
} }
const I = props.sendInviteResponseDialog;
const params = { const params = {
responseSlot: slot, responseSlot: slot,
rsvp: true rsvp: true
@@ -107,9 +107,10 @@
message: 'Invite response message sent', message: 'Invite response message sent',
type: 'success' type: 'success'
}); });
emit('closeInviteDialog');
return args; return args;
})
.finally(() => {
emit('closeInviteDialog');
}); });
} else { } else {
notificationRequest notificationRequest
@@ -125,8 +126,10 @@
message: 'Invite response message sent', message: 'Invite response message sent',
type: 'success' type: 'success'
}); });
emit('closeInviteDialog');
return args; return args;
})
.finally(() => {
emit('closeInviteDialog');
}); });
} }
} }
@@ -33,7 +33,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" size="mini"
@click.stop="showEditAndSendInviteResponseDialog('requestResponse', scope.row)"> @click.stop="showEditAndSendInviteResponseDialog(scope.row)">
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@@ -50,11 +50,13 @@
<EditAndSendInviteResponseDialog <EditAndSendInviteResponseDialog
:edit-and-send-invite-response-dialog.sync="editAndSendInviteResponseDialog" :edit-and-send-invite-response-dialog.sync="editAndSendInviteResponseDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
:send-invite-response-dialog="sendInviteResponseDialog" /> :send-invite-response-dialog.sync="sendInviteResponseDialog"
@closeInviteDialog="closeInviteDialog" />
<SendInviteResponseConfirmDialog <SendInviteResponseConfirmDialog
:send-invite-response-confirm-dialog="sendInviteResponseConfirmDialog" :send-invite-response-dialog.sync="sendInviteResponseDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
:send-invite-response-dialog.sync="sendInviteResponseDialog" /> :send-invite-response-confirm-dialog="sendInviteResponseConfirmDialog"
@closeInviteDialog="closeInviteDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
@@ -67,6 +69,7 @@
const { t } = useI18n(); const { t } = useI18n();
const API = inject('API'); const API = inject('API');
const inviteImageUpload = inject('inviteImageUpload');
defineProps({ defineProps({
sendInviteRequestResponseDialogVisible: { sendInviteRequestResponseDialogVisible: {
@@ -82,12 +85,10 @@
} }
}); });
const emit = defineEmits(['update:sendInviteRequestResponseDialogVisible', 'inviteImageUpload']); const emit = defineEmits(['update:sendInviteRequestResponseDialogVisible']);
const editAndSendInviteResponseDialog = ref({ const editAndSendInviteResponseDialog = ref({
visible: false, visible: false,
inviteMessage: {},
messageType: '',
newMessage: '' newMessage: ''
}); });
@@ -96,27 +97,25 @@
}); });
const sendInviteResponseDialog = ref({ const sendInviteResponseDialog = ref({
message: '', messageSlot: {},
messageSlot: 0,
invite: {} invite: {}
}); });
function inviteImageUpload(event) { function showEditAndSendInviteResponseDialog(row) {
emit('inviteImageUpload', event); props.sendInviteResponseDialog.messageSlot = row;
editAndSendInviteResponseDialog.value = {
newMessage: messageSlot.message,
visible: true
};
} }
function showSendInviteResponseConfirmDialog(row) { function showSendInviteResponseConfirmDialog(row) {
props.sendInviteResponseDialog.messageSlot = row;
sendInviteResponseConfirmDialog.value.visible = true; sendInviteResponseConfirmDialog.value.visible = true;
sendInviteResponseDialog.value.messageSlot = row.slot;
} }
function showEditAndSendInviteResponseDialog(messageType, inviteMessage) { function closeInviteDialog() {
editAndSendInviteResponseDialog.value = { cancelSendInviteRequestResponse();
newMessage: inviteMessage.message,
visible: true,
messageType,
inviteMessage
};
} }
function cancelSendInviteRequestResponse() { function cancelSendInviteRequestResponse() {
@@ -31,16 +31,16 @@
const $message = instance.proxy.$message; const $message = instance.proxy.$message;
const props = defineProps({ const props = defineProps({
sendInviteResponseConfirmDialog: { sendInviteResponseDialog: {
type: Object, type: Object,
required: true default: () => ({})
}, },
uploadImage: { uploadImage: {
type: String type: String
}, },
sendInviteResponseDialog: { sendInviteResponseConfirmDialog: {
type: Object, type: Object,
default: () => ({}) required: true
} }
}); });
@@ -48,17 +48,19 @@
function cancelInviteResponseConfirm() { function cancelInviteResponseConfirm() {
emit('update:sendInviteResponseConfirmDialog', { visible: false }); emit('update:sendInviteResponseConfirmDialog', { visible: false });
// TODO: temp fix to close dialog
props.sendInviteResponseConfirmDialog.visible = false;
} }
function sendInviteResponseConfirm() { function sendInviteResponseConfirm() {
const D = props.sendInviteResponseDialog; const D = props.sendInviteResponseDialog;
const params = { const params = {
responseSlot: D.messageSlot, responseSlot: D.messageSlot.slot,
rsvp: true rsvp: true
}; };
if (props.uploadImage) { if (props.uploadImage) {
notificationRequest notificationRequest
.sendInviteResponsePhoto(params, D.invite.id, D.messageType) .sendInviteResponsePhoto(params, D.invite.id, D.messageSlot.messageType)
.catch((err) => { .catch((err) => {
throw err; throw err;
}) })
@@ -71,10 +73,13 @@
type: 'success' type: 'success'
}); });
return args; return args;
})
.finally(() => {
emit('closeInviteDialog');
}); });
} else { } else {
notificationRequest notificationRequest
.sendInviteResponse(params, D.invite.id, D.messageType) .sendInviteResponse(params, D.invite.id, D.messageSlot.messageType)
.catch((err) => { .catch((err) => {
throw err; throw err;
}) })
@@ -87,9 +92,11 @@
type: 'success' type: 'success'
}); });
return args; return args;
})
.finally(() => {
emit('closeInviteDialog');
}); });
} }
cancelInviteResponseConfirm(); cancelInviteResponseConfirm();
emit('closeInviteDialog');
} }
</script> </script>
@@ -36,7 +36,7 @@
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" size="mini"
@click.stop="showEditAndSendInviteResponseDialog('response', scope.row)" /> @click.stop="showEditAndSendInviteResponseDialog(scope.row)" />
</template> </template>
</el-table-column> </el-table-column>
</data-tables> </data-tables>
@@ -52,11 +52,13 @@
<EditAndSendInviteResponseDialog <EditAndSendInviteResponseDialog
:edit-and-send-invite-response-dialog.sync="editAndSendInviteResponseDialog" :edit-and-send-invite-response-dialog.sync="editAndSendInviteResponseDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
:send-invite-response-confirm-dialog="sendInviteResponseDialog" /> :send-invite-response-dialog.sync="sendInviteResponseDialog"
@closeInviteDialog="closeInviteDialog" />
<SendInviteResponseConfirmDialog <SendInviteResponseConfirmDialog
:send-invite-response-dialog.sync="sendInviteResponseConfirmDialog" :send-invite-response-dialog.sync="sendInviteResponseDialog"
:upload-image="uploadImage" :upload-image="uploadImage"
:send-invite-response-confirm-dialog="sendInviteResponseDialog" /> :send-invite-response-confirm-dialog="sendInviteResponseConfirmDialog"
@closeInviteDialog="closeInviteDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
@@ -69,7 +71,12 @@
const { t } = useI18n(); const { t } = useI18n();
const API = inject('API'); const API = inject('API');
defineProps({ const inviteImageUpload = inject('inviteImageUpload');
const props = defineProps({
sendInviteResponseDialog: {
type: Object,
default: () => ({})
},
sendInviteResponseDialogVisible: { sendInviteResponseDialogVisible: {
type: Boolean, type: Boolean,
default: false default: false
@@ -85,42 +92,33 @@
const editAndSendInviteResponseDialog = ref({ const editAndSendInviteResponseDialog = ref({
visible: false, visible: false,
inviteMessage: {},
messageType: '',
newMessage: '' newMessage: ''
}); });
const emit = defineEmits(['update:sendInviteResponseDialogVisible', 'inviteImageUpload']); const emit = defineEmits(['update:sendInviteResponseDialogVisible']);
const sendInviteResponseConfirmDialog = ref({ const sendInviteResponseConfirmDialog = ref({
visible: false visible: false
}); });
const sendInviteResponseDialog = ref({ function closeInviteDialog() {
message: '', cancelSendInviteResponse();
messageSlot: 0, }
invite: {}
});
function cancelSendInviteResponse() { function cancelSendInviteResponse() {
emit('update:sendInviteResponseDialogVisible', false); emit('update:sendInviteResponseDialogVisible', false);
} }
function showEditAndSendInviteResponseDialog(messageType, inviteMessage) { function showEditAndSendInviteResponseDialog(row) {
props.sendInviteResponseDialog.messageSlot = row;
editAndSendInviteResponseDialog.value = { editAndSendInviteResponseDialog.value = {
newMessage: inviteMessage.message, newMessage: messageSlot.message,
visible: true, visible: true
messageType,
inviteMessage
}; };
} }
function inviteImageUpload(event) {
emit('inviteImageUpload', event);
}
function showSendInviteResponseConfirmDialog(row) { function showSendInviteResponseConfirmDialog(row) {
props.sendInviteResponseDialog.messageSlot = row;
sendInviteResponseConfirmDialog.value.visible = true; sendInviteResponseConfirmDialog.value.visible = true;
sendInviteResponseDialog.value.messageSlot = row.slot;
} }
</script> </script>